99精品久久精品一区二区-亚洲熟妇无码?v在线播放-日本国产精品无码字幕在线观看-久久久亚洲永夜AV-亚洲一级无码一区二区一-免费国产成高清人在线视频-中文字幕乱码免费观看-国产毛片精品妇女久久久

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

Python函數(shù)進階:參數(shù)、閉包、裝飾器與遞歸調(diào)試避坑

Python函數(shù)進階:參數(shù)、閉包、裝飾器與遞歸調(diào)試避坑 寫代碼寫到第6章基本都會撞上“函數(shù)”這道坎。前面幾章無非是變量、判斷、循環(huán)寫出來的腳本像一條直線從上跑到下能出結(jié)果就算贏。等到代碼量過了兩三百行同樣的校驗邏輯被復(fù)制到第五個地方改一個字段名要全局搜索十幾處這時候才意識到Python函數(shù)不是為了考試才存在的語法糖它是把一條直線折成一張網(wǎng)的第一根折痕。我見過的多數(shù)問題包括參數(shù)默認值踩的坑、閉包里變量取到的值不對、裝飾器把函數(shù)名字改沒了都不是“不會寫函數(shù)”而是“把函數(shù)當成代碼塊沒把它當成對象和契約”。這篇內(nèi)容我會從參數(shù)、作用域、返回值、裝飾器、遞歸到調(diào)試拆分把自己和身邊人實際踩過的坑按順序攤開講適合剛學(xué)完基礎(chǔ)語法、正準備動手寫第一個稍大一點項目的人也適合寫到中途突然覺得代碼開始失控、想回頭補課的人。讀完你至少能判斷什么樣的重復(fù)值得抽函數(shù)、參數(shù)該怎么設(shè)計才不給未來的自己挖坑、為什么有些bug只有把函數(shù)拆開才看得見。1. 函數(shù)不是把代碼裝進盒子它是控制復(fù)雜度的最小單位1.1 從一段被我刪掉的重復(fù)代碼說起前陣子接手一個內(nèi)部用的小工具兩千多行代碼塞在一個腳本里其中有個用戶輸入校驗的段落連續(xù)出現(xiàn)了六次每次長十來行判斷字段是否為空、長度是否超限、編號是否符合預(yù)期格式。六段代碼幾乎一模一樣唯一區(qū)別是第二段多了一句把結(jié)果寫進日志。改需求的時候那位作者改了其中四處漏了兩處于是同樣一條非法輸入從A入口進會被拒絕從B入口進就直接寫進了存儲層。這種問題不是水平問題是函數(shù)沒有被當作隔離帶使用。抽函數(shù)這件事真正的價值不在于少打幾行字而在于制造一道邊界邊界外面的人只關(guān)心“給我輸入我還你一個結(jié)果”邊界里面的實現(xiàn)怎么改、日志怎么寫、異常怎么轉(zhuǎn)外面的人不需要知道。六段重復(fù)代碼抽成一個validate_user_payload(payload)改需求的時候只需要動一處漏改的可能性直接歸零。這就是我常說的函數(shù)的第一職責(zé)是收斂變化點把最容易變的那部分圈起來。但反過來說我見過另一種極端有人把每個if判斷都抽成一個只有一行return的函數(shù)整個文件變成四十個小函數(shù)互相調(diào)用讀起來的跳轉(zhuǎn)成本比原來還高。函數(shù)的粒度應(yīng)該由“變化的可能性”決定而不是由“代碼行數(shù)”決定。一段十行的代碼如果半年都不會改重復(fù)兩次也沒什么一段三行的代碼如果被六個入口依賴那就必須抽。1.2 語法塊、對象、命名空間函數(shù)的三副面孔多數(shù)教程講函數(shù)只講第一副面孔一個可以傳參、可以返回的語法塊。真正決定你能不能寫好Python函數(shù)的是另外兩副。第一副是對象。在Python里def語句執(zhí)行完函數(shù)名就綁定到一個函數(shù)對象上跟a 1綁定整數(shù)沒有任何本質(zhì)區(qū)別。這意味著函數(shù)可以賦值給變量、放進列表、當參數(shù)傳給另一個函數(shù)、作為返回值返回。裝飾器、回調(diào)、策略表這些東西之所以能成立全靠這一條。很多人看到裝飾器覺得玄其實就是“函數(shù)當參數(shù)、函數(shù)當返回值”兩個動作疊在一起。第二副是命名空間。函數(shù)體被調(diào)用時才產(chǎn)生一個局部命名空間函數(shù)返回后這個空間就銷毀。函數(shù)里的變量默認不會污染外面這既是優(yōu)點也是坑的來源——你在函數(shù)里對一個外層列表做了append外層確實變了因為改的是對象但你在函數(shù)里寫x x 1外層的x紋絲不動因為只是重新綁定了一個新名字。這兩件事看起來像一回事實際差得遠第3節(jié)會展開。def touch_list(lst): lst.append(1) # 改的是外部那個列表對象本身 def rebind_number(n): n n 1 # 只是把局部名字n重新指向了一個新整數(shù) data [] num 0 touch_list(data) rebind_number(num) print(data, num) # [1] 01.3 什么時候該抽函數(shù)什么時候抽了更糟我的判斷標準很土但用了很多年當你需要給這段代碼寫注釋解釋“它在干什么”的時候這段代碼就該有一個名字了。注釋是對名字的替代如果這段邏輯有一個準確的名字那就用函數(shù)名承擔說明職責(zé)別讓注釋散落在正文里。反過來以下幾種情況我傾向于不抽或者晚抽只在一個地方用、且邏輯與調(diào)用點強耦合、拆開后需要傳五六個參數(shù)才能工作。這種“參數(shù)搬運”說明拆錯了位置邊界沒找對。純粹為了減少行數(shù)而抽比如把print包一層。這種分層沒有帶來任何信息量讀的人還要多點一次跳轉(zhuǎn)。抽出來的函數(shù)名字叫process_data、handle_info、do_check這類——名字模糊說明你自己也沒想清楚它的職責(zé)這種函數(shù)遲早會變成新的意大利面。一個實用原則函數(shù)名如果是動詞加名詞且能一句話說清它輸入什么、輸出什么、副作用是什么才算合格的名字。如果一句話說不完多半是職責(zé)太多。真正值得抽的通常是這幾種輸入校驗、格式轉(zhuǎn)換、與外部交互讀寫文件、發(fā)請求、以及那些你已經(jīng)在腦子里默認“這塊是獨立的”的邏輯。前三種是變化最頻繁的地方最后一種是認知最清晰的地方。2. 參數(shù)設(shè)計默認值、可變對象與那些星號2.1 默認參數(shù)在 def 執(zhí)行的那一刻就求值了這是Python函數(shù)參數(shù)里最容易被忽略的機制。很多人的直覺是“每次調(diào)用時重新算一遍默認值”實際上默認值是在函數(shù)定義被執(zhí)行時求值一次之后一直復(fù)用那個對象。對不可變對象數(shù)字、字符串、元組、None沒什么影響對可變對象就是災(zāi)難。import time def log(msg, tstime.time()): print(f[{ts:.0f}] {msg}) time.sleep(1) log(第一條) time.sleep(1) log(第二條)兩條日志的時間戳一模一樣。因為time.time()在定義log的時候就算完了后續(xù)所有調(diào)用都在用這個舊值。想要每次調(diào)用取當前時間必須寫成tsNone然后在函數(shù)體里判斷。這個坑和可變默認參數(shù)是同一個根源只是表現(xiàn)形式更隱蔽因為它不報錯只是數(shù)據(jù)不對。2.2 可變默認參數(shù)每個人都該親手踩一次的坑def add_item(item, bucket[]): bucket.append(item) return bucket print(add_item(a)) # [a] print(add_item(b)) # [a, b] 期望是 [b]原因很直接[]這個列表在def執(zhí)行時創(chuàng)建了一次掛在函數(shù)對象上所有沒用第二個參數(shù)的調(diào)用共享它。默認值實際上存在add_item.__defaults__里打印一下就看得見。正確寫法是雙段式這也是PEP 8推薦的慣用法def add_item(item, bucketNone): if bucket is None: bucket [] bucket.append(item) return bucket注意這里必須是is None而不是if not bucket。如果調(diào)用方傳進來一個空列表not bucket為真你會新建一個列表調(diào)用方傳進來的那個就不會被修改行為反了。這種“看起來能跑、邊界情況下錯”的寫法比直接報錯更難排查。寫法是否安全說明def f(x, a[])否所有調(diào)用共享同一個列表def f(x, a{})否字典同理且更隱蔽def f(x, aNone) 判空重建是推薦寫法def f(x, a())是元組不可變但無法追加元素用途有限def f(x, afrozenset())是需要集合語義時的安全選擇有一點值得補充如果你確實想用共享狀態(tài)做緩存那用可變默認參數(shù)反而是個技巧但必須寫注釋說明這是故意的并且給它一個好名字比如_cache{}。沒有注釋的共享狀態(tài)在代碼評審里一律按bug處理。2.3 *args 和 **kwargs 什么時候真的需要兩個星號很多人學(xué)完就忘了或者反過來走到哪都用。它們真正的適用場景其實很窄包裝或轉(zhuǎn)發(fā)。你要在調(diào)用某個已有函數(shù)前后加點東西計時、日志、重試但你不想關(guān)心它到底收幾個參數(shù)。這時候def wrapper(*args, **kwargs)是唯一不破壞兼容性的寫法。參數(shù)數(shù)量本身是開放的。比如一個批量執(zhí)行函數(shù)run_all(*tasks)一個配置合并函數(shù)merge(**overrides)。給裝飾器傳參。def retry(times3, delay1.0)返回一個真正的裝飾器這層結(jié)構(gòu)必須用嵌套函數(shù)。不適合的場景也很明確如果你明知道函數(shù)只接收name和age就別寫def create(**kwargs)。這種寫法會讓IDE的補全、類型檢查、以及調(diào)用方對參數(shù)的理解全部失效出錯只能在運行時暴露。我評審代碼時看到這種簽名第一反應(yīng)是問“你到底想接收什么”。還有一個細節(jié)*args拿到的是元組**kwargs拿到的是字典而且順序在Python 3.7是有保證的按傳入順序。如果你需要把kwargs原樣傳給下一個函數(shù)直接用func(**kwargs)解包不要自己拼。2.4 斜杠和星號把調(diào)用方式鎖死Python 3.8 之后函數(shù)簽名里可以出現(xiàn)/和*用來限定參數(shù)只能按位置傳、或只能按關(guān)鍵字傳。def transfer(amount, /, account, *, memo): ...這里的含義是amount只能按位置傳account位置或關(guān)鍵字都行memo只能用關(guān)鍵字傳。這個語法看起來古怪實際解決的是參數(shù)名不能隨便改的問題——如果一個參數(shù)被設(shè)計成僅位置你就可以放心把它改名為amt而不擔心有調(diào)用方在用amount傳參。標準庫和很多三方庫里大量使用這個技巧做演進。日常寫業(yè)務(wù)代碼我的建議是關(guān)鍵參數(shù)盡量只允許關(guān)鍵字傳遞用*隔開。像send_mail(to, subject, body, cc, bcc, retry)這種簽名調(diào)用時寫成send_mail(a, b, c, True, False, 3)半年后沒人看得懂。改成def send_mail(to, subject, body, *, ccNone, bccNone, retry3)調(diào)用方必須寫retry3可讀性立刻不一樣。3. 作用域與閉包變量到底被誰改了3.1 LEGB 不是背誦口訣是查找順序局部Local、外層函數(shù)Enclosing、全局Global、內(nèi)置Built-in這個順序背起來容易用起來出問題的地方在于Python在編譯函數(shù)體時就決定了每個名字是局部還是全局不是運行時才判斷。count 0 def bump(): print(count) # 這里會直接拋 UnboundLocalError count count 1因為函數(shù)體里出現(xiàn)了count ...這個賦值編譯器把count標記為局部變量。于是第一行print(count)去找局部變量發(fā)現(xiàn)還沒賦值直接報錯。這個錯誤信息叫UnboundLocalError: local variable count referenced before assignment幾乎每個學(xué)函數(shù)的人都撞過而且看錯誤信息完全猜不到原因。記住一句話就夠了函數(shù)里只要對某個名字做過賦值它就是局部的除非你顯式聲明 global 或 nonlocal。3.2 閉包保存的是綁定不是值閉包指的是內(nèi)層函數(shù)引用了外層函數(shù)的局部變量并且外層函數(shù)返回后這些變量依然存活。這個概念本身不難難的是它的一個推論閉包捕獲的是變量本身不是捕獲那一刻的值。變量后來變了閉包里讀到的也變。funcs [lambda: i for i in range(3)] print([f() for f in funcs]) # [2, 2, 2]三個lambda都捕獲同一個i循環(huán)結(jié)束時i是2。修復(fù)方式有兩種第一種是借助默認參數(shù)在定義時求值funcs [lambda ii: i for i in range(3)] # [0, 1, 2]第二種是用functools.partial可讀性更好一些from functools import partial def make(i): return i funcs [partial(make, i) for i in range(3)]同一個機制在按鈕回調(diào)、事件綁定、異步任務(wù)提交里反復(fù)出現(xiàn)癥狀都是“所有回調(diào)都用了最后一個值”。認出這個模式比記住修復(fù)方法更重要。順帶說一句閉包在Python里是有實際用處的不是炫技。典型場景是做帶狀態(tài)的計數(shù)器或者帶配置的函數(shù)工廠def make_counter(start0): n start def counter(): nonlocal n n 1 return n return counter這里的nonlocal是必須的否則n 1會讓n變成內(nèi)層函數(shù)的局部變量又觸發(fā) UnboundLocalError。3.3 global 和 nonlocal 該用到什么程度我的態(tài)度比較保守global在業(yè)務(wù)代碼里基本不該出現(xiàn)它意味著你要從一個函數(shù)深處改全局狀態(tài)這種耦合遲早會咬人。真要共享狀態(tài)用參數(shù)傳、用返回值接、或者用類封裝都比改全局變量好。nonlocal的情況要好一些因為它限制在嵌套函數(shù)之間影響范圍可控前面那個計數(shù)器就是合理的用例。但同樣一旦嵌套超過兩層nonlocal的追蹤成本就上來了我一般會把狀態(tài)改成一個小的類或者dataclasses實例。經(jīng)驗判斷如果你需要寫global才能讓函數(shù)工作先別寫回頭看看這個變量是不是該作為參數(shù)傳進去或者該作為返回值帶出來。90%的情況能改掉。模塊級別的常量全大寫那種讀是可以的改就免了。4. 返回值設(shè)計None、異常還是哨兵值4.1 多返回值是元組解包前先想清楚return a, b看起來像返回兩個值實際是返回一個元組。這帶來一個常見問題調(diào)用方寫x, y get_pair()如果函數(shù)在某條分支上只return None解包就會拋TypeError: cannot unpack non-iterable NoneType object。這類錯誤通常出現(xiàn)在異常分支跑正常流程永遠測不出來。我的做法是要么所有分支都返回相同結(jié)構(gòu)的元組要么干脆不返回元組。如果某條分支實在沒結(jié)果返回(None, None)而不是None至少解包不會炸。還有一個語法細節(jié)常被誤解def f(): return 這個字符串永遠不會被返回 def g(): return ( 括號里的內(nèi)容會被返回 )return后面換行語句就結(jié)束了下面的東西是死代碼。而括號里的內(nèi)容可以跨行因為括號構(gòu)成了隱式的續(xù)行。寫多返回值時長元組拆行記得用括號包起來。4.2 什么情況下該拋異常而不是返回 None這是函數(shù)設(shè)計里最影響長期維護的一個決定。我的判斷標準只有一條“查不到”和“出錯了”是兩種不同的事。查詢類操作查不到是正常業(yè)務(wù)結(jié)果返回None或空集合。比如find_user(uid)找不到用戶None合理。參數(shù)不合法、前置條件不滿足、外部依賴失敗這些屬于異常直接raise。千萬不要用返回-1、返回ERROR、返回False來表達“出錯了”。調(diào)用方永遠會忘記判斷而raise至少會在出錯的地方炸掉不會帶著錯誤數(shù)據(jù)繼續(xù)往下跑。哨兵值sentinel是第三種選擇適用于“None也是一個合法返回值”的場景_MISSING object() def lookup(store, key): if key in store: return store[key] return _MISSING value lookup(data, name) if value is not _MISSING: ...用object()創(chuàng)建一個獨一無二的標記比用None或者字符串__missing__安全得多因為不可能有業(yè)務(wù)數(shù)據(jù)恰好等于它。4.3 函數(shù)簽名本身就是文檔一個函數(shù)對外暴露的信息除了名字就是簽名參數(shù)名、默認值、類型注解、返回類型。我見過很多函數(shù)注釋寫了五行簽名卻是def handle(a, b, cNone, dFalse)讀者還得讀函數(shù)體才知道dTrue是什么意思。類型注解不是必須的但在稍大的項目里投入產(chǎn)出比很高from typing import Optional, Sequence from dataclasses import dataclass dataclass class Result: ok: bool message: str items: Sequence[str] () def parse_records(raw: str, *, strict: bool False) - Result: ...這里的注解有三個作用編輯器的補全和跳轉(zhuǎn)能用上調(diào)用方不看實現(xiàn)就知道傳什么strict前面有個*調(diào)用時必須寫名字不會被誤傳。這三條加起來比寫十行注釋都有用。5. 把函數(shù)當對象用裝飾器、高階函數(shù)與回調(diào)5.1 函數(shù)是對象的四個具體表現(xiàn)這句話被說濫了落到實際操作上到底是哪四條第一函數(shù)可以賦值給另一個名字alias original兩者指向同一個函數(shù)對象。第二函數(shù)可以作為參數(shù)傳給另一個函數(shù)sorted(items, keylen)里的key就是。第三函數(shù)可以作為返回值這是閉包和裝飾器的基礎(chǔ)。第四函數(shù)可以有屬性func.tag v2是合法的雖然少用。理解這四條之后很多“黑魔法”就變得平淡了。比如策略表def by_name(item): return item[name] def by_score(item): return -item[score] STRATEGIES { name: by_name, score: by_score, } sorter STRATEGIES.get(sort_key, by_name) items.sort(keysorter)這比寫一長串 if/elif 好維護得多新增排序方式只要往字典里加一行不需要改調(diào)用邏輯。缺點是如果某個策略需要額外參數(shù)比如升序降序純函數(shù)就不夠用了需要換成functools.partial或者小對象。5.2 手寫一個裝飾器以及為什么必須加 wraps裝飾器的本質(zhì)是“接收函數(shù)、返回新函數(shù)”。最簡版本import time def timing(func): def wrapper(*args, **kwargs): start time.perf_counter() result func(*args, **kwargs) cost time.perf_counter() - start print(f{func.__name__} 耗時 {cost*1000:.1f} ms) return result return wrapper timing def slow_job(n): time.sleep(n) return n這段能跑但有個副作用slow_job.__name__變成了wrapper__doc__也沒了。用functools.wraps修一下from functools import wraps def timing(func): wraps(func) def wrapper(*args, **kwargs): ... return wrapperwraps(func)會把原函數(shù)的__name__、__doc__、__module__、__qualname__、__annotations__和__dict__復(fù)制到新函數(shù)上。不寫這個日志里的函數(shù)名全是 wrapper調(diào)試時根本分不清是哪個函數(shù)打的。帶參數(shù)的裝飾器要多包一層這是很多人第一次寫會繞暈的地方def retry(times3, delay0.5): def decorator(func): wraps(func) def wrapper(*args, **kwargs): last None for _ in range(times): try: return func(*args, **kwargs) except Exception as e: last e time.sleep(delay) raise last return wrapper return decorator三層結(jié)構(gòu)記法最外層收裝飾器自己的參數(shù)中間層收被裝飾的函數(shù)最內(nèi)層是真正的替換函數(shù)。寫的時候數(shù)一下括號層級基本不會錯。注意裝飾器堆疊時執(zhí)行順序是“離函數(shù)近的先包離函數(shù)遠的先執(zhí)行外層邏輯”。兩個裝飾器寫反了行為可能完全不同尤其是涉及異常處理和計時的組合。5.3 lambda 和 map/filter 的適用邊界lambda唯一的正當用途是邏輯只有一行、并且只在這里用一次。典型的就是sorted(keylambda x: x[1])、max(items, keylambda r: r.score)。超過一行、或者需要命名就老老實實寫def起一個有意義的名字。map和filter在Python里其實不如列表推導(dǎo)式好用因為推導(dǎo)式能直接表達條件、能做嵌套、可讀性更好nums [1, 2, 3, 4, 5] # 不推薦 list(map(lambda n: n * 2, filter(lambda n: n % 2 0, nums))) # 推薦 [n * 2 for n in nums if n % 2 0]map真正有價值的地方是配合已有函數(shù)用不用寫lambdalist(map(str.strip, lines))、list(map(int, parts))。這時候它比推導(dǎo)式短也不損失可讀性。至于filter我基本不用[x for x in xs if cond(x)]就夠了。6. 遞歸、調(diào)試與把函數(shù)拆開排查6.1 遞歸的兩個必要條件與深度限制遞歸寫錯無非兩種忘了終止條件無限循環(huán)直到棧溢出或者終止條件寫錯結(jié)果偏了一位。Python 默認的遞歸深度限制是 1000可以用sys.getrecursionlimit()查但我不建議隨便調(diào)大——Python 沒有尾遞歸優(yōu)化每一層調(diào)用都真實占棧幀調(diào)到一萬層基本就是賭機器不死。def flatten(items): out [] for it in items: if isinstance(it, list): out.extend(flatten(it)) else: out.append(it) return out print(flatten([1, [2, [3, [4]]], 5])) # [1, 2, 3, 4, 5]這個例子里終止條件是“遇到非列表元素就直接收進結(jié)果”遞歸條件是“遇到列表就下去一層”。寫遞歸的時候我習(xí)慣先寫終止條件再寫遞歸調(diào)用順序反了很容易漏。如果數(shù)據(jù)層級可能很深比如解析嵌套很深的配置用顯式棧的迭代版本更穩(wěn)def flatten_iter(items): stack list(reversed(items)) out [] while stack: cur stack.pop() if isinstance(cur, list): stack.extend(reversed(cur)) else: out.append(cur) return out或者用生成器加yield from寫法更簡潔也天然帶惰性求值。6.2 用函數(shù)拆分把 bug 逼到角落里排查問題的效率很大程度取決于函數(shù)切得夠不夠細。一個兩百行的函數(shù)出了錯你只能一行行讀切成八個二十行的函數(shù)你可以寫個臨時腳本單獨調(diào)用中間那一個輸入一份構(gòu)造好的數(shù)據(jù)直接看它返回什么。我的排查順序一般是先確認輸入。在函數(shù)入口打印或者用breakpoint()停下看參數(shù)到底長什么樣。很多“邏輯錯誤”其實是上游傳了個空列表或者字符串。再看返回值。在每個return前面打印一次確認走到的是哪條分支。同一個函數(shù)有五個return報錯時你根本不知道從哪出去的。如果中間狀態(tài)復(fù)雜把可疑的那一段臨時抽成獨立函數(shù)單獨測。這一步很關(guān)鍵耦合在長函數(shù)里的邏輯無法隔離驗證。最后才去懷疑庫和外部依賴。順序反了會浪費大量時間。順帶推薦一個習(xí)慣函數(shù)里盡量只做一件事尤其不要“邊計算邊寫文件”。把副作用挪到調(diào)用方函數(shù)本身保持純輸入輸出測試成本會低一個數(shù)量級。6.3 一組函數(shù)相關(guān)的報錯對照下面這些錯誤信息學(xué)函數(shù)這章的時候基本都會撞一遍。能讀懂它們調(diào)錯速度會快很多。報錯信息典型原因處理方向NameError: name x is not defined變量沒定義、拼寫錯誤、或者定義在另一個函數(shù)里檢查作用域確認變量在當前位置可見UnboundLocalError函數(shù)內(nèi)某處對變量賦值導(dǎo)致編譯器判定為局部變量加global/nonlocal或改名避開TypeError: f() missing 1 required positional argument少傳了必填參數(shù)檢查簽名和調(diào)用處必要時給默認值TypeError: f() got an unexpected keyword argument關(guān)鍵字參數(shù)名拼錯或該參數(shù)是僅位置的對照def行核對名字TypeError: f() takes 2 positional arguments but 3 were given多傳了位置參數(shù)通常是把關(guān)鍵字參數(shù)寫成了位置形式給后面的參數(shù)加名字TypeError: cannot unpack non-iterable NoneType object函數(shù)某條分支返回了 None調(diào)用方按元組解包統(tǒng)一各分支返回結(jié)構(gòu)RecursionError: maximum recursion depth exceeded缺終止條件或遞歸分支沒有收斂補基礎(chǔ)情形或改成迭代SyntaxError: non-default argument follows default argument有默認值的參數(shù)寫在了無默認值參數(shù)前面調(diào)整參數(shù)順序把帶默認值的放后面最后一行那個錯誤值得單獨說一句def f(a1, b)是語法錯誤但def f(a, b1)沒問題。這條規(guī)則和調(diào)用時的“位置參數(shù)必須在關(guān)鍵字參數(shù)前”是同源的記住“有默認值的往后靠”就不會錯。把這幾節(jié)的內(nèi)容串起來看函數(shù)這塊真正的難點從來不是語法。def、return、*args、裝飾器符號這些半小時就能背完。真正花時間的是那些需要寫夠代碼量才會浮現(xiàn)的問題默認值被共享、閉包捕獲到最后一個值、異常分支返回了 None 導(dǎo)致解包炸掉、長函數(shù)里根本定位不到出錯的那一行。我自己寫代碼這些年最有用的兩個習(xí)慣都和函數(shù)有關(guān)——一個是給每個函數(shù)寫清楚它的輸入輸出契約寧可在簽名上多花五分鐘另一個是看到重復(fù)就抽但抽之前先問自己“這段邏輯以后會一起變嗎”。這兩個習(xí)慣幫我省下的排查時間比學(xué)任何高級語法都多。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
国产午夜伦鲁鲁| 九九热精品| 成人做爰高潮A片免费视频| 广东99色在线| 日本高清久| 精品99在线| 丁香六月婷婷缴情欧美| 99精品性爱| 九九久久综合网站| 在线区区区| 婷婷六月天| 五月激情六月丁香| 婷婷一本和五月丁香| 激情久久网| 五月天色社区| 99九九热在线观看| 5月婷婷激情网| 婷婷色影院| 国产亚洲99久久精品熟| 天天日天天操心| 17.c黄色| 婷婷五月六月丁香综合| 激情婷婷丁香五月| 婷婷丁香人妻| 3p日韩网站视频| 五月丁香六月婷婷久久| 激情综合网婷婷五夜| 欧美大道不卡| 九九在线这里只有精品视频| 国产综合激情五月久久| 欧美天天五月丁香免费观看| 欧美熟女99| 91九九九九九九| 久久伊人9| 狠狠色丁香婷婷基地| 五月叮香啪| 国产夫妻操逼内射视频| 综合婷婷久久| 久久婷婷视频| 久久精品爱爱| 日韩啪啪网| 五月天丁香花婷婷| 任你搞在线观看视频| 久久久久久久人妻| 国产做爰视频免费播放| 亚洲爆乳无码精品AAA片蜜桃| 九九精品热播| 无码九九| 五月丁香久久综合| 天天综合久久| 九九久久99| 日本三级网址| 大香蕉婷婷丁香| 亚洲啪| 国产FREESEXVIDEOS性中国| 欧美日韩成人在线网| 国产热精品| 五月天激情综合在线| 九月综合| www.xtbsty.cn.com蜜乳AV| 91人人操人人爱| 国产成人在线不卡AV| 久久婷婷六月综合综合| 天天操加勒比| 激情五月天综合网站网站网站| 91热99| 婷婷久久99| 伊人九九综合| 66精品国产成人| 伊人九九热| 超级碰碰碰碰视频| 激情五月综合网| 综合啪啪| www.狠狠干com| 丁香六月婷婷色XXXX| 天天艹夜夜爽| 五月天四色房丁香亭亭| 丁香色六月婷婷| 日本69日人视频| 成人视屏在线观看| 婷婷丁香五月天综合网| 婷婷色网站| 这里只有精品免费观看网占| 国产精品日日躁夜夜躁| 1024人妻| 91精品丝袜久久久久久久久粉嫩| 综合色99| 亚洲国产色色| 婷婷5月天激情综合| 九九视频网| 六月伊人婷婷| 色色色在线观看| 激情五月丁香六月综合AVXXXX| 超碰不卡在线| 99精品无码| 专区无日本视频高清8| 播丁香五月婷婷欧美| 人五月天婷婷喷水| 五月天亚洲图片婷婷| 男人天堂亚洲综合| 丁香九月综合激情| 亚洲综合五月天婷婷| 狠狠狠狠狠狠草| www,com,五月色色| 婷婷五月婷婷五月天| 97 A I色色| 婷婷丁香色情| 丁香婷婷综合影院| 人人爽人人射-美女久久久久久久久久-成人AV| 人人摸人人搞| 婷婷五月天首页| 久久天天| 久久A极片| bukadeavzaixian| 色综合丁香| 五月天激情婷婷五月天久久| 三级三久久线久久99久目本WW| 伊人综合网站| 7月婷婷六月丁香| 天天夜天天色天天| 国产精品人成A片一区二区| 色婷婷丁香AV综合| 99re这里有精品手机在线| 婷婷五月免费视频| 99热99日天天干| 欧美三日本三级少妇三99| 色色啊| 5五月综合网亚洲| 欧美一级色| 秋霞少妇毛片| 五月丁香激情婷婷综合| 性做爰1一7伦| 快乐婷婷五月天| 天天插天天干| 色婷成人狠干| 日韩欧美一级大黄网站| www.9操| 九九精品自拍| 99热| 婷婷色片| 丁香五月成人| 五月开心久久| 99视频只有这里精品| 色综合久| 色玖玖综合| 五月丁香WWW| 九热免费视频| 日韩AV在线免费观看| 激情五月婷婷综合视频| http:色情日本com| 国产探花AV在线| 婷婷五月情| 色色色婷婷五月| 婷婷五月六| 操碰色一区就去操| 99在线精品视频免费观看20| www。五月,com| 久热这里只有国产| www色色com| 成人婷99最新| 天天爽天天干| 天插天啪天啪天啪| 中文字幕综合色| 天天拍夜夜爽| 精品国产a| 丁香五月天av| 日噜噜色| 激情五月综合| 五月丁香婷婷在线| 天天爽天天干| 插插插色综合网| 99re6在线视频精品免费| 久久综合中文| JAPANRCEP老熟妇乱子伦视频 | 少妇熟女视频一区二区三区| 色婷婷丁香特级性爱视频| 开心五月色婷婷综合开心网| 九九热视频免费| 婷婷综合九色伊人| 婷婷社区五月天| 亚洲AV无码一区二| 激情五月丁香五月| 开心五月婷婷在线视频免费观看| 成人国产网| 五月婷婷综合潮喷| 91碰| 日欧一片内射VA在线影院| 米奇激情婷婷| 任你日热视频| 久久九九网| 色婷婷五月天激情综合| 色色五月丁香婷婷综合| 国产亚洲在线观看| www.夜夜騎夜夜狠| 日本综合色色| 啪啪日热| 9久视频| 狠狠操狠狠爱| 婷婷丁香五月天操逼| 五月天另类视频| 9月色婷婷| 六月婷婷中文字幕| 免费五月婷婷网| 久操人| 久久久久久9| 激情无码五月天| 久久AAAA片一区二区| 秋霞三及片| 婷婷五月,偷窥偷拍网| 五月丁香精品| 色偷偷狠狠| 欧美色色色色色色色色色色| 无码激情AAAAA片-区区| 亚洲另类婷婷综合| 26uuu另类| av激情在线| 色九月婷婷| 九九色综合九九色| 婷婷五月免费在线| 婷婷丁香视频在线观看免费| 久久综合婷婷五月| 婷婷五月激情基地| 色五月婷婷网| 99在线视频资源| 激情五月伊人婷婷| 五月综合丁香婷婷| 五月婷婷精品视频| 极品少妇高潮啪啪AV无码| 69综合在线| 丁香激情五月| 亚洲国产无线乱码在线观看| 五月停停丁香| 久青青久| 91精品人妻少妇无码影院| 思思精品视频| www.色9| 思思久久网| 亚洲午夜成人av电影网| 色综合激情| 五月天啪啪| 99热欧美| 色综合久久88色综合天天看| 久久久久视剧HD| 丁香九月激情| 伊人激情综合网| 五月天激情子轮| 无码一区二区日韩| 激情五月开心五月在线视频| 婷婷九月激情| 人人摸人人操人人爽| 中文字幕操比影片| 国产AV熟妇人震精品一品二区| 五月天婷婷激情在线色图| 丁香婷婷免费| 99热这里只有精品13| 99久久婷婷国产综合| 超级97碰碰| 超碰99热精品在线| 曰本aaaaaa丈片| 思思9久久| 五月综合久久| 91超级碰在线视频| AV色婷婷| 婷婷爱爱蜜臀天天操| 玖玖九九9999在线观看视频精品| 欧美97超碰| 国产AV一区二区三区最新精品 | 99热6色| 久久与婷婷| 五月丁香成人网| 激情五婷网| 色婷婷网大全在线| 爱iii做iiii日日| 色综合色色| 久操婷婷| 婷婷五月欧美综合| 97碰碰草| 在线99精品| 久久天堂婷婷五月| 99热播放| 综合激情网五月激情| av中文在线| 久99视频在线观看| 97香蕉碰碰人妻国产欧美| 欧美日韩99| 欧美在线视频99| 日本三级日本三级99| 欧美人妻一区二区| 中文成人在线| 99精品偷拍视频| 欧美三级级99久久| www.久久久.com| 97婷婷丁香| 日本99视频| 天天五月香欧美| 开心婷婷五月花| 先锋av性爱成人电影| 99热在线观看这里只有精品| 丁香五月自拍| 五月丁香六月合| 色色综合网络| 色五月网址| 激情久久久| 成人在线观看精品| 九九精品热播| 九九久久这里只有精品XB| 色婷婷五月天小说| 99精在线| 91人人人人人人人| 久久婷婷色| 色五月丁香一区在线| 五月综合婷婷久久在线| 亚洲欧美婷婷五月色综合| 夜夜躁狠狠| 五月丁香婷婷中文网| 日本色狠狠| 婷婷色情网| 成人精品视频99在线观看免费| 曰本久久女| 日本久久人| 人人爽在线视频综合网| 丁香五月激情五月| 99国产精品久久久久久久久久久| 亚欧州精品视频| 丁香婷婷激情五月| 五月婷婷无码| 国产成人亚洲综合A∨婷婷| 丁香激情久久| 1234操逼网| 亚洲中文无码成人| 婷婷狠狠18禁久久| 激情精品久久| 精品九九视频| 五月丁香六月激情| 97操在线视频| 丁香六月婷婷综合缴| 激情五月婷婷| 香蕉大综综综合久久| 五月婷婷六月丁香综合视频在线| 噜噜噜狠狠色综| 三级黄色大片视频| 伦乱美欧| 综合网亚洲| 久久久久久久久99精品| 97色综合视频| 丁香婷婷久久老熟女综合网| 99综合| 久久婷婷五月综合色奶水99啪| 新激情五月天色播| 大战熟女丰满人妻AV| 4399在线观看免费高清黄色视频| 婷婷五月丁香香蕉| 五月天啪啪网| 五月天婷婷开心| 色播丁香| 久热大香蕉| 日日干日日| 五月九九综合| 人人人人人人人草| 99操九九网| 97丁香花五月天激情小说| 亚州操操| 婷婷激情四射网| 思思国产99| 一级AV片| 超碰狠狠色| 青青草国产亚洲精品久久| 丁香五月影院| 99热在线99| 九九色综合九九色| 久久99热只有精品| 另类激情综合| WWW.激情| 在线成人va| 丁香五月婷婷呀| 丁香五月欧美| 色狠狠六月| 成人精品视频99在线观看免费| 久久这里只有精品5| 亚洲精品国产setv| 天天干,天天舔| 五月丁香六月婷婷久久| 久鲁鲁色网 | 五月天综合激情网| 夜夜久久综合网| 色婷婷五月天偷拍| 五月激情综合网| 超碰在线国产| 婷五月天在线草| 丁香久久| 狠狠色综合久久| 国产探花一片区| 久操人| 免费在线观看欧美激情xx小视频| 久久婷婷五月综合啪| 色五月av| 99热日韩这里只有精品| 97操资源婷婷| 91婷婷丁香五月| 伊人网碰碰| 涩五月婷婷| 日操| 日韩天堂久久| 狠狠操综合| 亚洲色婷婷色| 婷婷五月天丁香久久| 五月天成人综合| 91婷色| 依人大香蕉| 亚洲激情色色| 色色色婷婷五月天| 五月天丁香色色| 久久伊人五月天| 在线中文字幕视频| 五月丁香六月激情| 婷婷六月色开| 五月丁香六月婷婷综合| 97热视频| 五月丁香六月激情综合| 六月色伊人婷婷| 九九热9| 九九综合| 成年人99热| 亚洲无码黄色| 少妇高潮呻吟A片免费看软件| 99性爱精品| 婷婷久久99| 少妇2做爰HD韩国电影| 这里只有精品免费视频| Av性爱网| 亭亭色网| 人人操大| 中文字幕网伦射乱中文| 伊人五月天在线| 丁香五月婷在线| 91久热| 亚洲天堂制| 天天爽天天干| 超碰二区| 国产性爱亚洲是图| 久久婷婷五月综合色播| 丁香五月婷婷亚洲人| 免费在线观看av网站| 色中色综合| 看逼中文字幕| 激情婷婷五月天| 色色亚洲五月天| 国产夫妻操逼内射视频| 91九色|疯狂|高潮|对白|| AV色色天堂中文| 婷婷五月天电影网| 丁香五月婷婷啪| 狠狠干综合网| 深爱激情网综合| 亚洲久久视频| 日韩色色小视频| 国产婷婷五月天| 久在线综合69| 色九月综合| 9999久久久久| 国产精品涩涩涩视频网站| 五月婷婷天堂| 大香蕉伊人99| 久草视频一,二三四| 五月丁香免费看| 激情五月天免费视频| 久色网| 六月婷久久| 亚洲视频久久| 99丝袜精品视频网站| 超碰亚洲欧美| 久久久久久久人妻| 丁香五月婷婷基地| 荷兰av一级| rr天天操| 九色啦蜜臀| 这里只有精品在线视频在线观看| 五月天婷婷在线播放| 开心五月色婷婷综合开心网| 丁香五月色情| 五月花综合视频| 五月天激情开心网| 逼里香不卡| 婷婷五月情天| 五月丁香啪啪| 伊人婷婷大香蕉| 欧美日韩123| 激情四射网| 久9视频| 色色色免费视频| 99热久| 五月丁香影视| 《亚洲操B久久免费在线观看,亚洲操B久久在线播放》在线播放 - 高清资源 - 97 | 色综合色欲综合天天免费| 婷婷五月在线综合| 五月丁香花免费视频| 操丝袜视频影院导航| 性生生活大片又黄又| 天天爽天天爽| www,黄色在线,con| 九月激情综合婷婷| 噜噜噜噜噜在线| 婷婷五月天在线综合导航| 亚洲五月天天| 成人丁香五月| 五月天播播| 亚洲亚洲人成综合网络| 婷婷色一二三区波多野结衣| 99乱视频| 婷婷激情综合色五月久久,色婷婷丁香花,丁香婷婷五月情天,久久婷婷五月综合色 | 99久久九九| 中文不卡一二三区| 五月天婷婷中文字幕在线播放| 久久九九热视频| 欧美久久网| 亚洲黄色影视| www99xxxx五月丁| 99精品国产热久久91色欲| 丁香婷婷六月婷婷六月婷婷六月婷婷| 久久婷婷艹| 九色99视频| 五月天婷综合| 亚洲无码成人性爰网| 草综合14| 99在线精品免费视频| 4399精品一区二区| 日本熟女视频一区二区| 久久性爱视频网站| 欧美美女视频| 任你日视频| 玖玖九九99| 激情小说五月天| 婷婷91| 日本天堂久久| 色五月婷婷五月久久| 五月天婷婷乱论小说| www.夜夜操.com| 成人va在线| 天天综合情| 色五月激情五月天| 青草青草视频2免费观看| 超碰色女| 五月涩涩网| 婷婷伊人网| 超碰妻人人| 激情五月天在线观看色婷婷| 男人的天堂五月丁香| 被强行糟蹋的女人A片| 99狠狠| 这里只有精品在线免费视频| 亚洲色婷婷激情| 色爱综合网| 91碰免费视频| 婷婷亚洲五月丁香综合在线 | 亚洲精品网址| 亚州性爱99| 色999五月色| 色色五月综合| 天天色官网| 日本熟妇乱妇熟色A片蜜桃| 欧美大道不卡| 色色色热| 婷婷五月天丁香久久| 色久播播| 91大神操美女| 日本黄 色 片| 婷婷六月丁香色| 99精品在这里| 精品久久99| 天天日天天日天天搞| 六月婷婷激情| 婷婷五月天成人在线视频| 丁香五月人妻| 日本九九视频| 九九热免费视频| 五月天激情日色在线| www.久久66| 狠狠爱综合网| WWW丁香五月| 天天爽成人综合网站| 九九九热精品| 99超级碰免费视频| 色婷婷WWW| 色综合久久天天综合网| 99久久99综合| 五月婷丁香久久久| 99热偷拍| 欧美三级韩国三级日本三斤| 婷婷5月天激情综合| 五月激情小说| 丁香六月婷婷综合网| 风流少妇A片一区二区蜜桃| 狠狠看狠狠| 成AV人片一区二区三区久久| 丁香婷婷六月激情| 色婷青青| 伊人色欲五月天| 丁香五月天堂网| 精品无码色欲AV| 欧美成人精品A片免费一区99| 中文字幕+乱码+中文字幕在线观看| 综合网激情| 99r久久这里只有精品| 亚洲日韩一页精品发布| 夜夜骑日日操| 丁香五月婷婷色综合| 另类视频丁香五月| 色色影院黄大片| 五月天操逼网| AA片在线观看视频在线播放| 97婷婷五月| 久操人| 五月丁香啪综合| 午夜丁香| 字幕网AV中文字幕| 99综合网| 欧洲99视频在线| 粉嫩AV久久一区二区三区| 99爱免费视频在线观看| 色色婷婷色色| 丁香五月婷婷五月| 亚洲第一视频 久久| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 日韩五月婷婷| 婷婷五月丁香人妻无码高清| 午夜天堂啪啪| 五月丁香激情婷婷综合| 五月婷婷激情日本| 97操碰| 九九这里都是精品| 色情五月天小说| 九色99视频| 97精品自拍视频| 婷婷五月黄色激情在线| 五月婷久草| 婷婷五月丁香基地| 色五月婷婷丁香五月| 成人婷99最新| 日韩1区2区| 玖玖婷婷免费| 色婷婷19| 丁香五月偷拍| 玖玖在线资源视频| 日韩 中文 欧美| 精品夜夜澡人妻无码AV| 精品A√| 天天更新天天亚洲| 九九九九综合| 色偷偷色婷婷| 爱久久小说下载网| 激情综合网激情五月天| 色五月视频无码播放| 99狠狠色| 色吊丝99| 久久婷色| 噜噜干日本| 天天日日爽| 亚洲精品成人| 99热第一页| 国产精品久久久久久久久久| 98色花堂98t.R| 久久午夜理论| 小视频在线亚洲| 五月天激情啪啪| www五月婷婷88导航| 丁香色色网| 久热黄色| 色婷婷精品视频| 久久激情五月天| 啪啪91| 狠狠操狠狠操| 成年人99热| 99 频99热国里只有精品| 婷婷五月综合社区| 日本在线99| 丁香婷婷五月天成人| 91色久| 99啪啪| www.精品99| 五月丁香六月婷婷操操操| 99热99色| 色天堂操| 丁香99| 欧美一级a | 五月天久久婷婷| 色五月大| 人妻久久人妻久久第一区| 五月色婷婷激情| 五月天婷婷色播在线网| 日本婷婷丁香五月| 丁香网五月网| 思思re视频在线| 99爱免费在线视频| 热99只有精品| 五月丁香色狠狠干大屄| 色5月婷婷| 五月天婷婷成人资源站| 天天干天天干天天干天天干天天干天天干天天 | 天天综合 99久久婷婷| 亚洲国产网站| 中文字幕av在线播放| 日本久热| 五月婷婷啪啪| 五月激情小说| 色色色五月天婷婷| 日本在线观看aaa 99| 狠狠干狠狠操狠狠爱| 色婷大香蕉| 99ri国产精品| 9久久AV| 色域五月婷婷丁香| 婷婷六月丁香开心深深爱| 五月丁香婷婷无码中文| 色情性爱视频网址| 婷婷丁香六月激情综合| 丁香婷婷五月份| 久久久久98| 欧美日韩日韩成人| 非洲一级AV| 第二色AⅤ| 婷婷四色成人综合色视| 久久激情五月天| 久久香蕉丁香| 五月丁久久| avv在线| 99精品九九| 久操干| 欧洲一区二区| 丁香婷婷激情五月色| 天天插插天天| 99热这里全都是精品| 91在线人| 色婷婷视频| 色五月丁香A欧美com| www.久久久久久久久久久| 久久99这里只有精品| A网在线欧洲| 久久曰曰| 丁香五月婷婷激情中文| 99re6热在线精品视频播放速度| 伊人网色婷婷五月天| 色婷婷免费视频| 99热在线极品极品| jiujiu热在线视频| 色婷婷精品视频| 国产成人AV| 色婷五月| 精品久久这里热66| 久操乱| 丁香 婷婷 激情 综合 五月| 丁香婷婷五月基地| 在线另类| 五月丁香婷婷综合久久| 婷婷六月丁香五月| 亚洲国产精品VA在线看黑人| 丁香五月综合高清在线| 婷婷中文无码| 久久婷婷五月综合色丁香| 男人综合网| 五月丁香婷婷啪啪| 丁香六月啪啪啪| 这里只有精彩视频| 黄色激情网站在线观看| 日本丁香五月婷婷| 天天噜噜| 五月婷婷影院| 夜夜操狠狠操| 日本视频欧美观看免费| 丁香色情五月综合网站| 亚洲字幕AV一区二区三区四区| 亚洲av免费在线| 欧美激情VA永久在线播放| 久久婷婷青青草| 婷婷五月天深爱| 这里只有精品视频| 久婷五月| 伊人91| 97婷婷狠狠| 久久精品9| 日本天堂免费99| 丁香五月天综合| 婷婷五月综合色小姐小说| 婷婷五月婷婷五月天| 激情六月婷婷| 碰超亚洲| 丁香六月爱综合| 4438亚洲欧美| 丁香五月AV综合激情| 日产精品久久久久久久蜜臀| 激情综合4月| 久久99视频| 国产99美少妇| 极品人妻VIDEOSSS人妻| 五月婷婷综合激情| 青青草五月天| 欧美激情五月天在线观看| 99九九久久| 丁香六月激情综合网| 高清一区二区三区日本久| 狠狠另类视频| 色狠狠色噜噜AV天堂五区| 婷婷五月开心中文字幕在线| 日本色色影片| 国产黄色一级片| 婷婷五月电影| 这里只有精品视频222| 久久久97| 亚洲99激情| 久久国产一区二区三区| 韩国三级五月天婷婷。| 欧在线一区| 婷婷激情人妻| 99色在线视频| 乱岳熟女50岁| 人人爽亚洲| 91婷婷丁香五月| 夜夜操夜夜操| 天天夜天天色天天| 成人短视频免费| 香蕉综合在线| 久久亚洲色导航| 五月色婷丁香| 超碰在线精品| 五月天小说激情| 国产av第一专区| 成人五月丁香社区| 蜘蛛女免费观看完整版高清电影| 五月婷婷激情在线| 五月婷激情影院| 丁香六月婷婷综合激情欧美 | 五月丁香激情片| 九九婷婷激情综合网| 5月婷婷激情在线| 99热久| 无码激情AAAAA片-区区| 五月天 婷 欧美亚洲| 狠狠搞五月天| 久久丁香九| 五月丁香婷婷基地| 婷婷精品综合| 67194成I人在线观看线路1| 欧美成人猛片AAAAAAA| 开心激情网五月天| 婷婷五月综合欧美在线播放| 亚洲色五月婷婷| 色色国产| 五月天成人在线视频网站| 欧洲亚洲最新精品| 色色五月天com| 欧美成人一区二区三区在线视频| 五月丁香啪啪| 丁香六月激情蜜桃| 九九色逼| www综合久久| 女人高潮内射99精品| 在线观看欧美| 激情五月婷婷中文字幕| 丁香五月六月久久综合| 九九久久污| 激情内射人妻1区2区3区| 丁香五月婷婷亚洲色图| 亚洲久热无码| 激情五月天在线观看色婷婷| XX久久| 色网五月婷婷| 久久久中文| 久9热视频| 九热视频| 99热国内| 亚洲AV日韩无码| 丁香六月婷婷开心婷婷网| 久久久国产精品黄毛片| 五月婷婷六月激情| 日韩淑女人妻luan伦激情精品一区二| 五月天婷婷永久免费视频| 66精品国产成人| 2017狠狠干| 久久婷婷五月综合网| 中文字幕日本最新乱码视频| 综合色播| 91久久久久久久| 五月久久婷婷| 开心五月天激情网| 中文av网站| 天天爽天天爽天天爽天天爽天天爽天天爽天天| 久久狠狠干| 九九色大香蕉| 开心五月婷婷综合在线精品素人| 99久久婷婷综合| 亚洲黄色网址| 五月婷婷影视| 成人做爰高潮A片免费视频| AV九九| 噜噜视频| 婷婷久久五月| www.色婷婷| 色五月丁香五月| 97色色色色色| 99热99色| 中文字幕综合网| 九色视频91| 夜夜爱网站| 九九色热| 极品人妻VIDEOSSS人妻| 99综合视频一体| 国外亚洲成AV人片在线观看| 婷婷丁香五月综合| 7EzOBIhNq85TO| 97人妻超级碰碰碰碰碰| 天堂在线伊久| 综合五月激情| 97热久久| 精品99在线看| 高潮毛片遮挡费高一百度| 成人婷婷五月天| 六月丁香激情最新更新| 精品免费99| 激情丁香五月天图片| 99视频网址| 丁香婷婷五月天激情四射| 五月综合久久| 99综合| 狠狠干五月| 六月婷欧美丁香综合| 六月婷婷最新网址| 日本人人干| 亚洲VA欧美VA| 天天橾夜夜爽| 色五月婷婷老师| 99爱视频在线| 午夜成人av在线| 婷婷六月视频| 六月婷婷成人| 婷婷五亚洲| 久久婷婷网| 天天日天天插| 九九成年视频| 99A级片| 五月天激情网址| www.丁香黄色五月天人与| 亚洲va在线∨a天堂va欧美va| 噜噜干日本| 天天爱天天操| 性爱激情小说AV五月丁香花| 97福利视频| 日本va欧美va欧美| 色呦呦美女| 三十熟女| 五月丁香久人妻中文| 久久成人性爱| 五月天婷婷久久| 五月天色区| 月丁香久久久| 亚洲免费看片| 五月激情网综合| xx久久| 国产精自产拍久久久久久蜜| 九九视频在线观看视频6| 天天婬色综合| 国产免费一区二区在线A片视频| 九九热这里只有精品31| 狠狠插狠狠操| 色八戒操婷婷| 婷婷五月激情六月丁香| 五月激情六月综合| A片女女女女女女BBBB| 久99精品视频| 深爱五月天天| 99色视频在线| 五月天怕怕| 热久久66| 另类激情综合| 日韩无码系列| 99这里的视频都是精品| 五月六月婷| 超碰免费成人网站| 97av在线视频| 激情综合五月天| 成人国产网| 99视频内射三四| 婷婷综合在线| AV片在线观看| 色五月丁香总合网| 强伦轩人妻一区二区电影| 亚洲日韩成人三级av| 丁香婷婷综合激情五月色,开心五月丁香花综合网,激情综合五月亚洲婷婷,五月天 | 欧美色色色色色色色色| 9久热这里只有精品视频| 婷婷五月丁香久久| 亚洲黄3级片网站欧美| 五月婷深深爱激情网| 婷婷五月天AV| 99er这里只有精品视频| 五月婷婷六月情| 日美三级| 激情五月天网页| 五月综合激情婷婷六月色窝| 九月丁香婷婷| 成人网站免费在线播放| 婷婷趴趴| 丁香婷婷成人网| 日本在线观看99| 成人五月天在线观看| 91久热| 五月丁香婷婷综合久久| 五月婷婷啪啪| 五月亭久久无码视频| 99热这里有精品2| 噼里啪啦完整版中文在线观看| 这里都是精品99| 激情久久五月天| 精品婷婷| av网址在线| 久9热视频在线观看| 中文字幕激情综合| www.久9| 五月天婷婷综合| 成人在线高清| 九九人人精品| 日韩成人网址| 99精品在线| 五月花婷婷在线精品视频| 五月丁香777| 亚洲性受XXXX五月丁香| 欧美激情综合| 天天舔天天摸天天射| 青青草免费公开视频| 五月天天天操天天爽夜夜操| 少妇高潮呻吟A片免费看软件| 婷婷黄色五月天在线视频| 亚洲精品视频在线播放| 六月综和久久| 99原创自拍视频在线观看| 亚洲综合在线丁香五月| 婷婷丁香五月天色色| 综合久久人妻| 九月av| 婷婷六月激情| 丁香五月天在线观看视频| 超碰国产在线| 色五月丁香激情| www。五月,com| 九九99视频| 99热免费精品| 色情综合网| 九月婷婷丁香| 99精品综合在线| 99九无网码| 综合色色婷婷| 免费无码毛片一区二区A片| 色综合综合色| 午夜丁香综合婷婷| 狠狠草在线观看| 精品一区二区三区四区五区六区介绍 | 欧美成人日韩| 永久思思热在线| 久久婷青青草原| 婷婷激情图片| 亚洲国产精品成人免费一区久久久在线观看AAAA | 丁香五月婷婷色综合基地| 欧在线一区| 九九热10| 夜夜做天天爽| 中文字幕不卡视频| 综合激情视频| 99热这里只有精品最新| 九九精品热播| 内射人妻视频国内| 婷婷五月天综合在线| 大香蕉久艹| 影音先锋男士资源网一区| 五月天激情小说网| 99在线免费视| 色婷婷情片| 久久性视频| 国产va视频| 深爱激情中文五月天av| 婷婷色网址| 九九激情| 成人丁香婷婷| 久鲁鲁色网| 九月av| 色五月激情五月| 欧美丁香五月97色| 亚洲色色精品| 99日本黄站| 日本道久久91| 91精品久久久久久| 五月婷婷六月奇米网丁香| 欧美影院婷婷| 日逼影音先锋男人资源站| 久久国产色| 日本在线va| 天天摸,天天爽| 999婷婷综合| 色99免费视频中文| 色婷五月天| 日本人妻A片成人免费看片| 噜噜网免费视频| 日本va网站| 三级三久久线久久99久目本WW| 激情五月天。| 婷婷五月天社区| 婷婷五月色| 天天操人人干| 99色一| 丁香五月婷婷姐| 日本啪啪网| 天天操五月天| 热99.com婷婷| 色狠狠色噜噜AV天堂五区| 永久精品| 九九热中文| 婷婷五月激情五月激情| 亚洲熟妇AV综合网五月丁香伊人 | 五月好婷婷| 色色色欧美| 内射综合网| 九九热99免费视频| 91碰操| 91精品刘玥| 男人操女人高潮91视频| 欧美这里只有精品| 91碰碰碰| 欧美婷婷五月丁香| 五月天婷综合| 亚洲久久激情| 五月婷婷六月丁香激情| 影音先锋 婷婷| 色情播放| 99久久成人| 99re久热只有精品6在线直播| 亚洲午夜精品久久久久久人妖| 九九香蕉网| 夜夜资源站| 色婷丁香| 五月开心婷婷网| 欧洲不卡视频| 五月丁香婷婷啪啪| 欧美日本VA| 五月婷婷啪啪| 久久这里这里有精品免费视频| 久久五月天激情美女| 粉嫩av懂色av蜜臀av熟妇| 中文字幕在线不卡| 丁香久久| 久久久com| 啪啪啪大香蕉| 精品色色| 中文字幕在线免费观看视频| 成人做爰A片免费看网站找不到了| 97福利视频| 狠狠狠狠狠狠| 字幕网AV中文字幕| 超碰A V在线| 9久操| A在线观看| 一级片sese片.COM| 久草热视频在线观看| 久久久噜噜噜操操操| 超级碰人人操人人干| 丁香五月婷婷av影院| 激情五月天色色色| 大香蕉久久婷婷| 伊人网啪啪| AV堂狠狠干| 激情五月婷婷综合视频| 人人爱天天摸摸天天爱| 五月丁香久久综合精品| 综合婷婷五月丁香在线观看| 99热精地址| 色5月丁香婷婷| 五月丁香亚洲综合| 欧美性生交xXxX久久久| 91大屁股在线| 色五月婷婷综合在线| 五月丁香婷婷在线综合蜜桃| 五月丁香综合精品| 噜啊噜在线| 我爱大香蕉| 青青草大香| 久久色五月| 狠色狠色狠色狠色狠色网| 五月丁香做爱视频| 国产成人+综合亚洲+天堂| 男妓跪趴把舌头伸进我的嘴巴| 国产无套精品一区二区| 丁香影院五月综合| 亚洲欧美成人在线| 激情色情五月天| 婷婷 伊人 久久| 五月婷婷六月色| 综合久久六月| 超碰91在线| 狠色色狠网| 天天影院色| 久久小说| 国产avapp 网| 天天天日天天天干| 久久丁香五月天| AV在线不卡播放| 日日噜噜夜夜狠狠久久丁香六月| 五月天成人网婷婷| 99久久五月婷婷| 亚洲精品字幕在线观看| 性爱七区| 天天搞夜夜叫| 99热免费| av中文字幕免费观看| 久久久久久久97| 天天成人丁香美女AV| 日本99视频| 99在线综合视频| 涩涩涩,com| 色99日韩| 五月色婷婷夜色| 亚洲色爽| 五月丁香影院| 国产一级黄色影片,| 五月丁香日本片| 五月丁香中文| 91打屁股免费看| 六月丁香激情综合网| 亚洲欧美婷婷五月色综合| 亚洲妇女熟BBW| www.五月婷婷| 六月丁香激情| 婷婷色色综合| 色五月丁香总合网| 综合色情网| 97热久久| 丁香五月中文字幕久色| 欧美在线视频99| 婷色五月| 色婷婷五月天在线观看| 91综合视频丁香| 婷婷色色播五月天| 另类图片五月天| 久久资源网五月婷| 91免费看片| 超碰色女| 五月丁香六月激情欧美综合| 99网| 色婷婷中文字母五月丁香| 任你爽视频| 超碰在线综合| 99精彩视频| 黄色91在线观看| 十月色综合| 色色色com| 丁香五月23111| 影音先锋男人女人| 五月天中文字幕在线婷婷| 日本狠狠干| 激情小说婷婷小说| 26uuu欧美| 老司机午夜福利视频金瓶梅| 婷婷五月电影院| 婷婷五月丁香久久| 婷婷伊人綜合中文字幕| 婷婷五月18永久免费网站| 激情婷婷网| 97国产精品女人碰碰| 美女五月狠狠| 97在线/日本| 九九综合色综合|