- 寫一個(gè)生成式能夠產(chǎn)生的數(shù)據(jù)為: 1, 4, 27, 256, 3125,…, 9**9
gen = (x**x for x in [1, 2, 3, 4, 5, 6, 7, 8, 9])
gen1 = (num**num for num in range(1, 10))
print(list(gen1))
- 寫一個(gè)生成式能夠產(chǎn)生1-10中所有半徑是偶數(shù)的圓的面積
import math
li = [math.pi*r*r for r in range(2, 11, 2)]
print(li)
- 寫一個(gè)生成式交換字段的鍵和值溺蕉,產(chǎn)生一個(gè)新的字典
dict1 = {0: 0, 1: 2, 2: 4, 3: 6, 4: 8}
gen1 = dict(zip(dict1.values(), dict1.keys()))
print(gen1)
dict1 = {'a': 'b', 'a1': 'b2'}
dict2 = {dict1[key]: key for key in dict1}
print(dict2)
- 為函數(shù)寫一個(gè)裝飾器骑祟,在函數(shù)執(zhí)行之后輸出 after
def after_1(fn):
def test(*args, **kwargs):
fn(*args, **kwargs)
print('after')
return test
@after_1
def func3():
print('函數(shù)')
func3()
- 為函數(shù)寫一個(gè)裝飾器蝇狼,把函數(shù)的返回值 +100 然后再返回凌简。
def add_100(fn):
def test(*args, **kwargs):
return fn(*args, **kwargs) + 100
return test
@add_100
def func3():
return 30
print(func3())
- 寫一個(gè)裝飾器@tag要求滿足如下功能:
python
@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 test(*args, **kwargs):
return '<p>' + fn(*args, **kwargs) + '</p>'
return test
-
寫一個(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(name):
def test1(fn):
def test2(*args, **kwargs):
if name == 'p':
return '<p>' + fn(*args, **kwargs) + '</p>'
elif name == 'div':
return '<div>' + fn(*args, **kwargs) + '</div>'
return test2
return test1
- 為函數(shù)寫一個(gè)裝飾器则剃,根據(jù)參數(shù)不同做不同操作茵肃。
flag為True诉儒,則 讓原函數(shù)執(zhí)行后返回值加100管怠,并返回淆衷。
flag為False,則 讓原函數(shù)執(zhí)行后返回值減100渤弛,并返回祝拯。
def flag(value):
def test1(yhs):
def tes2(*args, **kwargs):
if value:
return yhs(*args, **kwargs)+100
else:
return yhs(*args, **kwargs) - 100
return tes2
return test1
@flag(False)
def yhs():
return 100
@flag(True)
def yhs():
return 100
- 寫一個(gè)斗地主發(fā)牌器