定义函数
def say(name, words = "你好")
print(name + '->' + words)
收集参数
函数参数数不确定
def test(* params):
print("有%d个参数" % len(params))
print("第二个参数是:", params[1])
闭包
如果在一个内部函数里,对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就被认为是闭包。
def funX(x):
def funY(y):
return x * y
return funY
funX(8)(5)
输出40
lambda表达式
匿名函数,冒号左边为参数,右边为返回值。
g = lambda x, y : x + y
g(3, 4)
输出7
filter()
filter(None or function, iterable)
:将第二份可迭代数据里的每一个元素带入function中计算,把返回True的值筛选出来;如果第一个参数为None,筛选第二个参数中为True的元素。
map()
将序列的每一个元素作为函数的参数进行运算加工。
list(map(lambda x : x*2, range(5)))
输出 [0, 2, 4, 6, 8]
汉诺塔
def hanoi(n, x, y, z):
if n==1:
print(x, '-->', z)
else:
hanoi(n-1, x, z, y)
print(x, '-->', z)
hanoi(n-1, y, x, z)
斐波那契数列
def fib(n):
a,b=1,0
while n>0:
b+=a
a=b-a
n-=1
return b