函数
普通函数:
- 无参函数:
def func():
pass
func()
- 有参函数:
1.普通参数
def func(x,y):
pass
2.可变参数
def func(*args):
pass
2.1调用时参数个数可以没有,可以多个,*不能为关键字参数
def func(*args,**kwargs):
pass
2.2调用时参数个数可以没有,可以多个,**必须为关键字参数
def func(x,*args,**kwargs):
pass
2.3混合使用,x必须赋值
3.默认值参数:
def func(x,y=2):
pass
func(x=1,y=3)
- 返回值:
1.没有返回值:
def func():
print(1)
x=func() #None
2.有返回值:
def func():
a,b=1,2
return a,b
2.1返回多个值时保存到一个列表中
内部函数:
嵌套函数--->闭包--->装饰器
- 嵌套函数:
def a():
def b():
pass
b()
a()
- 闭包:
def a():
def b():
pass
return b
f=a()
f()
- 装饰器:
#单层
def decorate(func):
def wrapper(*args,**kwargs):
func(*args,**kwargs):
pass
return wrapper
@decorate
def a():
pass
@decorate
def b(x,y):
pass
#多层(靠近装饰,先1再2)
@decorate2
@decorate1
def a():
pass
#带参数
def outer(a):
def decorate(func):
def wrapper(*args,**kwargs):
func(*args,**kwargs):
pass
return wrapper
return decorate
@outer(a)
def func(x,y):
pass
func()
- 变量的作用域:L(local局部)E(encloseing嵌套)G(global全局)B(built-in 内置)
nonlocal global
globals() locals()
a=1
def a():
b=2
def b():
global a
nonlocal b
c=3
c+=1
b+=1
c+=1
print(a,b,c)
b()
匿名函数:
def func(a,b):
s=a+b
return s
func(1,2)
s=lambda a,b:a+b
s(1,2)
内置函数:
max() min() reduce() map() filter() sorted()....
list1=[{'a':1,'b':2},{'a':2,'b':4},{'a':3,'b':6}]
m=max(list1,key=lambda x:x['a'])
list1=[1,2,3,4,5]
result=map(lambda x:x+1,list1)
print(list(result))
#2,3,4,5,6
reduce()对列表元素进行加减乘除运算
t1=(1,2,3,4)
result=reduce(lambda x,y:x+y,t1,20)
#30
filter()
list1=[1,2,3,4,5]
result=filter(lambda x:x>3,list1)
print(list(result))
def func(list1):
list2=[]
for i in list1:
if i>3:
list2.append(i)
return list2
sorted()
list1=[{'a':1,'b':2},{'a':2,'b':4},{'a':3,'b':6}]
list1=sorted(list1,key=lambda x:x['b'],reverse=True)list1=[{'a':1,'b':2},{'a':2,'b':4},{'a':3,'b':6}]
m=max(list1,key=lambda x:x['a'])
list1=[1,2,3,4,5]
result=map(lambda x:x+1,list1)
print(list(result))
#2,3,4,5,6
reduce()对列表元素进行加减乘除运算
t1=(1,2,3,4)
result=reduce(lambda x,y:x+y,t1,20)
#30
filter()
list1=[1,2,3,4,5]
result=filter(lambda x:x>3,list1)
print(list(result))
def func(list1):
list2=[]
for i in list1:
if i>3:
list2.append(i)
return list2
sorted()
list1=[{'a':1,'b':2},{'a':2,'b':4},{'a':3,'b':6}]
list1=sorted(list1,key=lambda x:x['b'],reverse=True)
递归函数:(自己调用自己)
def a(n):
if a==0:
return 0
else:
return n+a(n-1)
a(5)