免费国产精品自在自线-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
返回資訊列表
超碰在线caop| 香蕉网久久| 开心四月婷婷在线色播播| 日本va网站| 中文字幕网伦射乱中文| 久久欧洲久久| 96色婷婷| 成人精品视频99在线观看免费 | 色婷婷91激情小说| 色爽九九| 久久精品这里只有精品免费首页| 色婷婷丁香社综合| 五月天激情久久| www.狠狠干| 大香久久综合网| 九九热99熟女| 国产精品激情五月天色婷婷| www.韩日视频| 久久久av久av久片一区二区| 色亚洲欧洲| 色婷婷情片| 六月婷伊人| 久久99精品久久久久久青青AR| 国产六月婷婷| 欧美婷婷日本| 婷婷丁香综合| 免费在线观看av网站| 岛国资源网| 亚洲欧洲小视频9| 专区无日本视频高清8| 色热久资源| 婷婷丁香久久| 色婷婷激情| 丁香六月激情综合网| 99热这里有精品| 韩国天天婷婷| 天天干天天干天天干天天干天天| 日本久久性| 免费看欧美成人A片无码| 婷婷久久午夜网| 婷婷网五月天| 99热超碰| 亚洲人妻av| 偷偷操九九| 99热日本| 超碰国产在线| 五月色网| 噜噜五月天综合| 色五月AV| 五月天色导航| 精品人妻伦一二三区久| 日韩色色色色色| 九九九九中文字幕| 激情婷婷久久| 91丨九色丨高潮丰满日本| 五月婷丁香| 婷婷激情小说| 青青草成人网| 亚洲综合在线播放| 一级性爱视频| 五月丁香基地| 黄色激情五月天| 26UUU在线观看| 久热9| 日韩黄色AV无码| 日韩青青| 26uuu丁香婷婷五月| 六月丁香婷| 播五月丁香三月婷婷| 97香蕉碰碰人妻国产欧美| 国产毛片精品一区二区色欲黄A片| aaa日韩| 丁香五月网络网络| 人妻乱码久久久| 超碰人人操在线| 五月婷婷综合性爱噜噜| 色噜噜丁香| 久久久久9| 色婷五月| 人人肏逼视频在线一区二区| 婷婷五月综合激情| 九九九激情综合| 亚洲精品又粗又大又爽A片| 五月网在线| 六月色国内综合| 免费观看的AV| 免费播放片大片| 色色日本欧美| 久久99久久99精品,久国产,久久精品免费,99久在线,久久久久国产精品免费网站,9 | 97香蕉人人在线观看| 99久精品视频| 亚洲中文字幕网| 大香蕉伊人久久| 欧美激情五月天| 公的粗大挺进了我的密道| 色噜噜狠狠色综合日日| 婷婷五月天天天| 久狠狠狠| 风流少妇A片一区二区蜜桃| 久9无码视频| 色情五月综合婷婷| 日韩精品呦呦va| 91色碰| 久久五月综合| 99热久久这里只有精品2010| 这里只有精品久| 99热这里都是精品| 激情丁香五月婷婷| 国产婷婷久久| 成人婷婷桔色| www,com,五月色色| 国产一区二区三区影院| 大香蕉久久青青| 六月婷婷五月天| 99精品偷自拍| 97人人搞| 狠狠激情五月天| 色婷婷成人网| 亚洲视频在线网站| 超碰在线99| 欧美综合丁香网| 国产.亚洲.欧洲视频在线| 天天爽综合| 日本婷婷五月天| 激情综合五月婷婷| 伊人干综合| 99热99这里有免费的精品| 五月天婷婷爱丁香中文字幕| 五月丁香六月综合激情网| 激情5月婷婷| 99免费| 操老逼综合网| 手机激情网| 久操97| 午夜少妇在线观看视频| 91九色PORNY肉丝在线| 大战熟女丰满人妻AV| 九九亚洲视频| 996热| 影音先锋人妻出差| 久久99激情五月天| 色五月婷婷DVD| 这里只有精品免费视频| 超碰狠狠干99| 新五月天婷婷激情电影| 色五月五月婷婷| 最近中文字幕2019视频1| 久久人人添人人爽添人人片αV| AV片在线观看| 五月天久久www| 五月天久久久| AV中文在线| 亚洲第一第二网站| 9超碰在线| 婷婷丁香成人网址| 免费看欧美成人A片无码| 色综合久久久综合久久网| 最新高清无码专区| 成人精品99| 91啪啪| 欧美超碰亚洲| 激情五月综合婷婷| 六月色婷婷综合影视| 色九月婷婷丁香| 五月婷婷乱| 丁香五月婷婷五月| 色五月婷婷大| 97超级碰| 色婷婷五月综合在线| 99精品无码网站| 国产精品色色| 亚洲色五月天在线| 色九九综合色| 婷婷五月丁香基地| 色丁香五月| 99精品视频免费观看| 91综合在线| 色一区高清| 激情五月丁香五月| 69午夜成人影片| 色五月欧美| 色噜噜夜夜夜综合网| 91九色超碰| 99久久99综合| www.yw色| 91操操| www.黄色片-久久成人国产精品在线播放-999AV | 丁香婷婷丁香五月欧美人| 精品久久久久久久久久久久人妻| 97碰在线视频| 五月丁香六月婷婷在线小说视频| 色婷婷九月| 五月婷婷色色| 99热这里只有免费精品| 96丁香六月婷婷蜜桃综合久久| 黄色网址五月婷婷| 99热只有这里有精品| 美欧日韩国产成人在战| 91 九色 入口| 欧洲色| 成年人看Va免费视频| av九九| 国产激情久久久| 日本色色色| 五月花婷婷在线精品视频| 五月天网站免费欧美| 国产SUV精品一区二区883| 丁香五月婷婷Av| 操97免费超级视频| 五月天自拍网| 少妇激情基地| 丁香九月综合在线| 色婷婷成人做爰A片免费看网站| 97色色综合| 激情综合色| 99热精品在线播放观看| 激情四射五月天| 色另类五月天| 120分钟婬片免费看| 丁香六月婷婷色XXXXX| 99精品综合视频| 五月丁香婷婷无码A∨| 婷婷五月影院| 青草激情在线| 日本色噜| 久久人人九九| 久久99免费视频| 久操婷婷| 色丁香五月婷婷| 激情五月色综合国产精品| 激情小说五月天| 婷婷五月另类网站| 思思热再线视频| 9热在线观看| 日本久久天堂| 成人午夜无码视频| 久久九九99| 九色色| 亚洲av网站| 深夜婷婷 丁香| 丁香六月婷婷| 亚洲成人人人操| 热99热| 综合久久影院| 97热在线精品| 亚洲成人在线观看网址| 在线观看中文字幕| 婷婷五月综激情| 五月天婷婷开心| 六月丁香av| 色开心五月婷婷丁香HD| 丁香五月天堂网| 狠狠色噜噜狠狠狠狠狠色综合久久| AV九九| 思思干精品| 婷婷六月啪啪| 亚洲色五月天| 色情婷婷| www.狠狠| 激情综合五月婷婷| 色婷婷六月| 五月天天天色| 丁香六月婷婷| 免费黄色片子| 久久99国产综合精品免费 | 婷婷丁香黄色| 婷婷激情综合网| 91凹凸在线| 五月六月伦理| 婷婷六月色开| 婷婷色网| 五月天色色色| 五月丁香六月婷婷网| 天天激情视频| 五月丁香天堂网婷婷| se色婷婷视频| www激情| 综合视频久久| 777色色色| 日日天天干| 国产67194| 丁香五月情| 丁香狠狠色婷婷| 九九热视频这里只有精品| 天天日狠狠| 先锋男人99资源| 激情五月天啪啪| 91艹人| 另类色视频| 538在线| 六月婷婷深深爱| 人妻内射麻豆视频| 九九九九九九九热| 天天做天天爱天天日| 男人先锋久久| 99视频91| 67194国产| 五月婷婷新网站| 婷婷激情五月天亚洲综合| 成人av在线网站| 九九久久五月天| 天天做天天爱天天日| 9色免费网| 99免费在线视频| 91久久电影| 色综合区| 色色色色色色网| 丝袜激情网| 久久这里只精品| 国产亚洲成AV人片在线观黄桃| 日本爆乳片手机在线播放| 激情五月婷在线精品| 可以免费观看的av网址| 婷婷五月天色丁香| 天天日夜夜爽| 98永久精品| 色色无码| 五月丁香激情怕怕| 五月综合无码| 大香网伊人久久综合| 亚洲成人在线综合| 日本操B视频| 伊人五月综合网| 黄网在线播放| 色在线视频网2025| 2018国产大陆天天弄| 99精品网| 色情久久久| 狠狠色综合777| 色播五月婷婷| 99ER热精品视频| 一起草aV| 婷婷五月丁香综合人妻| 五月激情六月宗合| 伊人激情综合| 韩国情人在线电视剧免费观看高清版全集 | 丁香婷婷久久激情| 91狠狠综合网| 色域五月丁香| 欧美五月丁香在线| 99久精品视频| 色开心五月丁香| 亚洲色色在线| 日本一级| 久久的爱大香蕉| 6月丁香婷婷激情| 99这里只有精品|v| 97超碰免费超级在线观看| 亚洲av| 69精品人人人人| 色色色图| 丁香五月婷婷图片综合| 久久免费丁香| 丁香五月婷中字幕| 超碰99热在线观看| 丁香 婷婷 亚洲 熟女| 可以免费看AV网站| 色婷婷激情五月天丁香| 精品久久婷婷| 五月激情婷婷在线| 国产九月婷婷| 99激情视频| 182无码| 色综合爱综合| 五月香婷婷| 91美女被操| 婷婷综合一二三| 色色婷婷五月天| 成人视屏在线观看| 婷婷综合色图| 8区视频在线| 99精品综合视频| 综合网精品99| 九九九九这里只有精品| 国产免费AV网站| 色五月婷婷五月天激情综合| 婷婷伊人激情婷婷| 久久久国产精品黄毛片| 婷婷五月天激情综合| 精品99在线看| 久久婷婷91| 疯狂做受XXXX高潮A片| 五月丁香中文婷婷中文| 婷婷五月天亚洲天堂| 色婷婷五月天视频在线| 成人版视频在线观看| 国外亚洲成AV人片在线观看| 中文字幕综合| 五月丁香婷婷啪啪| 五月激情综合深爱| 丁香五月婷婷亚洲另类| 超碰激情网| 丁香久久综合| 丁香五月精品视频| 五月婷婷涩涩爱| 久色五月| 日韩综合网络男女香蕉a片| 久er7久热| 另类小说五月天| 久久视屏这里只有久久| 婷婷色五月婷| 99热精品超碰| 久久婷婷六月综合| 国产色色色色| 九九青青草成人| 26uuu在线观看| 996er在线观看| 亚洲成av人影院| 丁香五月综合福利视频导航| 五月激情综合网| 少妇丁香婷婷 | 91在线日| 亚洲色A| 激情五月瑟瑟| 丁香六月婷婷综合| 色婷婷影音| 996热re视频在线观看视频| 久久综合网免费视频| 97在线/亚洲| 六月婷婷狠狠色在线观看| 色综合色五月| 99在线精品免费视频| 69精品人人人人| http://www.sd-xiangsu.com/| 99热在线播放| 亚洲色频| 五月婷婷六月激情在线| 操操操www.com| 精品国产乱码久久久久久免费| 婷婷久月| 影音先锋男人站,影音先锋男人色资源网,影音先锋AV最新资源站,影音先锋AV资源 | 一区二区你懂的| 99这里有精品| 激情综合4月| tingtingseav| 女人天堂AV| 婷婷色片| 五月天综合图片| 五月丁香激情片| AV网在线观看| 国产AV熟妇人震精品一品二区| 色婷天天| 婷婷五月色播天| 99碰网站| 美女妹子后射视频网站在线观看| 久久丁香婷婷五月| 97色射| 在线99热| 人人摸人人摸| 天天搞天天色综合| 情情五月天色| 久久这里都是精品免费| 亚洲乱码日产精品BD| 五月丁香久久综合精品| 九九婷婷热| 激情婷婷五月天| 热99免费在线| 欧美成人性爱网| 激情六月五月婷婷综合网| 四色五月婷婷| 日韩色色色色| 青青草国产亚洲精品久久| 久久奄也去色色网站| 国产操逼视频网站| 色吊丝99| 狠狠色 综合色区| 色播综合| 操操啪| 九九这里是免费的视频5| 9久热| 婷婷五月丁香色综合| 99热国产精品| 五月丁香激情啪啪| 婷婷婷婷色| 欧洲不卡视频| 五月婷色色| 久久婷婷伊人| 99久视频| 丁香五月天堂网| 99热网站| A片试看120分钟做受图片| 操日挥操日日| 色五月女| 激情久久久久| 久久激情网| 亚洲天堂爱爱| www.色五月| 色五月在线观看| 超碰免费99| 五月婷婷丁香| 另类综合激情| 色色色无码| 人人色性网| A一级操| 一区二区中文字幕| 九九久久五月天综合伊人| 99丁香五月婷| 99久视频| 开心五月色婷| 婷婷综合久久| 国产色婷婷亚洲| 日日操夜夜爽天天天| 99噜噜噜| 日韩精品超碰在线观看| 五月天丁香婷婷视频网址 | 五月激情丁香久久综合网| 久久免费高| 小香蕉av| 67194中文字幕| 91一起艹| 色五月aV| 99热新网址| 99色色| 双性美人被调教到喷水A片| 日韩欧美成人片| 欧美久热| 伊人婷婷99热精品| 午夜大香蕉| 99干日日干| 婷婷五月丁香99| 操逼三区| 79成人网| 超碰三级片| 色色日本| 五月丁香最新| 开心 五月 综合| 婷婷五月天干干| 色五月av| 中文成人在线| 大香蕉久久久| 色综合日日| 五月天久久综合| 亚洲V国产V欧美V久久久久久| 色五月丁香网| 欧美A片在线视频免费观看| 四LLL少妇BBBB槡BBBB| 久久丁香五月天| 久久久五月天婷婷成人网| 艹B高清无码| 色私五月婷婷| 日韩爱操视频| 五月综合激情网| 大香蕉伊然在亚洲90| 天天狠狠综合精区| 99热这是里只有精品| 青青夜夜狠狠夜夜狠狠| 婷婷永久在线| 丁香六月啪| 五月天大香焦| 亚洲五月天综合| 六月丁香婷婷综合色播| 思思久久99热只有频精品66| Www,五月天| 狠狠干无码| 日韩大片艹艹| 婷婷五月天综合色| 99精品偷自拍| 日韩免费乱轮网站| 亚洲综合色色| 色一情一乱一乱91Av| 91丨九色丨熟女丰满| 九九成人精品免费视频| 婷婷五月噜噜| 国产毛片精品一区二区色欲黄A片| 超碰91在线| av成人在线播放| 丁香五月色情| 国产成人精品一区二三区熟女在线| 久久这里只有精品热在99| 中文字幕成人| 丁香婷婷综合精品六月初| 六月丁香色色色| 91超级碰在线| 久青草大香蕉| 丁香五月无码| 波多婷婷久久| 五月天精品综合在线| 亚洲婷婷激情五月天| 99热这里有精品| 97日韩无套内| 51XX午夜影福利| 五月花免费视频| 久久久精品免费啪啪国| 人人操人| 一区二区乱码视频| 99综合一区| h在线看免费版在线看| 色色五月婷婷久久| 激情久久久久久久久久| 激情五月天无码| 丁香五月影| 久久婷婷一级片| 色一情一乱一伦一区二区三区| 变态 另类 在线| www.91有码.com| 亚洲中文字幕在线观看| 狼人婷婷综合| 这里只有精品视频99| 久久综合26p| 五月丁香婷婷婷婷综合网| 亚州性爱99| 射满了还射免费在线观看 -午夜版全集-新视觉影院 | 婷久久综合| 亚洲精品午夜国产va久久成人| 九九久久99精品免费观看www| 北京熟妇搡BBBB搡BBBB| 久Se视频在线观看| 99自拍视频| 丁香无月在线观看| 国产精品天天狠天天看| 美日韩成人| 免费观看欧美成人AA片爱我多深| 天天色播| 九九热免费视频| 亚洲第一色色色色| 丁香影院五月综合| 97干免费视频| 丁香八月综合激情| 99久久.www| 色999五月色| 熟女重口味αV| 色综合久久88色综合天天| 99区视频| 在线视频区| 天天拍天天操| 天天日天天狠狠操| 亚洲区1| 日本在线视频播放91| 五月丁香狠狠爱婷婷综合| 99re在线精品视频| 六月婷婷八月丁香| 天天骑日日爽| www.99.色| 色欲五月婷婷| 日日.c| 在线成人网站| WWW嗯嗯啊啊啊啊| 免费精品99| 噜综合| 色在线免费观看| 日韩1区2区| 玖玖福利视频资源| 99九九久久| 久久全意婷婷| 日日噜噜夜夜狠狠久久丁香六月| 久久网日本| 9999热在线| 天天综合网在线| 天天爽天天日天天舔| 中文超碰视在线| 丁香色色网| 天天操夜夜爽歪歪| 婷婷五月天美女| 五月丁香啪| 久久怡红院| enecarbon-materials.com污K127封锁请涟系@wip1688 | 99热综合在线| 精品无码99| 天天五月丁香五月| 色五月天丁香| 丁香花操逼| 少妇做爰免费视看片| 五月丁香好婷婷姑娘综合网| 天堂久热| 少妇被躁爽到高潮无码文 | 五月天婷婷久久| 久久九九在线视频| 精品成人无码A片观看香草视频| 在线综合亚洲欧美65| 五月丁香做爱视频| 五月婷丁香在线视频在线| 91午夜婷婷狠狠久久综合9色| 日本社区五月天激情| 国产九九一区二区三区| 97人妻碰碰中文无码久热丝袜| 天天做天天爱天天爽夜夜揉| 国产日产亚洲系列最新| 夜夜资源站| 无码yw| 超级久久久| 亚洲乱码日产精品BD| 久久99网站| 97色在线观看视频| 丁香六月婷婷色播| 超碰免费99| 婷婷情色五月天| 操操精品| 成人免费在线电影| 丁香五月777| 丁香六月av| 久久久婷婷五月亚洲97号色| 中字幕视频在线永久在线观看免费 | 天天舔天天摸天天透| 一操久久| 无码激情AAAAA片-区区| AV人人操| 99热亚洲精品| 综合五月丁香六月婷婷| 性爱电影科技贸易有限公司| 久久婷婷五月天蜜桃| 九月丁香婷婷| 97人人草| 婷婷色五月激情| 激情综合五| 牛牛澡牛牛爽| 五月婷婷,六月婷婷| 五月天婷婷久久| 婷婷五月在线观看| 亚洲经典三级| 色天使久久综合| 五月天激情四射| 这里只有精品视频| 碰碰碰97国产| www.婷婷五月.com| 亚洲av成人在线| 婷婷五月天成人五月天| 97色色婷婷| 日韩 欧美 国产 一区 二区| 秋霞丝袜啪啪啪| 99在线视频资源| 无码中文一区二区三区| 99热在线观看| 婷婷婷五月天最新综合你懂的| 熟女激情网| 久婷婷五月丁香在线观看| 亚洲色综合色网| 天堂久久大香蕉| 91碰| 俺去也在线www色官网| 丁香六月开心| 婷婷五月偷拍| 中文AV在线观看| 99∨VTV| 精品视频网| 色婷婷综合久久久久| 色婷婷91激情小说| 婷婷中文无码| 开心 五月 综合| 五月丁香久久综合精品| 色婷婷手机在线| 99性感视频| 五月丁香自拍| 日产精品一线二线三线芒果| 久久精品国产一区二区三区四区| 天天操夜夜操| se99视频| 成人无码精品1区2区3区免费看 | 99热在线精品观看| AV在线中文| 97亚洲视频在线| 五月色婷婷影院| www,av好吊操| 六月激情婷婷| 丁香五月天日韩无码| 欧美婷婷综合网| 热99国产精品| 久久性爱视频网站| 五月天婷婷丁香| 九九av在线| 亚洲看av的网站| 色噜噜狠狠色综合日日| 26uuu国产| 中文字幕丰满孑伦无码专区| 欧美性做爰大片免费看办公室 | 欧美色宗和激情| 欧美美女国产日韩一区二区久| 亚洲色色在线| www.久久综合| 大大香蕉综合在线| 懂色AⅤ| 天天色情站| 日本黄色在线观看| 天天操狠狠操| 欧类av怡春院| 成久综合视频| 99热国产精品| 91日韩美女被插视频| 亚韩在线视频| 欧美丁香五月| 国产女人十八水真多1| 色婷天天| 任你操精品免费| 欧美伊人9| 久久婷婷激情视频| 欧美69色| 色色色色色色色色色999| 婷婷五月天香蕉| 一本色道久久综合狠狠躁一二三| 五月婷久草| 六月亭亭久久综合激情| 最新va在线播放| 色婷婷在线视频观看| 久久婷丁香五月| 丁香五月手机在线| 久久天堂网| 婷婷淫淫狠狠六月| 五月丁香综合久久夜夜| 丁香色色网| 91热爆在线| 少妇丁香婷婷| 五月丁香激情啪啪| 操人91| 婷婷色综合| 九九日本视频| 色99热| 区美毛片子| 亚洲视频二区| 婷婷五月天久久| 超碰人人色| 九九AV| 99热只有| 五月丁香美女| 欧美经典片免费观看大全| 国产伊人大香蕉| 成人丁香五月| 99re免费在线视频| 色色婷婷五月天| 99热这里只有精品10| 99色精品| 超色欲天天| 8区视频在线| 色情五月丁香| 四色AVwww| 五月综合视频| 日日干综合| 免费无码毛片一区二区A片| 9久精品| 五月天激情婷婷| 欧美va亚洲va在线播放| 五月丁香网站| 丁香桃色网| 天天射影| 国产真实乱了老女人视频| 婷婷五月天伊人在线| 九九操操| 五月亭亭六月色| 精品亚洲国产成AV人片传媒| 五月天激情综合在线| 乱抡小BB| 欧美久人人| 99热这里只有精品2| 丁香婷婷五月色成人网站| 少妇人妻综合色6699| 99热手机在线精品| 久久98| 51精品国自产在线| 五月天婷婷成人网| 日日日,com| 综合色七七| www.黄色片-久久成人国产精品在线播放-999AV | 色伦专区97中文字幕| 99爱爱| 亚洲精品99| 夜夜操狠狠操| 色婷婷久久综合久色| 91九色网| 色五狠狠| 五月天日日操夜夜操| 久久激情五月| 夜夜干 夜夜操| 久久视频66| 丁香六月婷婷缴情欧美| 色高清无码视频| 亭亭五月基地在线| 99热97| 欧美成人A片AAA片在线播放| 婷婷五月天国产性感美女演员久久久久| 精品久久这里热66| 国产成人AV人人爽人人澡Va| 天天色粽合合合合合合合| 69婷婷丁香午夜| 9热视频在线观看| 91久久精品国产91性色TV| 五月丁香激情片| 91色碰| 热思思九九| 激情九月婷婷| 夜夜操天天干| 亚洲综合网激情小说| 丁香操逼| 久久激情网| 五月天播播中文字幕 | 国产毛片精品一区二区色欲黄A片| 九九激情视频| 天天天天干| 激情无码网| 夜夜撸日日操| 99er精品| 欧美97色| 九九99免费视频| 国产美女主播vip| 69凹凸成人综合网| 久热9| 九九色逼| 人人草人人爱| 五月丁香婷婷久久| 五月婷婷丁香俺日污视频| 婷婷久久图片 | 9l视频自拍九色9l黑人| 丁香五月六月| 一级二级香港秋霞欧美欧美秋霞| 99热亚州综合| 日本黄色三级片内射| 婷婷五月天熟妇| 久久久久久草黄色片AV在线观看| 成人片黄网站色大片免费毛片| 国产精品国产VA片国产| 五月天激情网址| 99国产97在线,| 区欧美日韩成人| 深爱五月天| 色综合天天综合成人网| 久久狠狠干| 婷香五月| 婷婷丁香在线| 婷婷色五月丁香六月欧美啪| 熟女色色一区二区| 色综合综合综合| 国产精品涩涩涩视频网站| 天天综合亚洲综合| 激情五月天之六月婷婷| 丁香五月婷婷五月| 色婷婷91| 久色88| 97超级碰| AV亚洲在线| 五月天婷婷激情四射综合| 操一区| 538在线精品| 国产午夜精品一区二区三区四区| 天天做天天爱天天做| 天天做天天爱高潮片| 外国碰视频网站97| 欧美色色色色色色色| AV在线不卡播放| 丁香五月天堂亚洲社区| 激情婷婷五月天| 超碰99资源站| 五月天婷婷久久| 国产真实乱了老女人视频 | 亚洲av另类在线观看| 婷婷六月色开| 婷婷五月草| 9九色首页| 91婷婷| 热99色| 丁香五月婷婷天堂大香蕉| 一本大道伊人AV久久综合| 五月天婷婷综合| 国产毛片精品一区二区色欲黄A片| 热久久91| 91九色国产| 97福利视频| 成人午夜视频精品一区| 色色A| 婷婷不干网| 99热网站| 精品9l九九九九九77777| 天堂成人A片永久免费网站| 久久五月婷天天干| 婷婷婷婷婷婷婷婷| 99热在线观看| 性爱技巧五月| www.91九色| 5月婷婷6月丁香aV| WWW免费视频碰碰碰碰| 丁香五月欧美激情| 天天操比比| 欧美顶级少妇做爰HD| 这里只有精品视频在线| 看国产探花操逼三级片| 天天日夜夜草进麻麻的子宫| 就要爱综合| 狠狠操.COM| www.婷婷五月| 超碰在线免费观看3 9| 少妇AB又爽又紧无码网站| 777色色色| 五月停停大香蕉| 五月丁香日本一抹本| 97资源碰碰| 亭亭五月天黑人2014| 五月天 无码| 婷婷激情四射| 欧美WW在线网| 99精品7| 久久综合丁香激情五月| www.超碰在线| 五月丁香久久丝袜啪啪| 色婷婷综合成人| 夜夜撸天天操| 五月婷婷丁香| 强壮公让我夜夜高潮A片视频| 亚洲A片成人无码久久精品青桔| 国产乱人偷精品人妻A片| 任我肏| 丁香五月婷婷五月基地| 69超碰在线| 婷婷九色| 丁香色五月婷婷91桃色| 色亚洲欧洲| 无码免费人妻A片AAA毛片西瓜| 99精品偷自拍| 影视av久久久噜噜噜噜噜三级| 欧美在线97| 日韩精品二三区| 天天干天天干天天| 9超碰在线| 人妻精品久久久久久久| 深爱五月激情| 久热一区| 全亚洲最大的婷婷五月天网站COM| 丁香五月 综合| 色婷婷免费观看| 九九激情视频| 亚洲成人五月天| 色无婷婷| 热久久91| 久久婷婷五月综合啪| 六月婷婷av| 高清国产AV| 色婷婷狠狠18| 日韩AC在线免费观看| 国产亚洲99久久精品| 色五月激情五月丁香五月婷婷啪啪综合 | 激情网色五月| 亚洲激情视频网| 这里只有精品视频| 婷婷舔| 人人摸人人干| 伊人婷婷激情| 午夜九九九九九九九九九九九九九| 五月婷婷婷| 琪琪秋霞| 国产成人网| 91碰在线| 久青草影院| 99小视频在线| 99国产精品久久久久久久久久久| 色九九九综合| 99亚洲无码| 99精品超在线播放| 久久久精品人妻| 日本在线99| 在线中文av| 99在线观看| 99网| 激情综合激情五月一起草| 丁香九月久久| caobi四区| 九九九AAA热视频| 久久久久丁香婷婷五月天| 日本不卡一区二区三区| 五月婷婷啪啪| 色婷婷电影网| 综合aV在线| 97色色网| 五月丁香操婷逼| 办公室少妇激情呻吟A片在线观看| 色玖玖综合| 五月天婷婷AV| 九九热10| 99国产精品白浆在线观看免费| 99自拍视频| 99婷五月| 综合久久高清| 97自拍视频在线| 综合AV网| 天天爱天天做综合| 伊人玖玖婷婷| 噼里啪啦完整版中文在线观看| 国产亚洲99久久| 婷婷五月电影院| 丁香婷五月| 熟美女麻豆| 九九视频免费| 日韩成人综合| 人人操五月天| 久久久精品色| 九月丁香网婷婷| 五月欧美丁香在线观看| 99er热精品视频| 精品人人操| 激情综合网激情五月网| 日日干天天爽| 一级A片天天操夜夜操| 在线不卡视频| 99热这里只有精品免费| 成人五月天综合网| 79精品视频| 五月激情四射婷婷丁香| 99re热视频这里只精品| 激情久久四色| 色五月色五天色情网址| 丁香五月婷婷综合网| 亚洲欧洲中文日韩久久AV乱码| 丁香五月婷婷五月天在线| 五月天婷婷久久| 五月丁香六月婷婷在线播放| 色和综合网| 五月丁香婷婷色色| 色色网站免费| 六月婷婷视频| 高清成人综合| 99久久精品免费精品国产_国产精品久久久久久_国产在线|日韩_久久国产精品电影 | 熟女激情网| 中文字幕综合色| 五月激情影院| 美女天天艹人人爽| 狠狠色九月| 思思久久99热只有频精品66| 五月天激情视频网站| 免费无码毛片一区二区A片| 六月婷婷日| ay2区| 伊人五月婷婷国产视频| 激情五月天色色| 日本VA视频| 狠狠五月激情在线| 丁香五月天啪啪| 五月丁香狠狠爱婷婷综合| 久久这里有精品| 五月婷婷和六月| 狠狠色丁香久久婷婷综合五月| 激情五月婷婷五月丁香五月开心五月 | 五月丁香六月香香蕉| 色婷婷AV在线| 青青草激情网| 九九久久这里只有精品XB| 亚洲va久久久噜噜噜久久天堂| 婷婷五月天久久久| 五月丁香婷婷婷婷综合网| 少妇性BBB搡BBB爽爽爽电影| 91欧美| 都市激情亚洲| 中文字幕丰满乱孑伦无码专区 | 婷婷五月天福利| 亚洲国产成人裸舞| 婷婷丁香五月麻豆| wWW九九在线播放| 中文字幕在线免费观看视频| 99r久久这里只有精品| www,99热在线观看| 狠狠插狠狠操| 99精品热视频| 亚洲综合另类| 啪啪综合| 色九九九九| 五月丁香福利| 色五月婷婷五月天| 婷婷欧美| 色XX综合网| 五月激情婷婷播播开心| 丁香色五月 97干| 99热综合在线| 99九九精品| 超碰免费成人| 激情综合色| 日本一级一级一级一级| 婷婷综合干| 五他月天啪啪啪| 天天干,天天日| 婷婷五月丁香图片人人操| 九九成人| 99操99| 日本久久精品| 久久女婷| 乱精品一区字幕二区| 婷婷五月激情丁香| 欧美色色色| 狠狠干,狠狠操| 丁香五月婷婷天激情| 五月天啪啪| 99精品无码| 另类小说五月天| 任我肏视频精品| www. 五月. com| 五月丁香影院| 婷香五月激情视频| av中文网站| 五月婷婷五月天激情网| 久久久久亚洲AV无码网影音先锋| 丁香五月激情综合久久| 五月天色丁香| 91久久| wwwav大香蕉| 超碰成人影视| 九九色情网五月天| 久久婷婷人人| 99久久新视频| 日韩一级片| 丁香激惜男女| 五月天狠狠草| 婷香五月网在线| 这里只有九九精品| www.久热| 能看的av网站| 天天日,天天干,天天操| 五月丁香婷婷综合网| 99爱在线| 五月丁香六月婷婷视频| 另类综合婷婷五月天欧美视频| 中文字幕丁香五月| 91九色精品| 无码AV免费精品一区二区三区| 婷婷激情五月天小说| 丁香五月天五码婷婷| 中文字幕日韩无码制服诱或| 123草逼网| 五月天播播综合| 五月停停激情网| 天天综合色| 人妻激情网| 亚洲尤物在线| 少妇性按摩无码中文A片| 丁香五月婷婷五月| 99热成人| 青青操成人福利| 天堂婷婷五月在线| 蜘蛛女免费观看完整版高清电影 | 五月视频日本免费观看| 人妻狠狠操| 久久婷婷五月天激情唯美| 亚洲九九99精品视频在线播放| 婷婷丁香午夜综合影视| 狠狠干在线视频| 五月天狠狠干| 无码se| 99色亚洲| 超碰免费人人| 超碰在线观看9| 六月婷婷色综合| 亚洲99热| 五月天色婷婷激情| 夜夜操加勒比| 日韩99视频| 五月天开心成人网| 91九色国产熟女| 91久女| 久久五月丁香| 欧美日韩AAAA| 最近中文字幕大全免费版在线 | 五月丁香亭亭操逼| 少妇高潮A片无套内谢麻豆传| 色播五月| 风流少妇A片一区二区蜜桃| 婷婷99视频在线| 亚洲综合网激情小说| 五月天久久婷婷婷| 九九99精品视频在线观看| 六月婷综合| 嫩BBB槡BBBB搡BBBB视频| 色色网五月激情| 热91久| 色色亚卅| 丁香五月激情图片婷婷| 亚洲AV电影美洲AV电影| 婷婷五月电影院| 婷婷五月天成人网| 亚洲啪啪视频| 五月亭亭开心网| 4399在线观看免费高清黄色视频| 婷婷五月天成人娱乐| 深爱激情婷| 六月丁香婷婷爱| 综合激情站|