- 写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9
nums = (x ** x for x in range(1, 9))
- 写一个生成式能够产生1-10中所有半径是偶数的圆的面积
import math
nums = (math.pi * r * r for r in range(1, 10) if not r & 1)
- 写一个生成式交换字段的键和值,产生一个新的字典
dict1 = {"a": 1, "b": 2, "c": 3}
dict2 = dict((dict1[i], i) for i in dict1)
- 为函数写一个装饰器,在函数执行之后输出 after
def func(fn):
def func2(*args, **kwargs):
fn(*args, **kwargs)
print("after")
return func2
@func
def func3():
print("========")
func3()
- 为函数写一个装饰器,把函数的返回值 +100 然后再返回。
def func2(fn):
def func3(*args, **kwargs):
b = fn(*args, **kwargs)
return b + 100
return func3
@func2
def func1(a):
return a
func1 = func2(func1)
print(func1(2))
-
写一个装饰器@tag要求满足如下功能:
@tag
def render(text):
# 执行其他操作
return text@tag def render2(): return 'abc' print(render('Hello')) # 打印出: <p>Hello</p> print(render2()) # 打印出: <p>abc</p>
def add(fn):
def add1(*args, **kwargs):
a = str(fn(*args, **kwargs))
return "<p>" + a + "</p>"
return add1
@add
def render(text):
return text
@add
def render2():
return "abc"
print(render("Hello"))
print(render2())
-
写一个装饰器@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 add(fn):
def add1(*args, **kwargs):
a = str(fn(*args,**kwargs))
return "<%s>" % name + a + "</%s>" % name
return add1
return add
@tag(name="p")
def render(text):
return text
@tag(name="div")
def render2():
return "abc"
print(render("Hello"))
print(render2())
- 为函数写一个装饰器,根据参数不同做不同操作。
flag为True,则 让原函数执行后返回值加100,并返回。
flag为False,则 让原函数执行后返回值减100,并返回。
def func1(flag):
def func2(fn):
def func3(*args,**kwargs):
a = fn(*args,**kwargs)
if flag:
return a + 100
else:
return a - 100
return func3
return func2
@func1(flag=1)
def func(x):
return x
print(func(1))
- 写一个斗地主发牌器