语法结构:
def 函数名 ([参数列表])
函数体
函数参数:
关键字参数:
>>> def glaring(color,size):
print(color,size)
>>> glaring("red","big")
red big
>>> glaring("big","red")
big red
>>> glaring(size="big",color="red")
red big
>>>
收集参数(可变参数)
>>> def test(*par):
print(len(par));
print(par[1]);
>>> test('cf','nz','dnf')
3
nz
>>>
修改全局变量
>>> def glaring():
global count
count=100
print(100)
>>> glaring()
100
>>> print(count)
100
注:函数需要调用才会执行
内部函数
>>> def fun1():
x=5
def fun2():
y=6
print(x,y)
fun2()
>>> fun1()
5 6
闭包 nonlocal
>>> def fun1():
x=5
def fun2():
nonlocal x
x=x**2
print(x)
fun2()
>>> fun1()
25
>>>
lambda表达式(匿名哦!函数)
格式: lambda [参数列表] : 函数体
>>> def fun(x):
return x**2
>>> fun(4)
16
>>> g = lambda x : x**2
>>> g(2)
4
>>>
filter(函数名,数据):过滤功能:数据通过函数筛选
>>> def app(x):
return x % 2
>>> show=(filter(app,range(10)))
>>> list(show)
[1, 3, 5, 7, 9]
>>>
>>> list(filter(lambda x : x%2,range(10)))
[1, 3, 5, 7, 9]
>>>
map()映射
>>> list(map(lambda x : x*3,range(10)))
[0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
>>>
递归:函数调用自身 (Ctrl+C:强制停止)
def glaring(n):
if n == 1 :
return 1
else:
return n*glaring(n-1)
while 1:
k=int(input("输入要求解的阶乘数"))
print("结果为:",glaring(k))
不适数值大的情况
汉诺塔问题
def hanoi(n, x, y, z):
if n == 1:
print(x, ' --> ', z)
else:
hanoi(n-1, x, z, y) # 将前n-1个盘子从x移动到y上
print(x, ' --> ', z) # 将最底下的最后一个盘子从x移动到z上
hanoi(n-1, y, x, z) # 将y上的n-1个盘子移动到z上
n = int(input('请输入汉诺塔的层数:'))
hanoi(n, 'X', 'Y', 'Z')