019 函数:我的地盘我做主
当函数有返回值时,调用直接返回返回值
当函数没有返回值时,调用则返回None
020 函数:内嵌函数和内包
global关键字
用于在函数中修改全局变量的值
>>> count=5
>>> def MyFun():
count=10
print(count)
>>> MyFun()
10
>>> print(count)
5
没有用global时,函数中不能修改全局变量
>>> count=5
>>> def MyFun():
global count
count=10
print(count)
>>> MyFun()
10
>>> print(count)
10
用了global后,函数中可以修改全局变量
内嵌函数
Python支持函数的嵌套
>>> def fun1():
print('fun1正在被调用……')
def fun2():
print('fun2正在被调用……')
fun2()
>>> fun1()
fun1正在被调用……
fun2正在被调用……
fun2()函数只能在fun1()内被调用,出了fun1()函数,就不能被调用
021 函数:lambda表达式
Python写一些执行脚本时,使用lambda就可以省下定义函数的过程,不需要专门定义一个函数然后再去调用,使用lambda就可以使代码更加精炼。
>>> def ds(x):
return 2*x+1
>>> ds(5)
11
>>> def add(x,y):
return x+y
>>> add(3,4)
7
>>> lambda x:2*x+1
<function <lambda> at 0x000002724631FCA8>
>>> g=lambda x:2*x+1
>>> g(5)
11
>>> lambda x,y:x+y
<function <lambda> at 0x000002724631FE58>
>>> g=lambda x,y:x+y
>>> g(3,4)
7
两个厉害的内置函数
- filter()过滤器:把任何非true的内容过滤掉
>>> list(filter(None,[1,0,False,True]))
[1, True]
//筛选奇数的过滤器
>>> def odd(x):
return x%2
>>> temp=range(10)
>>> show=filter(odd,temp)
>>> 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*2,range(10)))
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
022函数:递归
递归求阶乘:
写一个求阶乘函数,例如所给的数是5,则阶乘式是1234%,得到的积是120,所以120就是4的阶乘
def factorial(n):
if n==1:
return 1
else:
return n*factorial(n-1)
number=int(input('请输入一个正整数:'))
result=factorial(number)
print("%d 的阶乘是:%d" % (number,result))
023递归
斐波那契数列的递归实现
def fab(n):
n1=1
n2=1
n3=1
if n<1:
print('输入有误!')
return -1
while (n-2)>0:
n3=n2+n1
n1=n2
n2=n3
n-=1
return n3
result=fab(20)
if result!=-1:
print('第20个数是:%d' % result)
def fab(n):
if n<1:
print('输入有误!')
return -1
if n==1 or n==2:
return 1
else:
return fab(n-1)+fab(n-2)
result=fab(20)
if result!=-1:
print('第20个数是:%d' % result)