免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

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
返回資訊列表
激情综合网婷婷五夜| 婷婷丁香红五月91C| 色九月婷婷综合| 日本色色色| 玖玖精品资源| 99 r热| 日欧一片内射VA在线影院| 婷婷五月天在线观看第二页| 99re热精品视频国| 五月婷婷丁香啪啪| 玖玖综合色区在线观看| 国产毛片欧美毛片久久久| 六月合五月婷| 色色色色色网站| 婷婷五月丁香综合激情| 9色免费网| 深爱激情六月天| 五月丁香青草综合啪啪| 婷婷5月天av| 玖玖婷婷视频| www,99热在线观看| http:色情日本com| 国产又爽又猛又粗的视频A片| 五月婷婷在线免费| 五月天五月天激情网| 五月天婷婷免费| 九九国产精视频| 国产九月婷婷| 婷婷综合玖玖五月| 五月丁香六月综合激情| 激情婷婷五月天伊人在线观看| 26uuu欧美日本| 丁香婷婷色五月| 美女91一起草| 开心五月婷婷综合在线精品素人| 九九99视频精品| 色播播五月天| 九九亚洲| 依人大香蕉| 超碰91在线| 99re视频精品| 五月天色婷婷网| 亚洲激情淫网| 成人小说 五月天 婷婷| 99热这里只有精品13| 超碰99热| VA婷婷| 久久九九@| 色婷婷啪啪| 激情都市另类| 五月婷婷性爱网| 少妇熟女视频一区二区三区| 国产人妻777人伦精品HD| 久久九九网| 久久婷婷五月综合色丁香| 激情综合网五月| 亚洲激情区| 丁香花五月天| 99精品在线观看视频| 丁香五月中文字幕久色| www.99热视频| 丁香五月Av| 婷婷99视频精品| 原琪琪色影院| 色婷婷丁香五月| 色婷婷狠狠18禁| 日本三级中国三级99人妇网站| 99久在线观看| 五月天综合网| 99视频日韩| 蜜桃婷婷狠狠久久综合| 开心婷婷中文字慕| 26uuu欧美亚洲日韩| 五月丁香六月婷婷综合免| 激情丁香五月天综合| 色色丁香| 日本va视频| 日本成人小说婷婷六月| www,色婷婷| 91九色在线视频| 五月丁香六月激情| 欧美性做爰大片免费看办公室 | 狠狠色丁香久久综合婷婷亚洲成人福利 | 涩涩五| 婷婷激情五月综合丁| 久久婷婷五月天激情| 亚洲丁香婷婷| 俺也去婷婷五月天第五色| 99热九九这里只有精品10| 夜夜夜夜操| 九九色热视频| 91久久久久久| 91成人看| 深爱五月中文字幕| 99色色网| 久久日婷婷| 无码A片一区二区免费| 色婷婷亚洲| 色 免费网站视频| 狠狠干2007| 综合五月婷婷| 98国产精品综合一区二区三区| 99免费视频网| 国产精产国品一二三在观看| 激情丁香九九五月综合网| 亚洲精品色色| 五月婷婷与六月丁香图片激情| 激情网五月| 1024亚洲无码| 色七色九九| 可以直接看的AV网站| 五月婷婷深深爱| 成人无码精品1区2区3区免费看| 99丁香五月婷婷在线| 久久性爱视频| 五月激情网站| 激情五月婷婷色色| 米奇影视资源婷婷狠狠色激情欧美五月丁香| 婷婷五月综合亚洲| 久久性爱网| 欧美啪啪9| RenRenSe在线视频网站| 久久五月丁香| 九月丁香婷婷| 色情五月综合婷婷| 激情五月天的婷婷| www.久热| 丁香五月天社区婷婷| 久久黄A片| 色播五月婷婷五月| 色婷婷影视99| 国产午夜精品久久久观看| 亚洲色婷婷| 五月亭亭欧美女人| 深爱激情五月网| 国产,欧美,学生妹,视频| 182TV亚洲| 五月天在线视频尤物视频在线看| 国产又黄又爽又色的免费| 欧洲一区二区| 九九色欲网| 婷婷五月激情视频网| 婷婷丁香色五月天久久88| 超碰日日操| 日韩五月婷婷久久| 丁香五月天激情视频| A片试看120分钟做受图片| 99自拍视频在线| 99视频只有精品| 韩国不卡AC视频| 色亚洲中文| 久久香蕉影院| 那里有AV网址| 婷婷在线视频| 久久激情五月网| 伊人综合网站| 五月丁香无码| 任你搞在线观看视频| 激情综合色婷婷啪啪六月天| 九九激情| 久热99热| 婷婷综合激情| 婷婷在线视频| 婷婷五月天激情基地| 午夜天天精品视频| 99热6精品| 色色色色色日韩午夜激情| 丁香五月综合亚洲| 9久久精品视频| 婷婷丁香五月婷婷| av中文在线| 色九月婷婷| 久久丁香五月天| 久久精品9| 九色91美女| 69精品人人人人| 91碰视频| 亚洲情综合五月天| 这里只有久久精99| -91九色大屁股| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 久久精品91视频| 丁香婷婷九月| 另类婷婷丁香| 伊人综合婷婷| 99热这里只有精| 久久婷婷五月综合色播| 久久的爱大香蕉| 偷拍91九色| 日韩成人中文字幕| 激情综合视频| 婷婷五月色情天| 五月6香色婷婷视频| 婷婷久久五月| www.99热这里只有精品| se99高清无码| 婷婷五月丁香人妻无码高清| 97干在线视频| 久久久久亚洲AV无码网影音先锋| 久色姿源| 五月天停停日日| 激情五月综合| 99色色色色| 久久五月天视频| 可以看的av| 激情五月丁香综合网站| 激情综合五月激情17| 9热在线| 丁香五月天激情综合| 超碰91在线| 五月婷婷色色爱| 69久久99精品久久久久婷婷| 深爱五月亚洲| WWW,激情五月天,COM| 激情玖玖综合网| 九色91国产| 色狠狠伊人久久五月丁香| 99热超| 激情综合五月| 久热九九| 亚洲顶级VA在线观看-高清完整版在线影院观看-S022AV | 9l视频自拍9l九色9l成人| 69堂午夜视频最新地址| 婷婷激情五月| 五月丁香色综合| 嫩BBB搡BBBB榛BBBB| 精品久久这里热66| 精品无码99| AV九九| 九九激情| 九九热视频精品999| 97干欧美| 99色在线观看视频| 婷婷五月丁香六月| 成人视频婷婷| 色婷婷色五月综合| 五月噜噜| 99精品在线下载| 五月婷在线| 九九成年视频| 久久久亚洲成人无码A片| 99熟女| 激情av在线| 激情小说 五月天| 人人干天天舔| 噜综合| 色综合久久中文| www.丁香黄色五月天人与| 99热精品在线观看| 久久久人妻| 久久99婷婷| 日韩aaaaa| 99热精品6| 综合久色五月| 狠狠狠狠狠草| 欧美婷婷色五月| 狠狠肏综合网| 婷婷丁香视频| 亚洲经典小视频| 激情网站综合五月天| 9.1综合网| 丁香 婷婷 激情 综合 五月| 五月激情婷婷图片基地| 5月丁香婷婷| 婷婷激情五月天天天开心| 激情综合五| 9久久久久| 开心五月婷婷婷美女| 第1影院之五月婷婷| seuuu婷婷| 丁香五月婷婷国产av| 2018夜夜草| 久久久一级AAA| 久热婷婷综合| 五月色丁香婷婷综合| yw国产AV| 久99在线视频| 五月天另类小说亚洲| 任你艹| 婷婷五月天成人在线视频| 日日干五月天婷婷| 日日操日日干| 人妻久久久久久| 丁香 久久| 久久视频婷婷视频| 无码成人AAAAA毛片AI换脸| 国产精品久久久久久妇女6080| 在线观看免费视频| 成人一区在线观看| 做爱夜夜干天天操| 深夜激情网| 五月天综合色| 狠狠干狠狠干| 人妖色AV色综合| 猫咪伊人久久| 色色色色色色97| 色色色无码| 五月丁香 啪啪| 色色色图| 婷婷激情综合色五月久久91| 思思久久99热| 丁香五月综合在线观看| www.日日夜夜.com| 另类国产欧美视频| 天天日天天干天天爱| 丁香六月爱综合| 99这里只有精品视频| 久久网日本| 婷婷五月综合在线| 色婷婷色综合激情91| 婷婷五月亚洲综合| 人人操人人爱丁香五月| 丁香五月天激情视频| 人妻熟人中文字幕一区二区| 91超级碰在线视频| 日日日日操| 欧美六月| av五月丁香| 激情九月婷婷| 色播五月婷婷| 日本强伦片中文字幕免费看| 妇激情基地| WWW.桔色成人.COM| 99综合免费视频| 97成人在线视频| 婷婷激情性爱| 欧美、日韩、中文、制服、人妻| 99视频在线观看视频| 天天操婷婷| 专区无日本视频高清8| 丁香婷婷五月人体| 激情五月婷婷综合网| 91婷婷丁香五月| 免费观看欧美成人AA片爱我多深| 成人电影一区| 超碰国产在线观看| 丁香五月色激情| 五月天婷婷黄色视频| 精品久久99码| 高清av在线国产| 99热免费精品热久久66| 五月激情综合网| 爱iii做iiii日日| 欧美欧盟性爱网| 婷婷五月天天爽| 九九九九精品精| 久草视频一,二三四| 亚洲另类噜噜| 国内自拍1区| 丁香香五月激情免费视频| 能看的av网站| 精品九九网| 热99久久这里只有精品| 久久精品99国产精品日本| 亚洲免费99| 婷婷婷婷色| 日本婷婷激情四射中文字幕在线观看| 五月婷综合性中心| 丁香五月五月婷婷欧美大香蕉| 久草婷婷| www.99在线| 最新热中文字幕| 高清不卡一区| 亚洲激情在线| 精品人妻伦一二三区久久| 丁香婷婷六月激情文学| 九九热精品视频在线观看| 人人操91| 日本婷婷五月天| 日本三级日本三级99| 97干视频| 99rewww| 99色视频| 五月丁香五月天现场视频| 午夜精品人妻无码一区二区三区| 色五月婷婷激情五月| 免费观看欧美成人AA片爱我多深| 思思热在线视频99| 国产亚洲av片| 综合色色网| 91九色精品女同系列| 婷婷综合色| 996er热| 九九热中文| 色五月婷婷91在线| 深爱开心激情网| 99精品视频在线观看| 欧美婷婷日本| 人人操 色| 天天擼久久擼在线| 夜精品无码A片一区二区蜜桃| av在线免费网站| 天天天天色天天天天天干| 99爱精品| 激情五月天色| 99自拍视频在线| 五月天激情综合网| 免费观看的婷婷五月视频在线| 五月天婷婷综合网| 色八月婷婷| 色色激情网| 丁香六月婷婷色XXXXX| 亚洲mm色| 密着浓厚中出乚交尾GvG935| 极品 少妇 内射| 欧美性爱五月天| 91成人电影| 久久爱婷婷| 在线精品97| 五月丁花色综合网| 最新高清无码专区| 五月婷婷免费在线观看| 影音先锋91在线资源站| 天天色天天噜| 67194中文在线| 色婷婷五月婷婷五月婷婷五月| 色丁香五月婷婷| 激情综合五月激情XXXX| 天天爽天天操| 啪啪干伊人婷婷| 99re6在线视频精品免费| 99色综合网| 狠狠操狠狠操AV| 中文字幕在线免费观看视频| 开心激情网五月天| 色色色777| 激情五月综合婷婷| 色色啊| 99色综合| 91精品国产综合久久密臀 | 日韩啪啪视频| aaaaa不卡| www.婷婷五月| 激情五月丁香色婷婷| 国产精品久久久久久久久久| 五月天久久丁香| 久久婷婷网址| 婷婷综合一二三| 97色在线观看视频| 婷婷五月天久久| 男人天堂亚洲综合| 久久性都花花世界成人免费视频 | 嫩草AV久久伊人妇女超级A| 超碰精品手机在线| 欧美久久久久久久久中文字幕| 5月婷婷6月六月丁香| 色播播婷婷| 久久婷五月婷| 五月天婷婷丁香蜜桃91| 91九色无码内射| 激情五月婷婷| www.夜夜操.con| 欧美日本日韩| 亚洲激情五月| 婷婷五月综合婷婷| 亚洲av电影网站| www.夜夜操.com| 99啪啪视频| 亚洲亚洲人成综合网络| 99热精品中文字幕| 丁香蜜臀黄色婷婷五月天| 青草视频在线观看视频| 天天日 天天草| 九九成人精品免费视频| 2050人人操免费工开爱| 丁香六月啪啪啪| 包操45分钟网站| 久久久久久99日本| 超碰99热| 五月丁香婷婷成人综合网| 久9热视频| 久久婷婷五月天| 激情小说婷婷五月| 亚洲人成网亚洲欧洲无码久久| 丰滿爆乳一区二区三区| 婷婷天堂综合| va婷婷| 色播综合| 91AV视频| 国产古装妇女野外A片| 色婷婷的五月天| 五月婷婷高清| 丁香五月婷婷综合精品素人| 国产性爱在线| 91超碰人人操| 婷婷色成人| 五月天无码| 91九九热| 无码激情AAAAA片-区区| 91超碰在线观看| 五月天婷婷视频30| 99免费热在线精品| 91综合在线视频| 成人午夜天| 97香蕉久久超级碰碰高清版 | 九九热最新视频| 久久久精品色| 婷婷五月天深爱| 久久综合丁香| 青青草原爱爱网| www.色婷婷.com| 另类视频五月天| 狠狠狠人妻| 99久久99九九九99九他书对| 久久九⑨| 丁香av网| 亚洲狠狠爱婷婷| 激情五月天社区| 六月丁香网| 狠狠干 狠狠操| 丁香色情五月综合激情| 久久激情五月婷婷| enecarbon-materials.com污K127封锁请涟系@wip1688 | 人妻久热| 99内射视频| aaa久久久| www.色五月| 久/久精品99看9| 丁香五月av| 色色 9| 色亭亭五月天网扯| 国产阿姨日皮艹逼内射视频| 亚洲色9| 日本视频99| 99久久亚洲国产| 五月天小说激情| 国产真人做爰视频免费| 伊人激情AV一区二区三区| 夜夜干夜夜操| 丁香五月六月综合激情| 五月天激情小说网| 婷婷激情四射| 国产精产国品一二三在观看| 狠狠操狠狠| 精品人妻一区| 国产99热| 噼里啪啦在线观看免费完整版视频| 亚洲色久| 五月天婷婷综合网| 五月丁香婷婷综合| 欧美性生交XXXXX无码小说| 婷婷久久五月| 99网| 大香伊人久色| 日本色超碰| 97涩婷婷婷婷基地| 五月婷婷九九久久| 九九自拍网| 97在线精品视频| 91色综合| 亚洲人人96@| 妻久久久久| 中文字幕簧片| 丁香五月五婷| 无码区婷婷五月花开| 日本婷婷| 狠狠操狠狠爱| 另类少妇人与禽zOZZ0性伦| 欧美搡BBBBB摔BBBBB| 日本不卡一区二区三区| 人人操婷婷| 色原狠狠综合| 变态另类9| 性色欲情 网站| 翔田千里aV中文字幕| 情欲综合网| 97好吊操| 狼人婷婷久久| 久碰视频| 天天久久九九| 久久久香| 亭亭色天香| 六月婷婷久久大全| 日本久久综合| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 久久五月婷综合网| 亚洲综合九九| 成人狠狠成人狠狠成人狠狠成人狠狠 | 无码字幕中文| 日本久久人人| 日在线V视频在线播放| 五月丁香龟婷婷| 成人短视频在线免费观看| 激情五月天婷婷| 欧美激情五月天| 婷婷五月综合色小姐小说| 超级碰碰碰碰视频| 玖玖在线资源视频| 人人视频人人干人人做| 色综合久| 9久9久| 久久最新色色色| AAA亚洲AV| 九热免费视频| 欧美日本韩国亚洲| 五月婷六月| 襙比视频| 亚洲av网站| 影音先锋自拍网| 97欧美在线| 桃色激情婷婷伊人网| 丁香五月偷拍| 性按摩玩人妻HD中文字幕| 大香AV| 久久在这里有精品| 偷拍91九色| 逼特逼在线免费播放| 婷婷丁香五月天影院 | www.无码com| 丁香伊人激情| 综合久| 中文字幕人妻一区二区| 五月综合视频在线| 蜜桃人妻无码AV天堂三区| 偷偷与邻居做爰完整视频| 碰人人操| 五月婷婷色吧!| www.99在线| 人操91在线| 久er7久热| 亚洲综合视频网| 在线视频九色97| 成人天天爽| 色播播五月天| 蜜臀av 粉嫩av 懂色av| 久久er+| 8区视频在线| 日本A片一区| 综合色五月天| 久久久久久久人妻| 中文字幕AV在线播放| 色五月六月| 亚洲最大成人综合网720P| 五月天婷婷影院| 五月婷婷之综合激情| 麻豆WWWCOM内射软件| 激情婷婷| 91狠狠色| 日韩操逼大片| 婷婷五月色惰| 9久久久| 色色哒五月婷婷六月丁香| 四川BBB搡BBB爽爽视频| 激情六月五月婷婷综合网| 国产亚洲在线观看| 啪啪激情网| 欧美激情综合色综合啪啪五月| 91碰碰视频在线观看| 五月情四婷婷| 一起草av| 天天天天天天天干| AAA久久| 91九色国产| 日本激情91| 99久久新视频| 99色综合| 超碰93在线观看| 激情开心五月天| 久久丁香九| 人妻操逼视频| 久久久五月天网站| 成人丁香五月天Av| 色婷婷久久综| 大香蕉综合在线| 人人妻人人澡| 日本色道视频网站| 五月婷俺去也| 97色婷婷| 久久五月天激情视频| 99网| 中文网av| 色99免费视频中文| 日韩99视频| 九九AV在线| 久热99| 五月婷丁香花| 最近韩国日本免费高清观看| 99性爱无码| 99久热视频在线| 久久hd| 狠狠爱婷婷| 亚洲天堂爱爱| 色婷婷视频| 狠狠狠人妻| 99久久喉9| 婷婷五月色播放| 9久久AV| √天堂资源在线人妻熟女| 日本三级日本三级99| 久久怡红院| 精品九九视频| 久久国产AV| XX久久| 99精品无码视频| 被强行糟蹋的女人A片| 丁香五月激情无码视频| 99热狠狠操| 五月婷婷综合激情| 9999色色色色| 大香蕉五月| 婷婷五月婷婷| 中文字幕性爱丰满| 任你操精品免费| 色色色色色色网站| 激情久久综合网| 99久久97久久欧美综合网| 色婷婷影视| 婷婷之六月丁香| 丁香玖玖视频大全| 啪啪啪综合网| 丁香六月欧美| 久久五月天大美女| AV中文字幕夜夜操b天天摸bb| 丁香九月综合| 人妻肉射免费观看| 久草视频一,二三四| 亚洲国产精品SUV| 思思热视频| 久久五月天大美女| 六月婷婷AV| 丁香综合网| 99A级片| 色婷婷呢狠禁久禁| 精品婷婷| 婷婷丁香激情综合色情| 丁香五月在线人妻| 天堂久久大香蕉| 激情视频网址| 久久免费精彩视频| 国产五月婷| 日本在线视频播放91| 久久国产一区二区三区| 婷婷五月天奸女| 六月五月婷婷| 人人爽天天莫| 日韩国产在线免费观看| 国产精品人成A片一区二区| 婷婷五月在线观看| 激情小说之五月| 丁香五月电影| 亚洲视频无| 日本啪啪视频HD| 色999五月色| 99精品福利视频| 色婷婷最爱五月| 9操在线| 99热色综合| 亚洲视频一区| 五月婷婷久久综合| 婷婷色正月| 内射激情在线| 亚洲视频a| 视频一二区| 丁香五月婷婷国产在线| 在线只有精品| 91碰碰| 精品99在线| 婷婷六月久久综合导航| 欧美在线| 开心五月婷婷激情| 五月丁香综合| www.狠狠艹| 激情伍月 欧美| 精热在线综合网| 成人电影在线免费试看| 九伊人网| 99色免费| HD久久精品视频| 五月天丁香啪啪网| 97久久久久久久久久久| 国产美女无遮挡裸体毛片A片| 99热6精品| 色九区| 99热在线中文字幕| 伊人久久婷| 婷婷五月综激情| 日韩在线一级| 91青娱乐青青草| 国产精品色色| 天天日天天舔| 国产婷婷综合在线免费视频| 丁香婷婷激情六月五月开心| 天天爱天天吃狠天天透| 欧美Va日本Va| 99性爱视频| 精品人妻一区二区| 五月丁香久久| 91九色中文| 天天做天天爽| 九九热re99re6在线精品| 五月丁香在线| 色五月天丁香婷婷| 99热老网站| 色爱五月天| 亚洲六月婷婷| 少妇真实被内射视频三四区| 国产成人AV不卡| 91碰碰视频在线观看| 色亭亭丁香五月天| www,色综合| 久久3p| 九九黄色网| 最新热中文字幕| ...婷婷国产成人亚洲日韩| 婷婷五月永远18免费久久久| 丁香婷婷久久综合在线| 五月天婷婷在线播放| 9九色首页| 久久久五月天| 欧美精品XXXXBBBB| 天天插操| 99热免费观看| 国产69久久久欧美黑人A片| 激情九月婷婷九月| 无码九九九九| 99久久婷| 99色啊| 日日夜夜综合| 久久伦乱| www.夜夜操| 色天使色综合| WWW.久久久久久久| WWW.夜夜操.com| 五月婷婷婷婷婷婷艺术| 激情五月丁香亭亭| 五月激情六月综合| 综合久久五| 五月丁香综合成人社区| 99这里有精品久久97| 淫荡工a| 日韩高清成人| 婷婷丁香社区| 六月丁香激情| 久久九九怡红院| 五月婷婷在线观看| 超碰免费人妻| 影音先锋91在线资源站| 成人毛片在线免费观看| 婷五月丁香俺| 思思热国产视频| 襙逼网| 五月天网站亭亭| 99热日韩| 思思久久精品| 亚洲成人无码专区| 日韩无码91| 婷婷色色综合激情| 天天做天天爱| 五月天丁香| 亚洲免费电影2| 99人人干| 99色免费观看全部| 99久久性爱| 日逼影音先锋男人资源站| 亚州色婷婷| 色五月婷婷婷婷| www.91久久| 91精品久久久久久久久久| 久青操| 丁香五月aV| 97人人操在线| 国产69久久久欧美黑人A片| 久久久婷婷色五月资源网| 色噜噜伊人| 激情色色色| 免费无码毛片一区二区A片| 色五月婷婷激情基地| 亚洲尤物在线| 色婷天天| 婷婷香蕉视频| www天天干| 丁香六月激情| 超碰99成人在线| 色丁香五月婷婷婷| 五月天伊人综合| 色婷婷成人做爰A片免费看网站 | 五月综合视频| 色婷在线视频| 日日夜夜爽爽| 丁香婷婷五月| www.色9| 五月丁香中文字幕| 桃色成人网| 日韩欧美一级大黄网站| 婷婷五月天欧美| 五月网站| 欧洲永久精品| 色狠狠色| 五月婷婷深深爱| 色婷婷色人人射| 拍真实国产伦偷精品| 亚洲AV网址| 五月天成人在线视频网站| 精品9197碰| 综合五月天亚洲婷婷| 99热伊人| 综合色影| 人人草人人舔| 九热av| 婷婷丁香五月噜噜噜| 五月天社区| 97操碰碰无码视频| 五月天久久综合婷婷| 狠狠色丁香乆乆| 青青草六月丁香| 色综合婷婷| 日日骑夜夜撸| 狠狠色成人影片| 超碰免费成人| 久久久久久久97| 大香蕉人人人| 看片视频在线免费日产在线看| 伊人大综合| 性色99| 九九精品大香蕉| 国产精品国产VA片国产| 野战J办公桌椅H| 色五月无码| 北京熟妇搡BBBB搡BBBB| 久色成人| 国产99久久久国产精品免费看| 亚洲婷婷丁香五月在线| 啪啪啪综合网| www久久99com| 综合久久99| 久久五月天大美女| 色色五月天婷婷| 久去色色| 另类少妇人与禽zOZZ0性伦| 草综合网| 国产免费一区二区在线A片视频| 成人深爱丁香五月| 亚洲AV成人在线| 丁香五月婷婷丫| 婷婷五月天av| 99爱免费视频在线观看| 综合五月激情| 亚洲另类噜噜| 九月色婷婷综合| www.婷婷,com| www久久久| 99爱视频| 69er小视频| 日韩av高清| www.99热这里精品| 久久色五月| 久色视频| 丁香婷婷免费| 五月色亭丁香| 五月婷婷视频在线观看| 51成人| 在线只有精品| 五月开心婷婷| 五月天之色情综合网| 激情六月天| AV堂狠狠干| 乱精品一区字幕二区| 午夜婷婷五月天| 99久精品视频| 丁香婷婷色五月| 婷婷中文字幕版| 成人人操| 亚洲午夜视频| 五月丁香视频在线观看| 久久se 综合网| 成功精品影院| www.狠狠操.co m| 欧美色图片88| 九九99热久久精品66中文字幕| 四月婷婷五月丁香| 中文字幕成人| 日本成人小说婷婷六月| 欧美日本高清视频99| 狠狠色成人影片| 激情五婷网| 操逼视频一区| 亚洲精品又粗又大又爽A片 | 午夜做爱影院| 五月五婷婷网| 五月婷婷久久爱| 亚洲av日韩无码| 成人婷婷深爱综合网| 丁香婷婷性久久| 婷婷色综合| 99久久6| 综合色99| 五月婷婷先锋| 五月丁香婷婷综合网| 久久久久人妻中文| 欧美久热| 九月婷婷在线视频| 99ri在线观看视频| 久久婷婷五月综合色丁香| 啪啪 综合网| 色狠狠色综合久久久绯色aⅴ影视| 99视频在线播放大全| 久一这里有精品国产| 激情五月婷婷啪啪| 99在线精品观看99| 婷婷六月综合基地| 人人干AV| 丁香花五月天激情| 超碰无码老师| 亚洲乱码精品久久久久..| 婷婷天天色| 六月丁香婷婷网| 9色视频在线| 91热视频| 婷婷五月天网| 狠狠干在线| 婷婷五月天成人综合网| 狠狠草天天草| 亚洲一级AV在线免费播放| 日韩AV无码影片| 天天玩夜夜操| 五月婷婷五月丁香| 丁香激情六月天婷婷| 久久综合丁香五月| 亚洲AV免费国产电影| 超91热| 婷婷成人五月天| 9久久婷婷国产综合精品性色| 五月婷婷免费看| 色综久久AV| 操B五月天| 久久99精品久久久久久三级| 97夫妻超碰| 九九精品热| 九九久久精品| 日婷婷| 丁香五月六月激情久久| 天天干天天日日| 欧美色图天堂网| 久久与婷婷| 五月丁香综合网| 五月婷婷丁香日韩在线| 202丰满熟女妇大| 五月丁香色色网| 亚洲AV网址| 日本久久精品18| 婷婷丁香色五月| 亚洲性爱区无码区| 色五月婷激情| 五月婷婷综合激情| 五月婷婷开心深| 激情五月天丁香| 99噜噜| 色五月婷婷91| AV动漫不卡无码免费| 精品视频网| 九九成年视频| 伊人综合网站| 中文成人在线| 最近韩国日本免费高清观看| 久久久婷婷| 九九热99热| 在线只有精品| 精品自拍99| 另类激情五月在线视频欧美| 九九这里是免费的视频5| 天天色99| 婷婷在线综合| 荷兰av一级| 精品网站:999WWW| 亚洲综合视频网| 免费视频无码| 91丨九色丨熟女| www.99久| 操久久网| 色五月婷婷在线| 91精品综合久久久久久五月丁香| 色色色色综合| 国产精品99久久久久久久女警| 日本乱子人伦在线视频| 99热日本| 精品成人在线| 日本久碰| 9久热在线精品| 欧美色色色色色色| 97精品欧美91久久久久久久| 亚洲熟女色| 五月丁香日本一抹本| 五月天开心成人网| www.狠狠干| 人草人人| 在线观看av网站| 991精品在线视频| 狠狠爱综合网| 色婷婷小说| 五月婷婷很很色| 丁香五月婷婷操逼| 亚洲av无码精品色午夜| 97在线精品视频| 久久久人妻不卡| 天天做天天要天天爽| 婷婷综合五月天亚洲综合| 婷婷操婷婷干婷婷射| 99热9999| 九九热最新| 亚州在线中文字幕| 影音先锋91资源站| 婷婷丁香五月天综合AV| 亚洲色情免费网| 79精品视频| 婷婷色丁香五月| 狠狠干天天日| 欧美久久久中文字幕| 97久人人| 99亚洲精品视频在线观看| 开心五月婷婷在线视频免费观看| 激情深爱综合网| www.久久久久久久| 国外亚洲成AV人片在线观看| 五月婷无码| 色综合com| 色亭亭五月天网扯| 久色视频| 91chinese在线| 日本大人久久| 大香蕉五月天| 人人看人人摸人人| 婷婷综合五月| 蜜桃成语时李时珍 免费| 午夜福利8055| AV大香蕉| 婷婷五月天激情基地| 无码操B| 久久99免费视频网站| 香蕉国产2013| 激情五月婷婷在线| 99综合| 91919191919久久成人视频| 操逼视频一区| 五月天婷a| 91偷拍视频| 国产性爱大片久久| 久久久婷| 激情六月天婷婷| 激情综合一| 色噜久| www.91有码.com| 日本视频99| 99A片| 色丁香五月婷婷婷| 五月天婷婷婷| 中文字幕欧美日韩VA免费视频| 久久98热re| 99性感视频| 91九色视频| 岛国资源站| 五月丁香在线婷婷蜜桃| 91热视频色网站| 婷婷五月综合中文字幕| 79精品在线视频| 婷婷情色五月天| 五月天婷婷狂暴白浆| 久久只有这里精品免费| 亚洲色婷婷| 怎么样可以看免费的一级av| 在线另类| 综合一区二区三区| 亚洲色区17| 热久久77777| 国产67194| 人橾人| 五月丁香六月色婷婷| 婷婷五月丁香五月| 久热 91| 九九综合| www.久99| 丁香五月天婷婷久久| 久久久久久人妻| 91大屁股精品| 五月激情小说网| 九九久久9 9在线观看| 人妻五月天激情开心网| 色~性~乱~伦~噜| 色五月婷婷综合在线| 26uuu精品一区二区| 影音先锋一区二区资源站| 亚洲99激情| 天天插天天爽| 国产成人网址| 五月天天综合| 在线超碰91| 色婷婷狠狠| 996黄色片| 色婷婷影音| 日本啪啪视频HD| 婷婷五月丁香激情图片| 五月婷婷激清网| 色五月婷婷在线| 成人羞羞啪啪 全 视频| www久| 亚洲无码播放| 亚洲色碰| 亚洲激情综合网| 丁香色色色| 综合狠狠干| 久久婷婷色色| 天堂久久精品| 91丨九色丨国产打屁股| 人妻久热| 情色五月天网站| 五月色婷| 激情丁香五月天| 99在线精品观看99| 五月激情婷婷在线| site:hcxsz888.com| 色区久久| 激情五月天婷婷久久久久久久久久久| 婷婷色影院| 色婷婷丁香五月天在线视频| 丰满老熟妇BBBBB搡BBB| va中文资源在线观看| 日本欧美成人片AAAA| 久久ab| 97色婷| 熟女色专区| 人人操av| 五月婷婷无码专区| 一起草AV入口| 婷婷丁香综合成人| 免费看片操逼| 操碰99| 日韩无码专区| 五月天综合网| 五月丁香人人婷婷在线观看| 丁香婷婷五月激情四射网| 五月婷婷开心综合| 日本久久人| 久色资源| 99热大片| 99在线视频网址在线观看| 综合色播| 久久久久9999| 欧美日本日韩| 婷婷爱婷婷| 五月婷婷丁香网| 色啪综合| 婷婷五月激情丁香激情| 欧美人与性动交CCOO| 色色综合网络| 婷婷色情网| 色噜噜狠狠色综无码久久合欧美| 五月丁香色色网| 国产AV一区二区三区最新精品| 五月综合缴情网| 在线你懂的亚洲欧| 激情综合五月| 婷婷激情5月| 激情视频综合| a在线观看| 色五月丁香五月婷婷五月成人网| 免费成人中文字幕| 丁香六月婷婷久久综合| 国产精品-91JQ就要激情网91JQ6.91JQ27.CASA:16888 | 99热成人| 丁香六月 婷婷六月| 色九月综合| 激情亚洲婷婷| 婷婷在线操| 日亚二欧美| AA片在线观看视频在线播放| 色激情五月| 亚洲激情亚洲激情|