python中函数定义是使用def进行定义,函数可以理解为 多个语句代码组成,用来实现单一或者相关功能的代码段,在程序中可以重复调用而无需编写重复代码。
1 def add(a,b): #定义一个函数 2 c = a+b 3 return c #返回值,如果没有return语句,则返回值为None
1、函数返回值
函数返回值使用return关键字,可以返回多个值,若没有return语句,则返回值为None
2、函数参数:形参、实参
形参为函数定义时使用的参数名,实参为具体调用时的参数名
1 def add(a,b): #a,b为形参 2 c = a+b 3 print(c) 4 return c 5 6 7 a1=3 8 b1=4 9 add(a1,b1) #a1,b1为实参
传递不可变的数据对象,若函数内进行重新赋值实参数据对象值不会被改变
1 def fun(a): 2 a=12 3 return a 4 5 b=1 6 print(fun(b)) #输出结果为12,参数b执行2,在传递给函数fun(b)时,按传值方式a复制b,因此a,b都指向2对象,在函数内a=12重新生成一个12对象,让a执行它 7 print(b) #输出结果为2
传递可变的数据对象,若函数内进行重新赋值实参数据对象值被改变
1 def fun(args): 2 args.insert(1,‘5‘) #在第二个位置插入‘5‘ 3 print(args) 4 5 list1 = [1,2,3,4,5,6] 6 fun(list1) 7 print(list1) #值被改变
3、默认参数、动态参数
若函数参数有默认值,则在调用时可以不传默认参数的值,此时使用默认值。当不清楚函数需要传输几个参数可以使用动态参数,一般分两种 :*args为元祖形式,**kwargs为字典形式
1 1 def add(a,b=3): 2 2 print(a+b) 3 3 4 4 add(2) #结果为5,此时b使用默认参数3 5 5 add(2,5) #结果为7,此时b使用传输参数值5
当函数同时存在必须参数、默认参数、*args、**kwargs参数时参数顺序如下:Python3参数顺序:必选参数,默认参数,*args,**kwargs
1 def add(x,z=11,*args,**kwargs): 2 print(x) 3 print(z) 4 print(args) 5 print(kwargs) 6 7 8 9 add(1,2,3,4,y=5,a=6,b=7) #结果为7,此时b使用传输参数值5
执行结果:
1 1 2 2 3 (3, 4) 4 {‘y‘: 5, ‘a‘: 6, ‘b‘: 7}
4、局部变量和全局变量
局部变量参数只能在函数内起作用,全局变量可以在整个模块中可以调用
1 user = ‘admin‘ #全局变量 2 3 def login(): 4 user = ‘admin11‘ #局部变量 5 print(user) 6 7 def info(): 8 global user 9 user = ‘admin22‘ 10 print(user) 11 12 13 login() #结果为admin11 14 print(user) #结果为admin 15 info() #结果为admin22 16 print(user) #结果为admin22
当函数内局部变量名与全局变量名一致时,优先使用局部变量
原文:https://www.cnblogs.com/heertong/p/12111287.html