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
返回資訊列表
色五月婷婷丁香五月| 婷婷五月色综合| 秋霞少妇毛片| 精品国产乱码久久久久久免费| 丁香五月天黄色片| 色婷婷最新域名 | 五月综合激情视频| 五月丁了香蕉综合| 大香蕉伊人久久| 久久探花91swag| 色婷婷a v| 婷婷五月综合在线视频| 综合婷婷六月| 秋霞三级色戒| 色情·com| 91丨九色熟女丨首页| 俺去也婷婷| 日本久久爱| 天天插天天狠| 大香蕉九九| 久久五月婷综合网| 超碰九色| 激情综合色| 人人草人人爱| 欧美乱码国产一级A片| 婷婷网五月| 激情深爱综合| 婷婷五月天激情综合| 婷婷性爱网| 1024人妻无码中文字幕| 99热 日韩| 九九性视频| 丁香婷五月天开心六月| 99在线视频资源| 99re思思热久久| 亚洲中文乱字字幕线在永久| 婷婷丁香六月| 丁香五月网站| 丁香五月六月婷婷自拍| 天天添天天摸天天天天做| 激情综合5| 国产91九色| 涩丁香91| 这里只有精品网| 激情五月图| 婷婷爱爱蜜臀天天操| 人人操人人看97干| 色综合久久综合中文综合网| www.com色播五月天| 亚洲12p| 精品人妻一区| 国产精产国品一二三在观看| 大香蕉丁香婷婷| 五月天电影网| 亚洲秘 无码一区二区三区妃光/1| av中文在线| 亚洲久热| 色.五月综合网| 九九色热| 9色小视频在线观看| 一本色道久久综合狠狠躁一二三| 久久人妻熟女一区二区| 极品少妇高潮啪啪AV无码| 色五月人妻| www色色com| 99精品在线播放| 玖玖色综合| 天天插综合| 亚洲中文字幕av| 超碰人人色| 国产av天堂| 亚洲精品久久久无码| 超碰97在线操| www.91.com黄| 亚洲激情色色| 黄色五月婷婷| 婷婷色色综合| 1024人妻| 六月婷婷在线视频| 色区久久| 嫩草视频观看| 天天日人人| 激情小说之五月| 婷婷亚洲五月| 亚洲亚洲人成综合网络| 亚洲丁香婷婷| 97碰操| 五月激情婷婷开心| 久久婷婷激情| 超碰免费电影| 乱女乱妇熟女熟妇综合网站| 玖玖热视频| 色婷婷久久综合| 天天爽天天爽视频| 九月色婷婷综合| 很很干天天干| 欧美成人日韩| 丁香五月天激情综合网| 九九热只有精品| www久久艹| 五月丁香啪啪网| 日韩久久系列| 天天舔天天摸天天射| 99久久a线观| 日韩九九| 国产午夜精品AV一区二区麻豆| 亚洲精品V天堂中文字幕| 五月丁香六月婷| wwww.色婷婷| 久久中文人妻系列| 狠狠操狠狠爱| 肏屄色播伊人97婷婷| 秋霞簧片| 人妻丰满精品一区二区A片| 思思热在线观看| 丁香久久激情俄| 这里只有精品免费在线视频| 26UUU欧美激情一区二区| 色999亚洲人成色| 婷婷婷久久| 天天综合情| 啪啪啪五月天| 国产成人一区二区三区在线观看| 97碰成超视频免费视频| 五月色天情| 91色综合网| 婷婷五月花.97| 91干| 五月丁香精品| 翔田千里 50岁 无码| 五月成人天| 六月婷婷五月丁香| 天天插天天很| 另类在线| 五月丁香六月久久| 久久久久9| 极品色丁香| 伊人网色婷婷五月天| 精品乱码久久久久| 天搞天天天天天| 伊人色综合网| 五月丁香六月成人| 五月婷婷AV| 五月天色小说| 五月丁香狠狠| 熟美女麻豆| 婷婷五月18永久免费视频| 97人人看| 丁香五月六月久久综合| 亚洲乱码日产精品BD| 啪啪啪大香蕉| 国产亚洲精品久久久久久郑州| 一本色道久久综合狠狠躁小说| 日韩99色| 99色在线观看视频者| 天天成人综合| 精品人妻伦一二三区久久| 91精品久久久久久久久久久久| 激情五月com| 亚洲AV影片在线观看| 台湾综合丁香五月蜜桃| 97人妻超级碰碰碰碰碰| 婷婷狠狠干| 国产精品久久久久久久久久免费| 伊人大香五月天| 丁香激情五月天| 亚洲人妻AV| 狠狠干无码| 七七九九色色| 91操女| 五月婷婷基地| 久久9视频| 色五月综合在线| 九九色综合九九色| 欧美激情五月| 五月丁香久久综合| 色欧美一级| 丁香五月婷在线观看| 日韩AV一区二区三区| 五月婷亚洲精品| 成人丁香色| 四色99久久| 久久的爱大香蕉| 五月婷婷六月丁香| 国产精品噜噜在线视频| 欧美色碰| 色婷婷在线视频| 九九视频热| 九九热99久久99| 91超碰在线观看| 五月天激情偷拍| a级毛片一区二区免费视频| 色久天| 激情久久肏屄视频| 伊人九九68| 欧美日比视频| 日日日日操| 九九综合色综合| 亚洲精品成人| 91九色中文字幕女在线观看| 99.色| 色婷婷操逼| 婷婷丁香无码专区| 成人午夜无码视频| 亚洲综合另类| 婷婷六月丁香开心深深爱| 成人在线观看精品| 五月婷婷开心网| 青草激情在线| yazhou seshipin| 国产成人AV在线播放| 这里只有精品久久| 开心激情网在线| 五月六月激情| 手机激情网| 婷婷丁香亚洲色综合91| 精品视频网| 丁香五月六月| www.yw尤物| 欧美成人色婷婷| 人妻aV在线| 精品成人在线| 情欲禁地| 图片区 小说区 区 亚洲五月| 五月婷婷丁香在线视频| 99re热视频这里只有综合亚洲| 欧洲色| 婷婷五月天在线观看| 五月天婷婷网站| 97操碰视频| 九九九九中文字幕| 成人 AV播放| 嫩BBB搡BBBB榛BBBB| 久久久www| 五月天婷婷丁香| 开心五月婷婷激情网| 亚洲四色五月| 伊人九九综合| 91人人操| 伊人网大香| 亚洲婷婷综合视频| 无码一级片| 色五月亚洲| 中文资源在线a| 男人的天堂五月丁香| 婷婷六月网| AV在线免费播放| 99日视频在线| 婷婷涩涩五月天| 日本英国美国欧美亚洲国产精亚洲日韩精品在线观看 | 国产日日夜夜操| 色欲色香,www,com| 色天堂操| 九九色之九九色88| 最新久久网址| 久久婷婷青草五月天| 婷婷综合激情| 六月婷婷五月丁香首页| 五月 丁香 欧美| 26uuu美女三级视频| 秋霞三级色戒| 激情久久综合网| 99综合激情久久精品久久| 天天操天天操| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片 | 91丨九色丨熟女| 免费不卡狠操美女视频网| 五月天天爱| 色丁香五月婷婷在线| 五月天五月色| 五月丁香激情综合网| 99乱视频| 在线99热| 国产成人综合电影| 少妇婷婷五月天| 久久中文网| 91干99| 一级性感毛片| 九九精品亚洲| WWW丁香五月| 日韩久久这里只有精品| 婷婷天天综合| 久久久久亚洲AV无码网影音先锋| 五月天社区婷婷丁香社区| 亚洲成人免费电影| 丁香五月婷中字在线| 中文字幕精品推荐免费在线观| 婷婷在线网| 激情综合另类| 天天操天天爱天天日| 六月婷婷av| 精品国产人人爱人人| 天天色天天爱天天爽| 99热这里只有精品3| 另类小说色婷婷| 99热这里只| 婷婷五月在线影院| 丁香五月婷婷少妇| 做爱夜夜干天天操| 日韩综合大黄| 激情五月丁香五月| 激情色五月天| 日本一级大片| 囯产精品一品二区三区| 97色色色色色| 狠狠情色| 丁香婷婷啪啪啪| 99九九99九九九视频精彩| 婷婷五月天影院| 亚洲av无码影院| 丁香丁婷五月激情| 亚洲色图五月丁香| 日本成人内射| 青青草深爱激情网| 99精品热| 久久精品系列| 深爱婷婷色| 激情五月婷婷色播网| 天天色图| 91大屁股精品| 91色情播放| 五月天停婷基地| 六月婷婷五月丁香| 99碰碰| 日本色色视频| 日韩综合成人| 亚洲激情免费久久| 天天日天天爽| 亚洲婷婷视频| 五月丁香六月香香蕉| 五月天婷婷无码| 天堂婷婷五月在线| 五月婷婷六月丁香综合在线| 欧美性爱中文字幕| 色播五月婷婷| 婷婷激情啪啪| 夜夜骑天天操| 97碰碰人人视频| 丁香五月婷婷色综合基地| 九九九九综合| 秋霞性爱AV| 中文字幕成人影视| 久久久久激情网| 26uuu另类亚洲欧美日本一| 色婷婷A| 久久天堂婷婷五月| 激情婷婷五月色| 综合网亚洲| 夜色热久| 色色射| 9色在线| 99ri精品| 99性视频| 这里只有精品99www| 啪啪综合| 丁香五月激情六月欧亚激情综合导航| 婷婷五月激情图片| 丁香婷婷91在线观看视频| 亚洲婷婷免费| 操比激情五月综合| 久/久精品99看9| 色碰碰| 91偷拍视频| www色五月| 国产亚洲99久久精品| 色综合中文色综合网| 激情六月丁| WWW久| 五月婷婷六月丁香在线| WWW色色色COm| 欧美成人va| 成人小说 五月天 婷婷| 99热伊人综合| 日日夜夜爽| www,久久久人人| 婷婷爱五月| 另类激情四射| 99热在线播放| 色爱亚洲| 五月婷天堂视频| 五月天婷婷基地| 伊人玖玖精品| 另类天堂| 成人丁香五月天| 美欧成人视频| 久热综合| 9999色色色色| 色播播婷婷| 欧美日韩一区二区三区四区| 亚洲激情色色| www.99热在线观看| 人妻第九页| 婷婷五月天电影区小说区| 婷婷九月狠狠色| 久久这里只有精品热在99| 五月婷婷亚洲综合网| 亚洲日比视频| 丁香在线视频| 九九这里精品| 在线网黄| 五月天小说激情| 99热1| 南京搡BBBB搡BBBB| www.精品99| 男女啪啪做爰高潮无遮挡| 丁香五月婷婷色五月| 欧美婷婷| 天天综合色丁香| 99区视频| 九九aV| 97香蕉碰碰人妻国产欧美| 亚洲行行色色| 丁香丁香激情网| 大香伊人婷婷影院| 久久精品A片777777| 激情婷婷丁香色情五月天| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 亚洲精99| 色五月天堂| 丁香8月手机综合| 99操逼视频| 能直接看的AV网站| 99rewww| 91在线视频综合| 亚洲成av人影院| www.久久久久久久久久久| 中文字幕在线免费观看视频| 久久99网| 毛片毛片毛片毛片| 色五月激情基地| 日韩成人网址| 99A级片| 丁香色色五月| 涩丁香| 九九在线精品| 久色五月| WWW,色五月| 99久久精彩视频| 欧美性生交XXXXX无码小说| 人妻人人操| 色五月婷婷一二| 亚洲综合狠狠艹| 国产激情av| 99国产欧美视频| 精品日本视频444| 国产精品色婷婷久久久精品| 婷婷五月综合体验看| 欧美成人网婷婷综合在线| 婷婷综合日本| 万月丁香狠狠爱| 天天干天天做| 少妇熟女视频一区二区三区| 丁香婷婷大香蕉| 久久久18| 日日操天天操| 97丁香五月| 成人丁香| 婷婷五月天 丁香五月天 裸体| 丁香亭亭久久| 激情五月天天| 日本久久综合| 五月激情综合五月| 噜噜国产| 丁香五月天信号| 天天干人人奸97| 人人爱国产| www激情五月天| 色五月婷婷激情综合网| 欧美丁香婷婷天天操| 深夜男女福利刺激影院一区完整| 九色在线观看91av| 超碰99久久| 九九九九国产| 色99亚洲| 婷婷五月六月丁香综合| 亚洲丁香五月美女| 婷婷五月天激情综合网| 激情综合网五月天| 九九热在线99| 久久伊人婷婷| h在线看免费版在线看| 成人做爰高潮A片免费视频| 天天综合色| 婷婷D区| 五月精品99综合| 九月婷婷综合色干| AV网站免费在线| www.激情五月天。com| 99噜噜噜| 免费视频舔| 久久久五月激| 另类激情五月在线视频欧美| 九九aV| 思思热视频| 久久人妻熟女一区二区| 青青草Avb在线| 九色视频91疯狂| 五月丁香六月婷婷,婷| 亚洲1区| 精品无码人妻一区| 99操免费视频| 人与禽A片啪啪| 99伊人婷婷在线| 婷婷黄色| 五月天婷婷丁香六月| 六月丁香五月婷婷| 极品人妻VIDEOSSS人妻| 亚洲超级碰| 亚洲色夜| 第一区久久网站| 97色女人在线| 久草婷婷网| 激情五月婷| 激情五月无码| 超碰在线精品| WWW久久99久久99久久| 亚洲AV人人操| 99热这里只有精品2| 中文字幕婷婷| 日韩精品无码AV| 播五月婷婷开心| 成年人丁香五月| 99超级碰碰| 精品香蕉99久久久久网站| 亚洲V国产V欧美V久久久久久| 五月天婷婷综合色| 这里都是精品99| 26uuu最新地址| 五月天社区| 狠狠干综合网| 色爱亚洲| 色综合77777| 久久视这里只有精品| 99操逼| 国产成人精品一区二区三区视频| 日本人妻操| 欧美色六月婷婷| 成人五月丁香社区| 91在线操| site:pnnrt.com| 爱超碰性| 激情五月丁香在线观看直播| 亚洲综合色婷婷| 欧美色色色色色色| 狠狠草婷婷| 久操热| 综合九九中文字幕| 综合网视频| 丁香花社区av| 五月丁香六月婷婷综合网| 色激情五月| 啪啪综合| 日韩在线视频中文字幕| 久久九九99视频| 色天天狠狠干| 少妇性按摩无码中文A片| 色九网| 97香蕉久久超级碰碰高清版| 9九色首页| 五月天婷婷在线播放| 五月激情综合网| www.五月婷婷久久.com| 91色久| 九月激情网| 久久婷婷网| 中文精品在| 九九热re99re6在线精品| 婷婷久久图片| 99九九视频| 六月丁香婷婷综合狠狠爱夜夜爱| 夜夜操天天爽| 丁香五夜激情四射夜夜夜| 色久综合天天做视频| 黄色中文字目| 国产日韩亚洲欧美在线观看| 96色婷婷| 4399在线日本A片| 欧美在线看| 日本久久综合| 五月天伊人av| 一本久久婷婷| 婷婷综合网| 天天色99| 亚洲激情久久| 五月婷婷九| 婷婷五月激情视频网| 激情综合激情综合| 婷婷综合色色| 超喷97免费在线视频| 天天插天天| 日韩无码系列| 久久综合五月天| 婷婷5月天av| 日本色啪| 国产成人av在线播放| 五月天激情国产综合婷婷婷就去爱| 殴美综合激情五月天免费视频| 婷综合六月| 99超级碰碰| 秋霞电影一级黄| 懂色av粉嫩av蜜臀av| 婷婷五月天在线综合| av免费在线看不卡无毒| 亚洲天天免费| 午夜日韩久久久网站| 日本一道久久| 色欲资源网| 91啪啪网| 97色婷婷| 久久9视频欧美| www婷婷亚洲| 五月天婷婷久草丁香| 欧美五月婷婷| 99热99热在线观看| 婷婷亚洲久久| 天天射美女| 影音先锋 91工厂| 亚洲操B视频| 激情丁香五月| 无码动漫av| 五月丁香六月婷婷中文版| 婷婷丁香九色| 殴美综合激情五月天免费视频| 亭亭色网| 九月婷婷综合色干| 91啪啪| 爽天天天天天天天| 亚洲另类婷婷五月综合| 色停停影院五月天| 国产毛多水多女人A片| 久久婷婷五月综合| www 五月天 com| 狠狠香蕉| 色综合久久综合| 色综合婷婷| 五月天激情亚洲| 视频免费精品免费精品免费精品免费精品免费精品免费精品免费99 | 亚洲精品午夜国产va久久成人| 色原狠狠综合| 26uuu成人网| 亚洲成人在线播放| 婷婷激情综合| 无月播播激情在线观看视频| 天天色·欧美| 亚洲色综合| 国产精自产拍久久久久久蜜| 二色AV| 天天摸天天舔| 婷婷婷婷婷婷婷五月丁香| 五月婷成人网| 色宗合,宗合网| 开心婷婷中文字慕| 超碰在线成人| 九九久久99精品免费观看www| 亚洲乱码日产精品BD| 婷婷激情社区| 婷婷开心久久| 五月天停停成人网| 9999色色色色| 五月丁香婷婷伊人| 亚洲婷婷五月天在线激情综合网| 五月丁香综合久久夜夜| 五月久久丁香| 六月丁丁香| 人妻人人操| 思思热在线| 婷婷五月情| 97色色色色色| 色五月婷婷天天干| 99久热在线精品| 狠狠 久久| 丁香五月熟女| 午夜av网| 97日在线视频| 综合AV在线| 狠狠色婷婷777| 久久99网站| 99热这里只有精品268| 九九精品网站| 婷婷五月天激情综合| 狠狠va| 99热这里只是精品| 五月婷婷二月丁香| 激情婷婷六月天| 日日夜夜噜噜爽爽| 久久五月天激情| 日日撸夜夜操| 亭亭色色五月天| 99热都是精品| 日本美女97在线视频| 国内熟女黄色系列| www狠狠com| 影音先锋色婷婷| 久色视频在线| 六月丁香激情婷婷| 婷婷五月激情的图片| 123草逼网| 熟女色专区| 色大综合| 九九综合色综合| 免费观看的av| 欧美97超碰| 色情婷| 丁香六月婷月91婷月| 婷婷玉月丁香五月在线视频| 99免费热视频在线| 日日杆天天| 9九九久久精品无码专区| 91热手机在线| 天天综合亚洲综合网天天αⅴ| 天天爽在线视频| 丁香激情六月天婷婷| 这里只有精品99www| 99色色色色| 一起草AV| 一区二区你懂的| 久久人视频| 性韩日色婷婷五月天激情啪啪XXX| 九色婷婷| 五月天色婷婷网| 九九热黄色| 新激情婷婷| 九九久久五月天| 丁香婷婷久久老熟女综合网| 五月丁香久| 91男人操女人视频| 91精品久久久久久久| 亚洲麻豆乱码国产2028| 激情丁香婷婷| 99热大| 丁香五月婷婷六月婷| 99热亚洲| 蜜臀综合久草| 日本本土色网第一区| 天天插天天爱| 久久婷婷五月综合色丁香花| 91Chinese在线| 欧美25p| 国产69精品久久久久999小说| 色综合99无码 | 婷婷五月天在线观看| 光棍影院日韩精品| 午夜丁香丁香婷婷| 成人va视频| 狠狠干天天日| 五月天伊人综合| 五月婷婷精品无在线| www色色com| 亚洲无码11| 色停停五月天| 亚洲网综合在线| 五月开心婷婷极品激情| 九九色大香蕉| 亚洲AV永久无码影院黑人 | 人人人人人人人人人草| 色五月婷婷九月| av色色国产| 色欲五月婷婷| 五月天 婷 欧美亚洲| 超碰成人影视| 丁香六月亚洲综合| 深爱激情综合网| 狠狠五月激情丁香六月| 五月丁香啪啪| 青青操丝袜美腿| 亚洲视频伍月婷婷| 色婷婷久久9.com| 激情综合亚洲色婷婷五月| 农村熟妇高潮精品A片| 色婷婷五月影视| 色五月丁香网| 色愛综合网| 99热精品中文字幕| 99开心五月五月丁香激情| 五月丁香啪啪网| 丁香婷婷五月六月久久| 婷婷色色丁香五月天| 9月色婷婷| www.婷婷六月天| aa久久| 深夜男女福利刺激影院一区完整| 午夜丁香久久久久久| 丁香丝袜五月| 免费观看日韩成人av| 无码G高清天| 五月天婷婷色色| 婷婷五月天综合激情| 天天爽夜爽| 国产五月丁香在线| 国外亚洲成AV人片在线观看| 激情综合网,婷婷五月天| 日韩黄在免| 深爱五月激情综合| 熟妇内谢69XXXXXA片| 色婷婷丁香AV综合| 9|在线观看视频| 五月天久久91| 9热视频在线观看| 亚洲激情四射| 丁香五月aV| 丁香九月色| 色色色在线观看| 色婷婷综合网站| 538在线精品| 夜夜操,天天撸| 六月婷欧美| 高清无码网址| 日本熟女一区二区| 四季8848精品成人免费网站| 激情丁香六月| 97操在线视频| 中文字幕一色哟哟哟哟| 五月天天爽| 欧美一级色| 日曰躁夜夜躁2026| 综合色色婷婷| 久月丁香爱婷婷综合| www.久久99精品| 婷婷九月激情| 天天综合图片| 99狠狠| 日产精品久久久久久久蜜臀| 五月丁香六月激情欧美综合| 九九色精品| 婷婷色色亚洲| 丁香九月久久| 天天干天天色天天干| 久久婷婷丁香| 午夜不卡久久精品无码免费| 少妇人妻凹凸视频| 手机在线日韩视频中文字幕| 无码人妻电影| 狠狠干五码| 亚洲精久久| 激情五月四色| 婷婷六月丁香激情| 久久aaaaa| 五月激情影院| 五月婷婷深深爱| 色五月综合网| 八戒青柠影视剧在线观看| 色婷久久| 五月丁香六月欧美| 欧美色婷婷| 在线91日韩| 色婷婷成人做爰A片免费看网站 | 五月丁香欧美| 婷婷丁香社区网| 欧美69久成人做爰视频| 99热新网址| 热99只有里视频| 91色吧网| www.色五月| ww久久| 丁香色婷婷| 婷婷五月丁香高清无码| 久久综合中文| 婷婷欧美激情| 996re热精品视频| 香蕉久久av一区二区三区| 激情五月婷婷色| 五月花成人网| 五月激情丁香五月| 日本色99| 人人播| 丁香婷婷婷五月| 五月天色婷婷视频| 婷婷丁香社区| 9 1大香蕉| www.com久久久久久久久久久久久久久久久| 五月婷激情| 热这里只有精| 久久精品爱爱| 少妇激情基地| 色婷婷狠狠18禁| 另类伊人婷婷| 日本WWW九九九| 精品国产乱码久久久久夜深人妻| 婷婷九月在线| 第四色婷婷最爱| 99色这里| 色哟哟性爱av| 嫩草视频观看| 五月天操逼激情| 97在线观看| 中文字幕乱码亚洲精品一区| 97香蕉久久超级碰碰高清版| 丁香六月婷婷久久综合| 99精品在线观看| 26uuu成人网| 丁香色婷婷| 性色五月天| 丁香五月欧美午夜视频| 偷拍五月丁香| 96丁香六月婷婷蜜桃综合久久| 婷婷五月AA五月在线| 激情婷婷人妻| 九九热99精品在线| 激情亚洲婷婷六月| 99热这里只有精品最新地址获取| 秋霞免费三级片| 久久六月婷婷| 嫩草视频。| 免看黄大片AA | 五月精品99综合| 黄色激情网站在线观看| 激情性爱婷婷| 久久久久久久久99精品| 国产成人网站在线观看| 五月丁香爱婷婷深深| 色9色| 亚洲色综合性| 丁香婷婷月| 亚洲五月天婷婷| 九九色影视| 国产老熟妇亲子乱对白| 婷婷99狠狠| 色五月婷婷成人视频| 天天干天天玩天天夜天天射天天操天天日蜜臀少妇 | 色情婷婷久久五月天| 我想看国产大学生口爆吞精的视频| 丁香性爱在线视频| 美女xx不卡| 手机旧版看人妻1025| WWW,激情五月天,COM| www婷婷色情网| 五月天综合视频| 99久久网站| 少妇AB又爽又紧无码网站| 天天天天操| 久久婷婷五月综合网| 色色色色色五月丁香| 婷婷和五月天| 99色在线观看| 狠狠爱激情网| 610018岁成人视频| 久色五月天| 情婷婷五月天在线| 九九视频在线观看| 久久婷婷热| 色五月色五天色情网址| 五月停亭六月,六月停亭的英语| 色综合综合色| 99热99这里有免费的精品| 久re热视频| 日韩啪啪视频| 九九RE视频在线精品| 中文字幕成人版| www久久99| 色欲天天综合| 亭亭玉月丁香| 超碰人妻公开在线| 国产 亚洲 在线| 色人妻五月| 五月丁香影视| 日本精品人妻无码77777| 玖玖五月| 丁香五月婷婷手机| 激情五月丁香五月| 激婷网| 久热婷婷| 几激情五月婷婷色五月色天堂| www.91.com黄| av婷婷丁香| 超碰91人人操| 久久久久久久久人妻| 九九热精品视频在线观看| 操逼三区| 五月丁香人妻| 97超碰婷婷五月天| 99er这里只有精品视频| 五月天婷婷丁香基地在线观看| 午夜五月天| 97成人在线视频精品| 夜夜夜叫天天天做| 狠狠色五月| 色www99| 丁香五月成人论坛| 色噜噜狠狠色综合日日| 日韩人妻白浆视频系列| 激情综合4月| 9久视频| 五月久久网| 99热这里只有精彩| 日本波多野结衣视频| 色婷| 五月丁香六月成人| 最新日韩久热免费视频看看| 一本综合丁香日日狠狠色| 欧美激情综合| 日本天天操| 欧美色五月| AV在线免费播放| 99热性色| 91精品久久久久、久五月天| 精品日本视频444| 初夜av| 欧美叉叉叉BBB网站| 亚洲秘 无码一区二区三区妃光/1| 亚洲精品乱码久久久久久综合| 思思热精品在线视频| 岛国AAAV| 这里只有精品免费视频在线观看| 婷婷综合激情| 精品久久99| 欧美日韩一区二区三区四区| 久久久99久久| 五月丁香综合| 天天综合情| 色色色色热| 天天狠天天狠| 亚洲中文字幕在线观看| 人人人人人人人人人草| 超pen个人视频97| 色婷婷丁香五月| 99色网站| 久er7久热| 国产做A爰片毛片A片美国| 五月丁香999| 色噜噜丁香| 婷婷综合色播网| 精品九九网| 97丁香五月| 色婷婷综合电影| 久久精品系列| 7777激情基地| 99性爱| 五月婷婷黄色视频| 天天色凹凸| 天天草天天爽| 久久婷五月婷| 被强行糟蹋的女人A片| 色999五月色| 九九色色| 天天色官网| 精品一区久热| 直接看的av| 91精品久久久久久久| 天天爽天天| 日日舔夜夜操| 精品亚洲国产成AV人片传媒| 丁香五月播播| 呦呦v线| 欧美成人猛片AAAAAAA| 色婷久久| 91人妻PORNY九色大屁股| AV成人在线播放| 狠狠色婷婷| 综合网五月天123| 五月婷婷六月丁香玖玖玫瑰91| 99热网站| 97色婷| www,婷婷,com| 99成人无码| 99久超碰| 99国产精品久久久久久久久久久 | 亚洲欧美另类在线23p| 日熟女| 91在线日| 亚洲精品国产成人AV在线| 天天插天天插| 六月丁香五月天| 99精品视频在线观看免费| 欧美A级成人婬片免费看理论| 91大屁股| 人人综合久| 久久婷婷五月天| 无码人妻一区二区三区免费九色| 男女av免费看| 色优久久| 久久人妻伦理| 久久婷婷六月| 91av传媒高清在线视频网| 五月激情小说| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 天天狠狠色噜噜| 91女人18毛片水多国产| 欧美色色色| 丁香五月天在线| www.天天干.com| 丁香玖玖视频大全| 欧美色男人网站| 久久婷色| 九九九九这里只有精品| 婷婷久久久久久久| 成人中文字幕在线| 婷婷5月久久综合网站| www色婷婷| 五月婷婷AV| 五月激情另类| 日本九九九九九九| 美国少妇性做爰| 色九九综合| 久久a热| 国产1区2区3区在线观| 99热欧美精品| www.玖玖九| 中文字幕按摩做爰| 免费黄色片子| 色九九九九| 久久婷婷五月综合色和| 午夜九九电影| 天天摸.天天mo| 影音先锋一区二区三区| 大香蕉九九操| 99在线一区| www.99色在线| 亚洲12p| 26uuu欧美| 99热在线观看免费精品| 婷婷中文无码| 黄网在线观看免费| www.天天日| 99亚州综合精品成人网| 五月丁香色婷婷综合| 青青草蜜臀| 六月婷五月丁香| 婷婷欧美色| 欧日美女Va| 噜一噜免费视频| 五月婷色| 婷婷五月播| 亚洲色色色色色色色色色| 五月伊人网| 亚洲五月婷| 99热在线观看| 久9视频| 久久婷婷热| 丁香五月天啪啪| 91操操| 成人五月天婷婷| VA五月激情在线| 好吊操这里只有精品| www.天天干.com| 亚洲色色在线| 久99视频在线观看| 久久停停超碰| 《诡秘之主》在线观看| 日韩三级片一区二区| 婷婷在线观看五月天在线视频| 婷婷五月天丁香成人社区| 五月丁香啪。| 色综合天堂| 操91| 色噜噜狠狠色综合日日免费| 《》【无码】想被搞到爽AV应募而来的超M素人 西纯子 10musume-011723-01 | 精品热九九| 最新日韩AV中文字幕| 热九九九九| 1024国产| 亚洲成人网无码| 婷婷六月爽| 色欲资源网| 夜夜谢天天干| www狠狠| 国产FREESEXVIDEOS性中国| 26UUU在线观看| 婷婷五月天a| 日韩啊啊啊| 婷婷五月天影院| 99精品无码| 五月综合激情久久| 麻豆精品| 丁香婷婷久久 | 婷婷五月丁香五月丁香| 久久九精品| 影音先锋天天日| 51国精产品自偷自偷综合 | 大香蕉啪啪网| 99热在线观看| 97超碰欧美中文字幕| 超碰AV在线| 五月天激情中文字幕| 99色色视频| 五月婷婷激情综合| 色天使久久综合| 丁香婷婷色| 五月婷婷久久内射| 99激情视频| 99热自拍| 精品婷婷丁香五| 激情六月丁香| 好好干av| 欧美va视频| 中文字幕丰满孑伦无码专区| 99热超碰天堂网| 亚洲激情淫网| www激情网| 97人人操人人| 婷婷婷婷婷婷婷婷婷婷丁香| 91色在线| 日日操日日射| 色婷| 久久婷婷五月综合网| 香蕉婷婷| 99精品福利视频| 91日韩在线| 五月亭亭色| 初夜av| 91欧美| 99久免费视频| 六月婷婷狠狠色在线观看| 天天综合久久| www.第四色99| WWW,色五月| 婷婷中文字幕| 婷婷久久色五月婷婷久久久| 久草天堂| 国产欧美va| 熟女强人妻一区二区三区四区无| 丁香色影院| 五月丁香婷婷人体| jiZZdr| 99伊人性爱在线影院| 亚洲婷婷乱乱丁香| 超碰免费人人| 亚洲综合视频网| 2025色婷婷| 久草婷婷网 | 色色啊| 久9热在线视频| 操逼五月天| 婷婷色五月久久| 午夜免费试看| 99久热| 铁牛TV人妻| 婷婷色爱| 国产精产国品一二三在观看| 丁香五月首页| 九九热99熟女| 丁香五月色五月婷婷宗合| 九九久久99| 久久曰曰| 91AV婷婷| 亚洲成人超碰| 亚洲五月天另类小说图片| 五月婷婷综合天天操| 婷婷 亚洲图片 丁香| 91中文在线| 欧洲永久精品| 99免费在线| 成人AV片播放| 日韩久久这里只有精品| 专区无日本视频高清8| 99久热这里只有精品视频删减版| 天天干夜夜想| 玖玖综合色区在线观看| 亚洲另类久久| 大香蕉色婷婷伊人在线| 五月激情婷婷六月丁香| 91婷婷| 天天噜天天爱| 五夜婷婷| 91精品久久久久久| 99热国产精品| 啪啪激情网| 国产亚洲99久久精品| 激情婷婷丁香五月天| 97碰| 狠狠色综合网| 婷婷天天婷婷天天澡| 高潮毛片又色又爽免费| 亚洲色域网| 婷婷D区| 婷婷激情五月天网站| 98色花堂98t.R|