自定义函数

#  函数定义:

def func(var1,var2,…,varn)

{

   #函数体

}   

#  1、关键字:def

#  2、函数名func

#  3、参数组,数字、字符串、列表、字典,都可以作为函数参数

#  4、数字、字符串作为变量,即可立即数,也可以是其变量

#  5、列表、字典作为函数参数使用时,只能是其变量,必须事先赋值给变量

#  6、形参和实参必须严格对应,顺序不能变

#  7、不支持所谓的“关键字”参数、或“默认”参数。


#例程1:有返回函数

#  函数定义的关键字是def,后面是函数名,括号内是参数

def  add(x,y)  #定义了一个名为add的函数,有两个形参x,y

{

   c = x+y   #函数功能(输入参数相加)

   return c  #返回结果

}

a = add(4,6)  #形参x,y被实参4,6替换,调用函数add,把结果赋值给a

print("%\n",a)  #打印a


#例程2:无返回函数

#  函数定义的关键字是def,后面是函数名,括号内是参数

def  add(x,y)  #定义了一个名为add的函数,有两个形参x,y

{

   c = x+y   #函数功能(输入参数相加)

   print("%\n",c)  #打印c,函数不返回数值

}

a = add(4,6)  #调用函数add,在函数内打印出结果,不返回值

#  函数定义时的形参,必须与函数调用时的实参一一对应,顺序不能错


#例程3:无输入参数函数

def  my_print()  #定义了一个名为my_print的函数,没有参数

{

   print("%\n","My print")  #函数功能

}

my_print()  #调用函数my_print


#例程4:列表作为参数使用

#  功能:将输入参数1(列表)的每一项,加上参数2的值(数字),

#  成生一个新的列表,并输出该列表

def  add(x,y)  #定义了一个名为add的函数,有两个形参x,y

{

   list_out = []  #定义一个空列表,

   a = len(x)     #计算输入列表的项数

   for i in range(0,a,1)

   {

      list_out = list_out.append(x[i]+y)  #list列表的每一项都+y,生产新列表

   }

   return list_out  #输出返回一个新列表

}

list = [1,2,3,4,5]  #列表必须事先赋值给变量

a = add(list,4)   #list只能是变量,不能直接使用([...])

print("%\n",a)    #调用add返回一个新的列表,打印新的列表

#  def定义的函数形参可以是数字、字符串,也可以是列表、字典;

#  函数的定义者须准确了解参数的类型,并在函数中正确使用。


#例程4:列表作为参数使用

#  功能:将输入参数1(列表)的每一项,加上参数2的值(数字),

#  成生一个新的列表,并输出该列表

def  add(list,y)  #定义了一个名为add的函数,有两个形参x,y

{

   list_out = []  #定义一个空列表,

   a = len(list)     #计算输入列表的项数

   for i in range(0,a,1)

   {

      list_out = list_out.append(list[i]+y)  #list列表的每一项都+y,生产新列表

   }

   return list_out  #输出新列表

}

list = [1,2,3,4,5]

a = add(list,4)   #将列表付给第一个参数,第二个参数是一个数值

print("%\n",a)    #调用add返回一个新的列表,打印新的列表

#  def定义的函数形参可以是数字、字符串,也可以是列表、字典;

#  函数的定义者须准确了解参数的类型,并在函数中正确使用。

#  为避免忘记类型,需养成习惯,即:

#  列表参数的形参用list,字典参数的形参用dict


#例程5:字典作为参数使用

#  功能:在函数内部打印字典的每一项

def  print_dict(dict)  #函数只有一个参数(字典变量,不能直接使用{...})

{

   a = len(dict)     #计算输入列表的项数

   for i in range(0,a,1)

   {

      b = dict.get_key(i)

      c = dict.get(b)

      print("%   %\n",b,c)

   }

}

d = {"a":1,"world":"世界","c":3,"hellow":"你好"}

print_dict(d)

#  形成习惯:列表参数的形参用list,字典参数的形参用dict;

#  列表、或字典作为函数参数并无特殊要求;

#  函数调用者需要准确知道参数类型


#例程6:变量作用域(局部变量只在函数内有效)

def  func()  #函数定义

{

   x = "Hellow!"   #函数内使用了一个局部变量 x

   print("%\n",x)  #打印局部变量 x

}

func()  #执行func()函数,会打印出:"Hellow!"

print("%\n",x)  #本打印语句会出问题,x 是局部变量,只在函数内有效

#  在func()函数外面无效,因此,不会打印出"Hellow!"。


#例程7:变量作用域(内、外都定义了时,内部用局部变量,外部用全局变量)

x = "你好!"   #函数外部定义的变量(全局变量)

def  func()  

{

   x = "Hellow!"   #函数内使用了一个局部变量 x

   print("%\n",x)  #打印局部变量 x

}

func()  #执行func()函数时,内部x有定义,因此打印出:"Hellow!"

print("%\n",x)  #函数内部定义的变量,在外部无效,因此打印出:"你好!"

#   函数内部定义的变量,在外部无效,因此,在外部只能使用外部定义的值,

#   即:"你好!"


#例程8:变量作用域(内部没定义时,使用外部的值)

x = "你好!"   #函数外部定义的变量(全局变量)

def  func()  

{

   print("%\n",x)  #函数内部没有定义 x 值,会自动使用外部定义的值

}

func()  #执行func()函数时,因内部没有定义x,因此打印出:"你好!"

print("%\n",x)  #同样打印出:"你好!"

#  如果函数外部定义了某个变量,而内部没有定义,函数会自动使用

#  外部的定义。


#例程9:函数返回关键字:return

#  函数可以返回一个数字、字符串、列表、字典

#  当希望函数返回多个数据时,可以将多个数据构造成一个列表,将列表返回

def  multi_value()  

{

    r1 = "第一个返回值"

    r2 = "第二个返回值"

    r3 = "第三个返回值"


    list = []         #将空列表赋值给list

    list = list.append(r1)   #添加列表项      

    list = list.append(r2)   #添加列表项

    list = list.append(r3)   #添加列表项

    return list       #返回包含多个值的列表

}

a = multi_value()

print("%\n",a)

var1 = a[0]     #把返回值从列表中提取出来

var2 = a[1]     #把返回值从列表中提取出来

var3 = a[2]     #把返回值从列表中提取出来

print("%   %   %\n",var1,var2,var3)   #打印多项返回值



0