函数定义
def 函数名(参数1,参数2...):
函数语句
return 返回值
def add_func(a,b):
c = a + b
return c
add_func(1,2)
返回多个值
def family_func():
a = "laowang"
b = "laoli"
c = "laozhao"
return [a,b,c] or (a,b,c) or a,bc
names = family_func() #1. 返回列表 2.返回元组 3.返回元组
局部变量转全局变量
wendu = 0
def wendu_fun():
global wendu
wendu = 33
def wendu_huashi():
print(wendu)
wendu_fun()
wendu_huashi() #打印信息33 如果去掉global 打印0
当全局变量是列表或者字典类型可以不用加global,其他的全局变量每次用到都要加上
函数帮助提示信息
wendu = 0
def wendu_fun():
"""获取温度函数"""
global wendu
wendu = 33
def wendu_huashi():
print(wendu)
help(wendu_fun) #提示函数作用
wendu_fun()
wendu_huashi() #打印信息33 如果去掉global 打印0
缺省参数
def add_func(a,b = 20):
return a+b
c = add_func(10) #打印信息30
def add_func(a,b = 20,c = 33):
print(a)
print(b)
print(c)
add_func(1,c = 55) #打印信息1 20 55
add_func(a = 1,c = 55,b = 30) #打印信息1 30 55
通过给型参进行赋值来进行传值,可改变顺序,没有缺省信息的型参一定要有值,赋值的变量名一定要在型参中有
不定长参数
def add_func(a,b ,*argc,**kargc):
print(a)
print(b)
print(argc)
print(kargc)
add_func(1,2,3,4) #1 2 (3,4) {}
add_func(1,2,3) #1 2 (3,) {}
add_func(1,2) #1 2 () {}
add_func(1,2,3,4,tast = 2,done = 1) #1 2 (3,4) {"task" :2,"done":1}
argc接收没有键值对的参数,接收后生成元组;*kargc接收有键值对的参数,接收后生成字典
传递元组、字典时进行拆包
def add_func(a,b ,*argc,**kargc):
print(a)
print(b)
print(argc)
print(kargc)
A = [11,22,33]
B = {"name":"laowang","sex":"nan"}
add_func(1,2,A,B) #1 2 ([11,22,33], {"name":"laowang","sex":"nan"} )
add_func(1,2,*A,**B) #1 2 (11,22,33) {"name":"laowang","sex":"nan"}
递归
def getNums(num):
if num > 1 :
return num * getNums(num - 1)
else:
return num
print("=====%d"%getNums(5))
注意防止函数循环调用自己,导致程序崩溃
匿名函数
def test_add(a,b,func):
return func(a,b)
print(test_add(1,2,lambda a,b:a+b))
lambda a,b:a+b a,b为参数,a+b为返回值的匿名函数,func对其进行引用
python2动态特性
def test_add(a,b,func):
return func(a,b)
new_func = input("请输入匿名函数:")
print(test_add(1,2,new_func))
python3动态特性
def test_add(a,b,func):
return func(a,b)
new_func = input("请输入匿名函数:") #python中输入的都是字符串
new_func = eval(new_func) #eval 将字符串str当成有效的表达式来求值并返回计算结果
print(test_add(1,2,new_func))