# 写一个装饰器,在函数调用结束的时候打印'end'defprint_end(fn):defnew_fn(*args,**kwargs):
result = fn(*args,**kwargs)print('end')return result
return new_fn
# 写一个装饰器,将原函数的返回值加100defadd_100(fn):defnew_fn(*args,**kwargs):
result = fn(*args,**kwargs)iftype(result)in(int,float):return result +100return result
return new_fn
@add_100
deffunc3(nums:int):
sum1 =1for x inrange(1, nums +1):
sum1 *= x
return sum1
print(func3(4))
@add_100
deffunc4():print('你好')print(func4())
# 斐波那契数列defnum(n):if n ==1or n ==2:return1return num(n-1)+ num(n-2)print(num(10))# 2.打印下面的图形"""
n=3
*
**
***
n=4
*
**
***
****
"""defstar(n):if n ==1:print('*')return
star(n-1)print('*'* n)
star(10)
作业
为函数写一个装饰器,在函数执行之后输出 after
defprint_after(func):defnew_func(*args,**kwargs):
result = func(*args,**kwargs)print('after')return result
return new_func
@print_after
deffunc1():print('hello')
func1()
为函数写一个装饰器,把函数的返回值乘2再返回在
defnew_ele(func):defnew_func(*args,**kwargs):
result = func(*args,**kwargs)iftype(result)in(int,float):return result *2return result
return new_func
@new_ele
deffunc2(ele):return ele
print(func2(10))
写一个装饰器@tag满足一下功能
deftag(func):defnew_func(*args,**kwargs):
result = func(*args,**kwargs)return f'<p>{result}</p>'return new_func
@tag
defrender(text):return text
@tag
defrender2():return'abc'print(render('Hello'))# <p>Hello</p>print(render2())# <p>abc</p>
写一个创建一副扑克的生成器
使用递归函数画出一下图形
# n = 5# *****# ****# ***# **# *# n = 4# ****# ***# **# *defstar(n):if n ==0:return''else:return("*"* n +'\n')+ star(n -1)print(star(5))