全局变量和局部变量
a=6
def foo():
print(a)
a=66
foo()
输出:
报错(内部和外部a重名,会优先搜索内部a,但是print在定义a之前所以报错)
glabal
a=6
def foo():
global a #相当于调用a
print(a)
a=66
print(a)
foo()
print(a)
输出:
6
66
66
a=6
def foo():
a+=1
print(a)
foo()
报错
li=[1,2]
def foo():
li.append(3)
print(li)
foo()
输出:
[1, 2, 3]
递归函数
在一个函数内部调用函数本身
#斐波那契数列
def func(n):
if n==1:
return 0
elif n==2:
return 1
else:
return func(n-1)+func(n-2)
print(func(4))
匿名函数(lambda)
格式:
lambda para1,para2:表达式
可不填形参
function = lambda x,y:x+y
print(function(1,2))
输出:3
高阶函数
把一个函数名以实参形式,传递给这个函数的形参,这个函数就称为高阶函数
def pow(x):
return x**2
def add(a,b,func):
return func(a)+func(b)
print(add(1,2,pow))
filter函数
功能:过滤掉序列中符合函数条件的元素。当序列中需要保留的元素可以用某些函数描述时,就应该想到filter函数
filter(function,seq)
li = ['zhejiang','university','city','college']
f = filter(lambda para:not para.endswith('ty'),li)
print(list(f))
输出:
['zhejiang', 'college']
map映射
功能:求一个序列或者多个序列进行函数映射后的值(最后用list()强转)
格式
map(function,iterable1,iteralbe2)
– -function的参数可以不止一个
—iterable1,iterable2就是传入function的参数
li=[1,2,3,4]
res=map(lambda x:x+1,li)
print(list(res))
输出:
[2, 3, 4, 5]