-
写一个装饰器@tag要求满足如下功能:
@tag(name='p') def render(text): # 执行其他操作 return text @tag(name='div') def render2(): return 'abc' print(render('Hello')) # 打印出: <p>Hello</p> print(render2()) # 打印出: <div>abc</div>
def tag(name): def render(func): def wl1(*args, **kwargs): result = func(*args, **kwargs) if name == 'p': return '<p>' + result + '</p>' elif name == 'div': return '<div>' + result + '<div>' else: return result return wl1 return render @tag('p') def render(text): # 执行其他操作 return text print(render('Hello')) @tag(name='div') def render2(): return 'abc' print(render2())
-
为函数写一个装饰器,根据参数不同做不同操作。
flag为 True,则 让原函数执行后返回值加 100,并返回。 flag为 False,则 让原函数执行后返回值减 100,并返回。 def lun(flag): def test(func): def new_func(*args, **kwargs): result = func(*args, **kwargs) if flag == 'True': return result + 100 elif flag == 'False': return result - 100 else: return result return new_func return test @lun('False') def func2(x, y): return x + y print(func2(22, 33))
-
为函数写一个装饰器,根据不同的运算符和数据对原函数的返回值进行相应的数值操作
例如: 运算符是+,数据是 100, 就对原函数的返回值进行加100的处理 运算符是-, 数据是 20,就对原函数的返回值进行减20的处理 运算符是*, 数据是 3, 就对原函数的返回值进行乘3的处理 运算符是/, 数据是 2, 就对原函数的返回值进行除2的处理 其他情况的符号不做处理 def lin2(t): def test(func): def wl3(*args, **kwargs): result = func(*args, **kwargs) if t == '+' and result == 100: return result + 100 elif t == '-' and result == 20: return result - 20 elif t == '*' and result == 3: return result * 3 elif t == '/' and result == 2: return result / 2 else: return return wl3 return test @lin2('+') def func3(): return 100 print(func3()) @lin2('-') def func4(): return 20 print(func4()) @lin2('*') def func5(): return 3 print(func5()) @lin2('/') def func6(): return 2 print(func6())
-
写一个斗地主发牌器
def ddz_poker():
poker_color = ('♠', '♥', '♣', '♦')
poker = list(range(2, 11))
poker.extend(['J', 'Q', 'K', 'A', 'max_joker', 'min_joker'])
for x in poker:
if x in ('max_joker', 'min_joker'):
print(x)
else:
for y in poker_color:
print(f'{y}{x}')