亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

python進階

廖雪峰 移動開發工程師
難度中級
時長 3小時33分
學習人數
綜合評分9.20
575人評價 查看評價
9.6 內容實用
9.0 簡潔易懂
9.0 邏輯清晰
def count():
fs = []
for i in range(1, 4):
def f():
return i*i
fs.append(f())
return fs

f1, f2, f3 = count()
print f1, f2, f3

往數組添加內容由f變成f()
打印由f()改成f,答案居然就正確了
其實很簡單,無論你嵌套多少層,關鍵看你的裝修函數最后被那一層調用就在那一層用functools
2-4這一節的示例中的輸出結果 4的平方寫成了10 ~
def count():
fs = []
a=iter([i for i in range(1,4)])
for i in range(1, 4):
def pow2():
return next(a)**2
fs.append(pow2)
return fs

f1, f2, f3 = count()
print f1(), f2(), f3()
def count():
fs = []
for i in range(1, 4):
def f(i):
return i*i
fs.append(f(i))
return fs

f1, f2, f3 = count()
print f1(), f2(), f3()
def count():
return [ (lambda j: lambda: j*j)(i) for i in range(1,4) ]

f1, f2, f3 = count()
print f1(), f2(), f3()
不是的,各位!實際上是循環時前面的函數 f 被后面的最后的函數 f 給替換了,請看以下 Python 3 代碼:
def count():
fs = []
for i in range(1, 4):
def f():
return i*i
print(f())
fs.append(f)
return fs

f1, f2, f3 = count() # 依次打印1,4,9
print(f1()) # 9
print(f2()) # 9
print(f3()) # 9
def calc_prod(lst):
return lambda : reduce(lambda x,y:x*y, lst)

f = calc_prod([1, 2, 3, 4])
print f()
import time
def performance(f):
def print_time(*args):
t1=time.time()
result = f(*args)
t2=time.time()
print str(t2-t1)
return f
return print_time
@performance
def factorial(n):
return reduce(lambda x,y: x*y, range(1, n+1))
print factorial(10)
報錯
不行我有強迫癥....
這是python2,在python3是不需要float(self.p)/self.q的
帶參數的裝飾器相當于在無參數的裝飾器基礎上再套了一層函數來返回這個無參數的裝飾器,并且這個無參數的裝飾器引用了外部函數的參數
我才知道要操作類屬性必須在函數里最開始,第二行在執行加一就報錯
課程須知
本課程是Python入門的后續課程 1、掌握Python編程的基礎知識 2、掌握Python函數的編寫 3、對面向對象編程有所了解更佳
老師告訴你能學到什么?
1、什么是函數式編程 2、Python的函數式編程特點 3、Python的模塊 4、Python面向對象編程 5、Python強大的定制類

微信掃碼,參與3人拼團

微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

友情提示:

您好,此課程屬于遷移課程,您已購買該課程,無需重復購買,感謝您對慕課網的支持!

本次提問將花費2個積分

你的積分不足,無法發表

為什么扣積分?

本次提問將花費2個積分

繼續發表請點擊 "確定"

為什么扣積分?

舉報

0/150
提交
取消