1. 寫一個(gè)生成式能夠產(chǎn)生的數(shù)據(jù)為: 1, 4, 27, 256, 3125,…, 9**9
print(list(x ** x for x in range(1,10)))
2. 寫一個(gè)生成式能夠產(chǎn)生1-10中所有半徑是偶數(shù)的圓的面積
import math
gen = (math.pi * r ** 2 for r in range(1, 11)) if r %2
print(list(gen))
3. 寫一個(gè)生成式交換字段的鍵和值,產(chǎn)生一個(gè)新的字典
dict1 = {'a':90, 'b':80, 'c':77}
dict2 = dict((dict1[key], key) for key in dict1)
print(dict2)
4. 為函數(shù)寫一個(gè)裝飾器,在函數(shù)執(zhí)行之后輸出 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. 為函數(shù)寫一個(gè)裝飾器,把函數(shù)的返回值 +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 寫一個(gè)裝飾器@tag要求滿足如下功能:
@tag
def render(text):
# 執(zhí)行其他操作
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.寫一個(gè)裝飾器@tag要求滿足如下功能(需要使用帶參的裝飾器,自己先自學(xué)掙扎一下):
# @tag(name='p')
# def render(text):
# # 執(zhí)行其他操作
# 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. 為函數(shù)寫一個(gè)裝飾器,根據(jù)參數(shù)不同做不同操作。
flag為True,則 讓原函數(shù)執(zhí)行后返回值加100,并返回。
flag為False,則 讓原函數(shù)執(zhí)行后返回值減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))