-
为函数写一个装饰器,在函数执行之后输出 after
def add_end_message(fn): def new_fn(*args, **kwargs): result = fn(*args, **kwargs) print('after') return result return new_fn @add_end_message def func3(): pass func3()
-
为函数写一个装饰器,把函数的返回值 乘2再返回值
def add_end_message(fn): def new_fn(*args, **kwargs): result = fn(*args, **kwargs) result *= 2 return result return new_fn @add_end_message def func3(num): return num print(func3(2))
-
写一个装饰器@tag要求满足如下功能:
def tag(p): def tag_son(*args,**kwargs): result1 = p(*args,**kwargs) result = f'<p>{result1}</p>' return result return tag_son
@tag
def render(text):
# 执行其他操作
return text
@tag
def render2():
return 'abc'
print(render('Hello')) # 打印出: <p>Hello</p>
print(render2()) # 打印出: <p>abc</p>
-
写一个创建一副扑克牌的生成器。
def poker(): flower_list = ['♦', '♣', '♠', '♥'] general_list = ['A', '2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K'] all_pokers = [] for x in flower_list: all_pokers.append(list(map(lambda y: x+y,general_list))) yield all_pokers print(list(poker()))
-
使用递归函数画出以下图形:
n = 5 ***** **** *** ** * n = 4 **** *** ** *
def print_star(nums): str1 = '' if nums > 0: for x in range(nums): str1 += '*' print(str1) return print_star(nums - 1) n = int(input('请输入n:')) print_star(n)