精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

求你了,別再用print調(diào)試代碼了

開發(fā) 后端
今天明哥再給你介紹一款非常好用的調(diào)試工具,它能在一些場景下,大幅度提高調(diào)試的效率, 那就是 PySnooper,它在 Github 上已經(jīng)收到了 13k 的 star,獲得大家的一致好評。

 對于每個程序開發(fā)者來說,調(diào)試幾乎是必備技能。

代碼寫到一半卡住了,不知道這個函數(shù)執(zhí)行完的返回結(jié)果是怎樣的?調(diào)試一下看看

代碼運行到一半報錯了,什么情況?怎么跟預(yù)期的不一樣?調(diào)試一下看看

調(diào)試的方法多種多樣,不同的調(diào)試方法適合不同的場景和人群。

  •  如果你是剛接觸編程的小萌新,對很多工具的使用還不是很熟練,那么 print 和 log 大法好
  •  如果你在本地(Win或者Mac)電腦上開發(fā),那么 IDE 的圖形化界面調(diào)試無疑是最適合的;
  •  如果你在服務(wù)器上排查BUG,那么使用 PDB 進行無圖形界面的調(diào)試應(yīng)該是首選,詳情請戳明哥之前的文章:讓代碼調(diào)試不再難 - pdb
  •  如果你要在本地進行開發(fā),但是項目的進行需要依賴復(fù)雜的服務(wù)器環(huán)境,那么可以了解下 PyCharm 的遠(yuǎn)程調(diào)試,詳情請戳明哥之前的文章:不能不會的遠(yuǎn)程調(diào)試技巧

除了以上,今天明哥再給你介紹一款非常好用的調(diào)試工具,它能在一些場景下,大幅度提高調(diào)試的效率, 那就是 PySnooper,它在 Github 上已經(jīng)收到了 13k 的 star,獲得大家的一致好評。

有了這個工具后,就算是小萌新也可以直接無門檻上手,從此與 print 說再見~

1. 快速安裝

執(zhí)行下面這些命令進行安裝 PySnooper 

  1. $ python3 -m pip install pysnooper  
  2. # 或者  
  3. $ conda install -c conda-forge pysnooper  
  4. # 或者  
  5. $ yay -S python-pysnooper 

2. 簡單案例

下面這段代碼,定義了一個 demo_func 的函數(shù),在里面生成一個 profile 的字典變量,然后去更新它,最后返回。

代碼本身沒有什么實際意義,但是用來演示 PySnooper 已經(jīng)足夠。 

  1. import pysnooper  
  2. @pysnooper.snoop()  
  3. def demo_func():  
  4.     profile = {}  
  5.     profile["name"] = "寫代碼的明哥"  
  6.     profile["age"] = 27  
  7.     profile["gender"] = "male" 
  8.      return profile  
  9. def main():  
  10.     profile = demo_func()  
  11. main() 

現(xiàn)在我使用終端命令行的方式來運行它 

  1. [root@iswbm ~]# python3 demo.py   
  2. Source path:... demo.py  
  3. 17:52:49.624943 call         4 def demo_func():  
  4. 17:52:49.625124 line         5     profile = {}  
  5. New var:....... profile = {}  
  6. 17:52:49.625156 line         6     profile["name"] = "寫代碼的明哥"  
  7. Modified var:.. profile = {'name': '寫代碼的明哥'}  
  8. 17:52:49.625207 line         7     profile["age"] = 27  
  9. Modified var:.. profile = {'name': '寫代碼的明哥', 'age': 27}  
  10. 17:52:49.625254 line         8     profile["gender"] = "male"  
  11. Modified var:.. profile = {'name': '寫代碼的明哥', 'age': 27, 'gender': 'male'}  
  12. 17:52:49.625306 line        10     return profile  
  13. 17:52:49.625344 return      10     return profile 
  14. Return value:.. {'name': '寫代碼的明哥', 'age': 27, 'gender': 'male'}  
  15. Elapsed time: 00:00:00.000486 

可以看到 PySnooper 把函數(shù)運行的過程全部記錄了下來,包括:

  •  代碼的片段、行號等信息,以及每一行代碼是何時調(diào)用的?
  •  函數(shù)內(nèi)局部變量的值如何變化的?何時新增了變量,何時修改了變量。
  •  函數(shù)的返回值是什么?
  •  運行函數(shù)消耗了多少時間?

而作為開發(fā)者,要得到這些如此詳細(xì)的調(diào)試信息,你需要做的非常簡單,只要給你想要調(diào)試的函數(shù)上帶上一頂帽子(裝飾器) -- @pysnooper.snoop() 即可。

3. 詳細(xì)使用

2.1 重定向到日志文件

@pysnooper.snoop() 不加任何參數(shù)時,會默認(rèn)將調(diào)試的信息輸出到標(biāo)準(zhǔn)輸出。

對于單次調(diào)試就能解決的 BUG ,這樣沒有什么問題,但是有一些 BUG 只有在特定的場景下才會出現(xiàn),需要你把程序放在后面跑個一段時間才能復(fù)現(xiàn)。

這種情況下,你可以將調(diào)試信息重定向輸出到某一日志文件中,方便追溯排查。 

  1. @pysnooper.snoop(output='/var/log/debug.log' 
  2. def demo_func(): 
  3.     ... 

2.2 跟蹤非局部變量值

PySnooper 是以函數(shù)為單位進行調(diào)試的,它默認(rèn)只會跟蹤函數(shù)體內(nèi)的局部變量,若想跟蹤全局變量,可以給 pysnooper.snoop() 加上 watch 參數(shù) 

  1. out = {"foo": "bar"}  
  2. @pysnooper.snoop(watch=('out["foo"]')) 
  3. def demo_func():  
  4.     ... 

如此一來,PySnooper 會在 out["foo"] 值有變化時,也將其打印出來

watch 參數(shù),接收一個可迭代對象(可以是list 或者 tuple),里面的元素為字符串表達式,什么意思呢?看下面例子就知道了 

  1. @pysnooper.snoop(watch=('out["foo"]', 'foo.bar', 'self.foo["bar"]')) 
  2. def demo_func():  
  3.     ... 

和 watch 相對的,pysnooper.snoop() 還可以接收一個函數(shù) watch_explode,表示除了這幾個參數(shù)外的其他所有全局變量都監(jiān)控。 

  1. @pysnooper.snoop(watch_explode=('foo', 'bar'))  
  2. def demo_func():  
  3.     ... 

2.3 設(shè)置跟蹤函數(shù)的深度

當(dāng)你使用 PySnooper 調(diào)試某個函數(shù)時,若該函數(shù)中還調(diào)用了其他函數(shù),PySnooper 是不會傻傻的跟蹤進去的。

如果你想繼續(xù)跟蹤該函數(shù)中調(diào)用的其他函數(shù),可以通過指定 depth 參數(shù)來設(shè)置跟蹤深度(不指定的話默認(rèn)為 1)。 

  1. @pysnooper.snoop(depth=2 
  2. def demo_func():  
  3.  ... 

2.4 設(shè)置調(diào)試日志的前綴

當(dāng)你在使用 PySnooper 跟蹤多個函數(shù)時,調(diào)試的日志會顯得雜亂無章,不方便查看。

在這種情況下,PySnooper 提供了一個參數(shù),方便你為不同的函數(shù)設(shè)置不同的標(biāo)志,方便你在查看日志時進行區(qū)分。 

  1. @pysnooper.snoop(output="/var/log/debug.log"prefix="demo_func: "
  2. def demo_func():  
  3.     ... 

效果如下

2.5 設(shè)置最大的輸出長度

默認(rèn)情況下,PySnooper 輸出的變量和異常信息,如果超過 100 個字符,被會截斷為 100 個字符。

當(dāng)然你也可以通過指定參數(shù) 進行修改 

  1. @pysnooper.snoop(max_variable_length=200)  
  2. def demo_func():  
  3.     ... 

您也可以使用max_variable_length=None它從不截斷它們。 

  1. @pysnooper.snoop(max_variable_length=None)  
  2. def demo_func():  
  3.     ... 

2.6 支持多線程調(diào)試模式

PySnooper 同樣支持多線程的調(diào)試,通過設(shè)置參數(shù) thread_info=True,它就會在日志中打印出是在哪個線程對變量進行的修改。 

  1. @pysnooper.snoop(thread_info=True 
  2. def demo_func():  
  3.     ... 

效果如下

2.7 自定義對象的格式輸出

pysnooper.snoop() 函數(shù)有一個參數(shù)是 custom_repr,它接收一個元組對象。

在這個元組里,你可以指定特定類型的對象以特定格式進行輸出。

這邊我舉個例子。

假如我要跟蹤 person 這個 Person 類型的對象,由于它不是常規(guī)的 Python 基礎(chǔ)類型,PySnooper 是無法正常輸出它的信息的。

因此我在 pysnooper.snoop() 函數(shù)中設(shè)置了 custom_repr 參數(shù),該參數(shù)的第一個元素為 Person,第二個元素為 print_persion_obj 函數(shù)。

PySnooper 在打印對象的調(diào)試信息時,會逐個判斷它是否是 Person 類型的對象,若是,就將該對象傳入 print_persion_obj 函數(shù)中,由該函數(shù)來決定如何顯示這個對象的信息。 

  1. class Person:pass  
  2. def print_person_obj(obj):  
  3.     return f"<Person {obj.name} {obj.age} {obj.gender}> 
  4. @pysnooper.snoop(custom_repr=(Person, print_person_obj))  
  5. def demo_func():  
  6.     ... 

完整的代碼如下 

  1. import pysnooper  
  2. class Person:pass  
  3. def print_person_obj(obj):  
  4.     return f"<Person {obj.name} {obj.age} {obj.gender}> 
  5. @pysnooper.snoop(custom_repr=(Person, print_person_obj))  
  6. def demo_func():  
  7.     person = Person()  
  8.     person.name = "寫代碼的明哥"  
  9.     person.age = 27  
  10.     person.gender = "male"  
  11.     return person  
  12. def main():  
  13.     profile = demo_func()  
  14. main() 

運行一下,觀察一下效果。

如果你要自定義格式輸出的有很多個類型,那么 custom_repr 參數(shù)的值可以這么寫 

  1. @pysnooper.snoop(custom_repr=((Person, print_person_obj), (numpy.ndarray, print_ndarray)))  
  2. def demo_func(): 
  3.      ... 

還有一點我提醒一下,元組的第一個元素可以是類型(如類名Person 或者其他基礎(chǔ)類型 list等),也可以是一個判斷對象類型的函數(shù)。

也就是說,下面三種寫法是等價的。 

  1. # 【第一種寫法】  
  2. @pysnooper.snoop(custom_repr=(Person, print_persion_obj))  
  3. def demo_func():  
  4.     ...  
  5. # 【第二種寫法】  
  6. def is_persion_obj(obj):  
  7.     return isinstance(obj, Person)  
  8. @pysnooper.snoop(custom_repr=(is_persion_obj, print_persion_obj))  
  9. def demo_func():  
  10.     ...   
  11. # 【第三種寫法】  
  12. @pysnooper.snoop(custom_repr=(lambda obj: isinstance(obj, Person), print_persion_obj))  
  13. def demo_func():  
  14.     ... 

以上就是明哥今天給大家介紹的一款調(diào)試神器(PySnooper) 的詳細(xì)使用手冊,是不是覺得還不錯?

如果你還有其他關(guān)于調(diào)試的技巧,可以留言區(qū)分享出來,一起學(xué)習(xí)一下~ 

 

責(zé)任編輯:龐桂玉 來源: Python編程
相關(guān)推薦

2020-12-04 10:05:00

Pythonprint代碼

2021-01-29 11:05:50

PrintPython代碼

2020-12-15 08:06:45

waitnotifyCondition

2024-06-12 13:54:37

編程語言字符串代碼

2022-10-27 21:34:28

數(shù)據(jù)庫機器學(xué)習(xí)架構(gòu)

2020-12-07 06:05:34

apidocyapiknife4j

2025-11-03 04:00:00

2025-08-13 03:00:00

2025-05-19 04:00:00

2020-12-11 09:24:19

Elasticsear存儲數(shù)據(jù)

2021-06-09 06:41:11

OFFSETLIMIT分頁

2020-06-15 08:12:51

try catch代碼處理器

2020-12-03 09:05:38

SQL代碼方案

2021-05-25 09:30:44

kill -9Linux kill -9 pid

2023-10-26 16:33:59

float 布局前段CSS

2025-08-04 01:55:00

2020-04-16 08:22:11

HTTPS加解密協(xié)議

2024-03-14 08:15:18

COUNT(*)數(shù)據(jù)庫LIMIT 1?

2020-07-17 07:15:38

數(shù)據(jù)庫ID代碼

2022-01-27 07:48:37

虛擬項目Django
點贊
收藏

51CTO技術(shù)棧公眾號

在线播放91灌醉迷j高跟美女 | 国产欧美综合在线观看第十页 | 亚洲一区三区视频在线观看 | 国产一区二区伦理| 久久久久国产精品免费| mm131美女视频| 日韩一级特黄| 亚洲va欧美va人人爽| 色就是色欧美| 丰满少妇被猛烈进入| 日韩中文字幕区一区有砖一区 | 亚洲福利视频网| 欧美精品无码一区二区三区| 黄网页在线观看| 成a人片国产精品| 国产精品美乳在线观看| 精品无码人妻一区二区三| 国产亚洲欧美日韩在线观看一区二区| 欧美一区午夜精品| 成人羞羞国产免费网站| 在线观看a级片| 国产欧美视频一区二区| 国产一区二区三区av在线| 伊人网站在线观看| 国产亚洲网站| 欧美激情伊人电影| 日本高清不卡免费| 不卡中文字幕| 国产视频在线一区二区| 白丝校花扒腿让我c| 一个人看的www视频在线免费观看| 欧美国产激情一区二区三区蜜月 | 国产午夜精品一区二区| 亚洲色图五月天| 午夜诱惑痒痒网| 99热播精品免费| 欧美日韩亚洲激情| 97在线国产视频| 黄网站app在线观看| 国产三级一区二区| 精品卡一卡二| 黄色美女一级片| 国产老肥熟一区二区三区| 国产美女精品免费电影| 波多野结衣在线电影| 亚洲欧美卡通另类91av| 97精品一区二区三区| 国产一级做a爱免费视频| 66国产精品| 久久九九全国免费精品观看| 丁香六月激情综合| 精品久久91| 亚洲天堂视频在线观看| mm131美女视频| 女人av一区| 亚洲人成欧美中文字幕| 中日韩精品一区二区三区| 欧美禁忌电影网| 亚洲人成网站免费播放| 免费看污片的网站| 不卡中文一二三区| 色偷偷91综合久久噜噜| 人妻熟人中文字幕一区二区| 成人3d精品动漫精品一二三| 正在播放欧美一区| 久久精品在线观看视频| 久久麻豆精品| 另类天堂视频在线观看| 青娱乐在线视频免费观看| 午夜精品网站| 午夜精品福利视频| 超碰中文字幕在线| 日韩**一区毛片| 国产精品久久久久婷婷二区次| 亚洲人成自拍网站| 国产成人无码精品久久二区三| 伊人久久大香线蕉| 在线精品91av| 一级黄色片日本| 国产综合精品一区| 欧美有码在线观看视频| jizz国产在线| 国精产品一区一区三区mba桃花| 亚洲a中文字幕| 好吊视频一区二区三区| 久久视频一区二区| 一区二区在线观| www.综合网.com| 一本色道久久综合亚洲91| 在线观看的毛片| 亚洲一二av| 亚洲免费伊人电影在线观看av| 能直接看的av| 在线看片成人| 国产精品久久久久久搜索| www.国产视频| 久久久久久久综合日本| 欧美a级黄色大片| 久热在线观看视频| 欧美浪妇xxxx高跟鞋交| 艳妇乳肉亭妇荡乳av| 欧美日韩有码| 午夜精品一区二区三区在线| 亚洲国产无线乱码在线观看| 福利一区二区在线观看| 日韩wuma| 福利影院在线看| 欧美日韩国产一区| 美女又爽又黄视频毛茸茸| 亚洲乱码电影| 国产精品观看在线亚洲人成网| www.成人免费视频| 国产精品久久久久一区| 激情综合网婷婷| 97品白浆高清久久久久久| 中文字幕在线观看亚洲| 黄色大片网站在线观看| 国产经典欧美精品| 亚洲图片小说在线| 东京一区二区| 亚洲精美色品网站| 久久久久久久黄色| 国内精品自线一区二区三区视频| 日本午夜精品一区二区三区| 超清av在线| 欧美成人午夜电影| 人人澡人人澡人人看| 日韩激情av在线| 久久久久久久久久久一区| 国语对白在线刺激| 日韩精品自拍偷拍| 欧美丰满熟妇bbbbbb| 久久精品国内一区二区三区| 日韩av影视| 吞精囗交69激情欧美| 日韩av中文字幕在线| 日韩av无码中文字幕| 国产精品资源在线观看| 永久免费精品视频网站| 青青青国产精品| 日韩小视频在线| 国产又粗又猛又爽又黄的| 中文无字幕一区二区三区| 国产精品人人妻人人爽人人牛| 欧美激情影院| 欧美亚洲日本网站| 国产又爽又黄网站亚洲视频123| 亚洲成人在线网站| 亚洲图片欧美另类| 亚洲人成免费| 精品欧美一区二区在线观看视频 | 黄色美女一级片| 亚洲一线二线三线久久久| 国产免费无码一区二区| 欧美人成在线| 国产日韩欧美一区二区| 日韩脚交footjobhd| 亚洲女人天堂网| 成人午夜精品视频| 国产精品久久久久久久久快鸭| 在线观看岛国av| 一二三区不卡| 99视频在线播放| 国产ktv在线视频| 日韩麻豆第一页| 波多野结衣电车痴汉| 国产清纯在线一区二区www| 日本精品久久久久中文字幕| 郴州新闻综合频道在线直播| 91在线网站视频| 51av在线| 中文字幕不卡av| 国产aⅴ一区二区三区| 性久久久久久久久| 亚洲日本精品视频| 精品一区二区三区的国产在线播放| 最近看过的日韩成人| 91蝌蚪精品视频| 日本视频久久久| 欧美尤物美女在线| 亚洲成色777777在线观看影院| 二区视频在线观看| 中文一区二区完整视频在线观看| 深爱五月综合网| 99精品久久| 亚洲成人自拍视频| 第一区第二区在线| 国产精品99久久久久久白浆小说 | 亚洲产国偷v产偷v自拍涩爱| 欧美日韩免费观看中文| 超碰人人人人人人人| 懂色av中文字幕一区二区三区| 三级4级全黄60分钟| 一区二区国产在线| 欧美成熟毛茸茸复古| 亚洲资源在线| 国模视频一区二区三区| 91激情在线| 日韩成人中文电影| 国产精品国产三级国产普通话对白 | 91麻豆精品国产综合久久久久久| 伊人国产在线观看| 中文字幕免费不卡在线| 美女搡bbb又爽又猛又黄www| 日韩不卡一二三区| 国产二级片在线观看| 日韩一区电影| 蜜桃成人在线| 国产91精品入| 91色中文字幕| 九色成人搞黄网站| 91精品国产色综合久久不卡98口| 美女写真理伦片在线看| 亚洲少妇中文在线| 国 产 黄 色 大 片| 欧美日韩的一区二区| 日本a级c片免费看三区| 亚洲v中文字幕| 乱h高h女3p含苞待放| 国产精品毛片大码女人| 美国黄色一级毛片| 成人一级黄色片| 日本一二三区在线| 精品一区二区三区免费播放| 我看黄色一级片| 久久精品30| 免费看一级大黄情大片| 欧美午夜不卡影院在线观看完整版免费| 天天久久人人| 神马影视一区二区| 久久99欧美| 国偷自产av一区二区三区| 亚洲伊人久久综合| 亚洲欧洲二区| 成人av在线网址| 免费一级欧美在线观看视频| 国产精品高潮呻吟视频| 都市激情亚洲综合| 欧美重口另类videos人妖| 国产理论在线| 亚洲91精品在线| 91九色国产在线播放| 欧美国产第一页| 精灵使的剑舞无删减版在线观看| 久久综合久久美利坚合众国| 成人在线网址| 久热精品视频在线免费观看 | 精品欧美久久| 日韩精品一区二区三区色偷偷| 伊人久久大香线蕉av不卡| 欧美日韩精品免费观看视一区二区| 色橹橹欧美在线观看视频高清| 国产乱码精品一区二区三区中文| 都市激情久久| 免费电影一区| 成人精品久久| 天天成人综合网| 一区二区三区四区电影| 777久久精品一区二区三区无码| 欧美涩涩网站| 无码专区aaaaaa免费视频| 国产欧美91| av视屏在线播放| 精品在线播放午夜| 免费看的av网站| 成人激情免费网站| 无码人妻精品一区二区三区温州| 久久一夜天堂av一区二区三区| 制服 丝袜 综合 日韩 欧美| 国产精品久久久久久亚洲毛片| 日本黄色片免费观看| 亚洲图片欧美色图| 中文字幕一区在线播放| 666欧美在线视频| 好吊色在线观看| 国产一区二区三区精品久久久| 免费黄色在线观看| 国内精品视频在线| 亚洲成人av观看| 91久久爱成人| 久操精品在线| 国产又大又长又粗又黄| 日韩香蕉视频| 中文字幕亚洲乱码| 成人污视频在线观看| 懂色av蜜桃av| 亚洲主播在线播放| 免费看av在线| 精品美女在线观看| av在线免费观看网| 久久久久久九九九| 99re久久| 国产亚洲一区在线播放| 久久精品99久久无色码中文字幕| 大西瓜av在线| 青娱乐精品在线视频| 美女扒开腿免费视频| 国产精品久久久久桃色tv| 国产无套粉嫩白浆内谢| 精品视频在线看| 午夜小视频免费| 精品国产一区av| 亚洲日本天堂| 国产精品18毛片一区二区| 日韩在线二区| 哪个网站能看毛片| 高清在线观看日韩| 在线观看天堂av| 欧美性猛交xxxx偷拍洗澡| 性一交一乱一乱一视频| 怡红院精品视频| 欧美亚洲日本精品| 成人av免费电影| 99热在线成人| 四季av一区二区| 91日韩精品一区| 国产精品成人av久久| 91麻豆精品91久久久久久清纯| 国产在线中文字幕| 欧美亚洲免费电影| 免费成人蒂法| 日本阿v视频在线观看| 国产伦精品一区二区三区在线观看| 成人国产精品久久久网站| 午夜精品久久久久久久久| 国产婷婷一区二区三区久久| 中文字幕免费国产精品| a一区二区三区| 久久久神马电影| 国产亚洲亚洲| 精品人妻一区二区三区香蕉 | av成人综合| 好吊色这里只有精品| 久久精品国产77777蜜臀| 亚洲欧洲久久久| 91福利国产精品| 国产视频三级在线观看播放| 欧美亚洲成人精品| 玖玖玖免费嫩草在线影院一区| 国产一二三在线视频| 丁香婷婷综合色啪| 国产在线观看成人| 亚洲成成品网站| 国产无遮挡裸体视频在线观看| http;//www.99re视频| 欧美日韩视频| 黄色av电影网站| 婷婷综合在线观看| 日韩精品福利| 日韩女优在线播放| 精品国产美女| 亚洲成人天堂网| 中文字幕一区二区三区视频| 国产原创中文av| 欧美精品免费在线观看| 高潮久久久久久久久久久久久久 | 欧美日韩偷拍视频| 欧美大片日本大片免费观看| 国产精品一区hongkong| 精品中文字幕人| 久久在线91| 刘亦菲国产毛片bd| 欧美一区二区视频在线观看2022| 最新黄网在线观看| 国产精品自拍首页| 久久久国产精品一区二区中文| 日韩影视一区二区三区| 91精品一区二区三区在线观看| 午夜小视频福利在线观看| 狠狠色噜噜狠狠色综合久| 老妇喷水一区二区三区| 国产精品suv一区二区88| 欧美刺激脚交jootjob| 麻豆理论在线观看| 亚洲春色在线| 国产白丝网站精品污在线入口| 国产又爽又黄的视频| 在线播放日韩专区| 色播一区二区| 欧美一级片中文字幕| 中文字幕一区二区三区精华液 | 大桥未久av一区二区三区中文| 天天操天天摸天天干| 日韩网站免费观看| 精品人人人人| 亚洲精品视频导航| 亚洲一区日韩精品中文字幕| 久久经典视频| 亚洲aa中文字幕| 免费永久网站黄欧美| 黄色一级大片在线免费观看| 亚洲国产精品va在线看黑人| 91成人抖音| 久久精品视频16| 亚洲欧洲日韩一区二区三区| 黑人乱码一区二区三区av| 国产精品视频26uuu| 在线国产精品一区| 成年人二级毛片| 一级做a爰片久久毛片美女图片|