Python基础5,函数作用域和装饰器

函数作用域和装饰器

1,函数作用域
global:能在函数里修改全局变量的值

a = 100   # 全局变量
def func1():
	global a  # 修改全局变量
	a = 200
	print(a)
func1()
print(a)

输出a为200

nonlocal:让嵌套函数能够修改嵌套函数之外的值

def func2():
	b = 100
	def func3():
		nonlocal b  # 取b=100
		b += b
		return b
	return fun3()
b = func2()
print(b)

输出200

2,递归

list1 = [[[[[['泥娃娃']]]]]]
print(list1[0][0][0][0][0][0])

输出泥娃娃

def tw(list1):
	list1 = list1[0]
	if list1[0] == '泥娃娃':
		print('找到你啦,%s'% list1[0])
	else:
		tw(list1)
tw(list1 )

输出 找到你啦,泥娃娃

阶乘

def jiecheng(n):
	if n>1:
		return n*jiecheng(n-1)
	else:
		return 1
print(jiecheng(5))

3,闭包
闭包是函数里面嵌套函数,外层函数返回了内层函数的函数体
内部函数调用外部函数的变量,外函数返回内函数的引用

def func4():
	def func5():
		print('嵌套的函数')
	return func5
a = func4()   # a()=func5()
print(a)

加括号就是调用

def func6(x):
	def func7():
		return 'hello'+x
	return func7
print(func6('world')())

4,装饰器
用于拓展原来函数功能的一种函数,特殊之处在于他的返回值也是一个函数
好处在于不用更改原函数代码的前提下给函数增加新的功能

def func8(func):
	def func9():
		print('开始语')
		func()
		print('结尾语')
	return func9
@func8
def speak():
	print('正文')
#a = func8(speak)  # a=func9(),相当于@func8
speak()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值