python使用函数
def 函数名(参数):
代码
return
def add(x,y):
return (x+y)
>>> add(5,3)
8
>>> add("aba"+"ada","qweqew")
'abaadaqweqew'
默认参数
def add(x=5,y=3):
return (x+y)
>>> add()
8
>>> add(10,5)
15
>>> add(y=2,x=3)
5
>>> add(x=3,2)
SyntaxError: positional argument follows keyword argument
//*args 接受列表
def func1(*args):
print(args[0])
print(type(args))
print(args)
>>> func1('username',"password")
username
<class 'tuple'>
('username', 'password')
接受任意参数
def func1(*args,**kwargs):
print(args[0])
print(type(args))
print(args)
print(type(kwargs))
print(kwargs)
>>> func1(1,name="username",password="password")
1
<class 'tuple'>
(1,)
<class 'dict'>
{'name': 'username', 'password': 'password'}
获取想要的字段
def func2(*args,**kwargs):
print(kwargs)
print(kwargs["username"])
print(kwargs["password"])
>>> func2(username="username",password="password")
{'username': 'username', 'password': 'password'}
username
password
函数内部无法修改值
x= 6
def func3(x):
x = 7
func3(x)
print(x)
#变成全局变量
def func4():
global x
x = 7
func4()
print(x)
函数即变量
>>> fun = add
>>> fun
<function add at 0x000001365D5C2E18>
>>> fun()
8
函数递归 递归就是函数调用自身的过程 但是必须要有结束条件 否则会一直调用自身
1.要有明确的结束条件
2.进行一次递归 规模会减小
3.效率不高 容易栈溢出 而且python有递归层数限制 大概小于1000
def test(x):
if(x>=1):
x = x - 1
return x+test(x)
else:
return 0
例如 传入 10 结果就是45 就是9+8+7+6+5+4+3+2+1+0
匿名函数 lambda
lambda 参数1,参数2,参数3:函数
>>> y = lambda x:x*x
>>> y
<function <lambda> at 0x0000026E3E9EAA60>
>>> y(5)
25
>>> z = lambda x,y:x*2+y*3
>>> z(3,2)
12
>>> mystr = lambda username,password,age:username+password+age
>>> mystr("asd","asd","18")
'asdasd18'
>>> f = lambda x,y,z:(x+1,y+1,z+1)
>>> f(1,2,3)
(2, 3, 4)