Rioca

博客园 首页 新随笔 联系 订阅 管理

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)
posted on 2020-07-26 16:10  Rioca  阅读(105)  评论(0编辑  收藏  举报