函数定义
1 #python中函数定义。def函数定义的关键字,fun1函数名,x为函数的形参可以有多个,多个之间用“,”隔开;return 函数返回值的关键字,python中return可以是非必要 2 def fun1(x): 3 x += 1 4 return x
函数返回值
1 # 函数返回值可以有多个,之间使用“’”分隔,返回值讲多个值组成的元组进行返回。 当无return时python会隐式return “None”,如果只返回一个值就返回这个值本身 2 def fun2(x, y): 3 return x, y 4 print(fun2(3,4), type(fun2(3,4))) #(3, 4) <class 'tuple'> 5 print(fun1(5), type(fun1(5))) #6 <class 'int'> 6 def fun3(x,y): 7 z = x + y 8 print(fun3(1,2),type(fun3(1,2))) #None <class 'NoneType'>
函数的参数以及调用
1 #函数调用形式:函数名(实参)fun3为函数名,1和2为函数实参,实参分别传递给fun3函数定义的形参x和y,两者一一对应。 2 fun3(1,2) 3 4 #函数非固定参数
5 #默认参数:函数定义时直接给形参赋值,此值即作为默认的实参值如果函数调用时实参没有给此传递实参,默认参数的形参需要写在所有参数的最后面 6 def fun4(x, y=2): 7 print(x, y) 8 fun4(3, 4) #3 4 9 fun4(3) #3 2 10 11 #可变参数 12 #*args:可以接收多个实参,args是这多个实参组成的元组,*args需要写在非默认形参之后,默认形参之前 13 def fun5(*args): 14 print("args is :", args) 15 print("*args is :", *args) 16 fun5(1, 2, 3) #args is : (1, 2, 3);*args is : 1 2 3; 17 #相反的,当存在一个元组或者列表,我们想直接取其中的数值而不是列表本身也可以使用*符号,如下示例中fun6需要传入两个参数,而实际传递的为一个列表,可以对此列表取*操作 18 def fun6(x, y): 19 print(x + y) 20 for i in [[1, 2], [3, 4], [5, 6]]: # 3 7 11 21 fun6(*i) 22 23 24 #**kwargs将多个关键字参数转换为字典,kwargs是这多个实参组成的字典,**kwargs需要写在*args之后,默认形参之前 25 def fun7(**kwargs): 26 print("kwargs is :", kwargs) #**kwargs是多个键值对不是数据结构无法打印 27 fun7(name="xx1",age=29) #kwargs is : {'name': 'xx1', 'age': 29} 28 #相反的,当存在一个字典,我们想直接取其中k:v不是字典本身也可以使用**符号,如下示例中fun6需要传入两个参数,而实际传递的为一个列字典,可以对此字典取**操作 29 for i in [{"x":1, "y":2}, {"x":3, "y":4}, {"x":5, "y":6}]: 30 fun6(**i) # 3 7 11