1. 写一个生成式能够产生的数据为: 1, 4, 27, 256, 3125,…, 9**9
print(list(x ** x for x in range(1,10)))
2. 写一个生成式能够产生1-10中所有半径是偶数的圆的面积
import math
gen = (math.pi * r ** 2 for r in range(1, 11)) if r %2
print(list(gen))
3. 写一个生成式交换字段的键和值,产生一个新的字典
dict1 = {'a':90, 'b':80, 'c':77}
dict2 = dict((dict1[key], key) for key in dict1)
print(dict2)
4. 为函数写一个装饰器,在函数执行之后输出 after
def m_decorator(fn):
def text(*args, **kwargs):
fn(*args, **kwargs)
print('After')
return text
@m_decorator
def func1(x,y,z):
print(x*y*z)
func1(3, 5, 8)
5. 为函数写一个装饰器,把函数的返回值 +100 然后再返回。
def return_value(fn):
def text(*args, **kwargs):
s = fn(*args, **kwargs)
sx = s + 100
return sx
return text
@return_value
def render2(x, y):
return (x+y)
print(render2(9, 9))
'''
5-1-1 写一个装饰器@tag要求满足如下功能:
@tag
def render(text):
# 执行其他操作
return text
@tag
def render2():
return 'abc'
print(render('Hello')) # 打印出: <p>Hello</p>
print(render2()) # 打印出: <p>abc</p>
'''
def tag(fn):
def func(*args, **kwargs):
return '<p>' + fn(*args, **kwargs) + '</p>'
return func
@tag
def render(text):
return text
@tag
def render2():
return 'abc'
print(render('Hello'))
print(render2())
6.写一个装饰器@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(join) :
def func_text(fn):
def text(*args,**kwargs):
return '<' + join + '>' +fn(*args,**kwargs) + '</' + join +'>'
return text
return func_text
@tag(join='p')
def render(text):
return text
@tag(join='div')
def render2():
return 'abc'
print(render('Hello'))
print(render2())
7. 为函数写一个装饰器,根据参数不同做不同操作。
flag为True,则 让原函数执行后返回值加100,并返回。
flag为False,则 让原函数执行后返回值减100,并返回。
def tag(flag:bool):
def func_mod(fn):
def text(*args, **kwargs):
if flag:
return fn(*args, **kwargs) + 100
else:
return fn(*args, **kwargs) - 100
return text
return func_mod
@tag(flag=True)
def func2(x, y):
return x + y
print(func2(400, 600))
@tag(flag=False)
def func2(x, y):
return x + y
print(func2(900, 700))