python函数以及传参
定义一个函数
def funadd(a,b):
return a+b
函数的传参
#以此函数为例
def funtext(a,b=1,*args,**kwargs):
print(a,b)
print(args,kwargs)
funtext(1,2,3,4,5,6,name="wsm")
#打印结果
1 2
(3, 4, 5, 6) {
'name': 'wsm'}
#在调用函数时 a没有定义默认值 b的默认值是1
参数类型 | 值(参考上述代码块) |
---|---|
必传参数 | a |
可选参数 | b(可传可不传,不穿默认值为1) |
不确定参数 | *args 将无参数的值合并成元组(3, 4, 5, 6) |
**kwargs 将有参数和默认值的赋值语句合并成字典{‘name’: ‘wsm’} |
定义函数参数类型
#参数名 + : + 类型
def funtext2(a:str,b:int=1):
print(global a)
print(a,b)
局部变量和全局变量
name="wsm" #全局变量
#参数名 + : + 类型
def funtext(a=1,b=2):
c="123" #局部变量 仅在函数体内有效
print(a,b,c)# 1,2,"123"
print(c) #为定义
#修改全局变量 global
def funtext():
global name
name="123" #局部变量 仅在函数体内有效
print(name)# "123"
print(name) #"123"
递归函数
def text():
global num
num += 1
if num != 5:
print('不满足,继续调用自己', num)
return text()
else:
print("满足了", num)
#ps:递归函数一定要有结束条件 避免乱用造成内存溢出
匿名函数 lambda
- 定义一个轻量化函数
- 即用即删除,很适合需要完成一项功能,但是此功能只在一处使用
- 默认retun一个值
#例子
func =lambda:print(1)# 1
func2 =lamdba:x,y:x>y
print(func2(1,2))#False
func3 =lamdba:x,y=1:x+y
print(func2(1,2))#3