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

如何建立一個完美的 Python 項目

開發 前端
當開始一個新的 Python 項目時,大家很容易一頭扎進去就開始編碼。其實花一點時間選擇優秀的庫,將為以后的開發節省大量時間,并帶來更快樂的編碼體驗。

 [[385414]]

當開始一個新的 Python 項目時,大家很容易一頭扎進去就開始編碼。其實花一點時間選擇優秀的庫,將為以后的開發節省大量時間,并帶來更快樂的編碼體驗。

在理想世界中,所有開發人員的關系是相互依賴和關聯的(協作開發),代碼要有完美的格式、沒有低級的錯誤、并且測試覆蓋了所有代碼。另外,所有這些將在每次提交時都可以得到保證。(代碼風格統一、類型檢測、測試覆蓋率高、自動檢測)

在本文中,我將介紹如何建立一個可以做到這些點的項目。您可以按照步驟操作,也可以直接跳到 使用 cookiecutter 生成項目  部分(老手)。

首先,讓我們創建一個新的項目目錄:

  1. mkdir best_practices 
  2. cd best_practices 

pipx 安裝 Python 三方庫的命令行工具

Pipx [2] 是一個可用于快速安裝 Python 三方庫的命令行工具。我們將使用它來安裝 pipenv 和 cookiecutter。通過下面的命令安裝 pipx:

  1. python3 -m pip install --user pipx 
  2. python3 -m pipx ensurepath 

使用 pipenv 進行依賴管理

Pipenv [3] 為您的項目自動創建和管理 virtualenv(虛擬環境),并在安裝/卸載軟件包時從 Pipfile 添加/刪除軟件包。它還會生成非常重要的 Pipfile.lock 用于保證依賴的可靠性。

當你知道,你和你的隊友正在使用相同的庫版本時,這將會極大地提高編程的信心和樂趣。Pipenv 很好地解決了使用相同的庫,版本不同的這一問題,Pipenv 在過去的一段時間里獲得了廣泛的關注和認可,你可以放心使用。安裝命令如下:

  1. pipx install pipenv 

使用 black 和 isort 進行代碼格式化

black [4] 可以格式化我們的代碼:

Black 是毫不妥協的 Python 代碼格式化庫。通過使用它,你將放棄手動調整代碼格式的細節。作為回報,Black 可以帶來速度、確定性和避免調整 Python 代碼風格的煩惱,從而有更多的精力和時間放在更重要的事情上。

無論你正在閱讀什么樣的項目,用 black 格式化過的代碼看起來都差不多。一段時間后格式不再是問題,這樣你就可以更專注于內容。

black 通過減少代碼的差異性,使代碼檢查更快。

而 isort [5] 是對我們的 imports 部分進行排序:

isort 為您導入的 Python 包部分(imports)進行排序,因此你不必再對 imports 進行手動排序。它可以按字母順序對導入進行排序,并自動將其拆分成多個部分。

使用 pipenv 安裝它,以便它們不會使部署混亂(可以指定只在開發環境安裝):

  1. pipenv install black isort --dev 

Black 和 isort 并不兼容的默認選項,因此我們將讓 isort 遵循 black 的原則。創建一個 setup.cfg 文件并添加以下配置:

  1. [isort] 
  2. multi_line_output=3 
  3. include_trailing_comma=True 
  4. force_grid_wrap=0 
  5. use_parentheses=True 
  6. line_length=88 

我們可以使用以下命令運行這些工具:

  1. pipenv run black 
  2. pipenv run isort 

使用 flake8 保證代碼風格

Flake8 確保代碼遵循 PEP8 中定義的標準 Python 代碼規范。使用 pipenv 安裝:

  1. pipenv install flake8 --dev 

就像 isort 一樣,它需要一些配置才能很好地與 black 配合使用。將這些配置添加到 setup.cfg :

  1. [flake8] 
  2. ignore = E203, E266, E501, W503 
  3. max-line-length = 88 
  4. max-complexity = 18 
  5. select = B,C,E,F,W,T4 

現在我們可以運行 flake8 了,命令: pipenv run flake8 。

使用 mypy 進行靜態類型檢查

Mypy [6] 是 Python 的非強制的靜態類型檢查器,旨在結合動態(或 “鴨子”)類型和靜態類型的優點。Mypy 將 Python 的表達能力和便利性與功能強大的類型系統的編譯時類型檢查結合在一起,使用任何 Python VM 運行它們,基本上沒有運行時開銷。

在 Python 中使用類型需要一點時間來適應,但是好處卻是巨大的。如下:

  • 靜態類型可以使程序更易于理解和維護

  • 靜態類型可以幫助您更早地發現錯誤,并減少測試和調試的時間

  • 靜態類型可以幫助您在代碼投入生產之前發現難以發現的錯誤

  1. pipenv install mypy --dev 

默認情況下,Mypy 將遞歸檢查所有導入包的類型注釋,當庫不包含這些注釋時,就會報錯。我們需要將 mypy 配置為僅在我們的代碼上運行,并忽略沒有類型注釋的導入錯誤。我們假設我們的代碼位于以下配置的 best_practices 包中。將此添加到 setup.cfg :

  1. [mypy] 
  2. files=best_practices,test 
  3. ignore_missing_imports=true 

現在我們可以運行 mypy 了:

  1. pipenv run mypy 

這是一個有用的 備忘單 [7] 。

用 pytest 和 pytest-cov 進行測試

使用 pytest [8] 編寫測試非常容易,消除編寫測試的阻力意味著可以快速的編寫更多的測試!

  1. pipenv install pytest pytest-cov --dev 

這是 pytest 網站上的一個簡單示例:

  1. # content of test_sample.py 
  2. def inc(x): 
  3.     return x + 1 
  4.  
  5. def test_answer(): 
  6.     assert inc(3) == 5 

要執行它:

  1. $ pipenv run pytest 
  2. =========================== test session starts ============================ 
  3. platform linux -- Python 3.x.y, pytest-5.x.y, py-1.x.y, pluggy-0.x.y 
  4. cachedir: $PYTHON_PREFIX/.pytest_cache 
  5. rootdir: $REGENDOC_TMPDIR 
  6. collected 1 item 
  7.  
  8. test_sample.py F                                                     [100%] 
  9.  
  10. ================================= FAILURES ================================= 
  11. _______________________________ test_answer ________________________________ 
  12.  
  13.     def test_answer(): 
  14. >       assert inc(3) == 5 
  15. E       assert 4 == 5 
  16. E        +  where 4 = inc(3
  17.  
  18. test_sample.py:6: AssertionError 
  19. ========================= 1 failed in 0.12 seconds ========================= 

我們所有的測試代碼都放在 test 目錄中,因此請將此目錄添加到 setup.cfg :

  1. [tool:pytest] 
  2. testpaths=test 

如果還想查看測試覆蓋率。創建一個新文件 .coveragerc ,指定只返回我們的項目代碼的覆蓋率統計信息。比如示例的 best_practices 項目,設置如下:

  1. [run] 
  2. source = best_practices 
  3.  
  4. [report] 
  5. exclude_lines = 
  6.     # Have to re-enable the standard pragma 
  7.     pragma: no cover 
  8.  
  9.     # Don't complain about missing debug-only code: 
  10.     def __repr__ 
  11.     if self\.debug 
  12.  
  13.     # Don't complain if tests don't hit defensive assertion code: 
  14.     raise AssertionError 
  15.     raise NotImplementedError 
  16.  
  17.     # Don't complain if non-runnable code isn't run: 
  18.     if 0
  19.     if __name__ == .__main__.: 

現在,我們就可以運行測試并查看覆蓋率了。

  1. pipenv run pytest --cov --cov-fail-under=100 

--cov-fail-under=100 是設定項目的測試覆蓋率如果小于 100% 那將認定為失敗。

pre-commit 的 Git hooks

Git hooks 可讓您在想要提交或推送時隨時運行腳本。這使我們能夠在每次提交/推送時,自動運行所有檢測和測試。 pre-commit [9] 可輕松配置這些 hooks。

Git hook 腳本對于在提交代碼審查之前,識別簡單問題很有用。我們在每次提交時都將運行 hooks,以自動指出代碼中的問題,例如缺少分號、尾隨空白和調試語句。通過在 code review 之前指出這些問題,代碼審查者可以專注于變更的代碼內容,而不會浪費時間處理這些瑣碎的樣式問題。

在這里,我們將上述所有工具配置為在提交 Python 代碼改動時執行(git commit),然后僅在推送時運行 pytest coverage(因為測試要在最后一步)。創建一個新文件 .pre-commit-config.yaml ,配置如下:

  1. repos: 
  2.   - repo: local 
  3.     hooks: 
  4.       - id: isort 
  5.         name: isort 
  6.         stages: [commit] 
  7.         language: system 
  8.         entry: pipenv run isort 
  9.         types: [python] 
  10.  
  11.       - id: black 
  12.         name: black 
  13.         stages: [commit] 
  14.         language: system 
  15.         entry: pipenv run black 
  16.         types: [python] 
  17.  
  18.       - id: flake8 
  19.         name: flake8 
  20.         stages: [commit] 
  21.         language: system 
  22.         entry: pipenv run flake8 
  23.         types: [python] 
  24.         exclude: setup.py 
  25.  
  26.       - id: mypy 
  27.         name: mypy 
  28.         stages: [commit] 
  29.         language: system 
  30.         entry: pipenv run mypy 
  31.         types: [python] 
  32.         pass_filenames: false 
  33.  
  34.       - id: pytest 
  35.         name: pytest 
  36.         stages: [commit] 
  37.         language: system 
  38.         entry: pipenv run pytest 
  39.         types: [python] 
  40.  
  41.       - id: pytest-cov 
  42.         name: pytest 
  43.         stages: [push] 
  44.         language: system 
  45.         entry: pipenv run pytest --cov --cov-fail-under=100 
  46.         types: [python] 
  47.         pass_filenames: false 

如果需要跳過這些 hooks,可以運行 git commit --no-verify 或 git push --no-verify

使用 cookiecutter 生成項目

現在,我們已經知道了理想項目中包含了什么,我們可以將其轉換為 模板 [10] 從而可以使用單個命令生成一個包含這些庫和配置的新項目:

  1. pipx run cookiecutter gh:sourcery-ai/python-best-practices-cookiecutter 

填寫項目名稱和倉庫名稱,將為您生成新的項目。

要完成設置,請執行下列步驟:

  1. # Enter project directory 
  2. cd <repo_name> 
  3.  
  4. # Initialise git repo 
  5. git init 
  6.  
  7. # Install dependencies 
  8. pipenv install --dev 
  9.  
  10. # Setup pre-commit and pre-push hooks 
  11. pipenv run pre-commit install -t pre-commit 
  12. pipenv run pre-commit install -t pre-push 

模板項目包含一個非常簡單的 Python 文件和測試,可以試用上面這些工具。在編寫完代碼覺得沒問題后,就可以執行第一次 git commit ,所有的 hooks 都將運行。

集成到編輯器

雖然在提交時知道項目的代碼始終保持最高水準是件令人興奮的事情。但如果在代碼已全部修改完成之后(提交時),再發現有問題還是會讓人很不爽。所以,實時暴露出問題要好得多。

在保存文件時,花一些時間確保代碼編輯器運行這些命令。有及時的反饋,這意味著你可以在代碼還有印象的時候能迅速解決引入的任何小問題。

我個人使用一些出色的 Vim 插件來完成此任務:

  • ale [11] 實時運行 flake8 并在保存文件時運行 black、isort 和 mypy

  • 與 projectionist 集成的 [12] vim-test [13] 在文件保存上運行 pytest

 

責任編輯:張燕妮 來源: HelloGitHub
相關推薦

2020-07-24 20:49:10

代碼Request審查

2022-04-14 15:53:12

開發瀑布流組件

2024-06-20 07:59:49

2015-10-16 10:19:01

2020-10-26 09:53:44

Dropbox攻擊網絡安全

2019-09-03 11:32:36

PythonLinux操作系統

2020-10-23 10:36:08

Dropbox

2023-05-09 07:10:53

2019-05-15 09:00:00

決策樹機器學習人工智能

2013-06-24 13:51:47

手機用戶體驗移動應用移動互聯網市場

2009-09-11 09:36:53

李開復

2020-09-17 10:58:58

IT文化首席信息官領導者

2017-02-13 16:47:13

iOSDSL開發

2009-07-07 08:56:07

虛擬化

2015-07-29 10:00:16

開源項目

2013-08-26 13:58:20

2014-10-21 10:25:50

程序員

2022-03-29 08:55:18

存儲引擎核心

2013-12-31 10:51:02

開發App手游移動開發

2018-02-24 15:48:53

點贊
收藏

51CTO技術棧公眾號

久久视频在线| sm久久捆绑调教精品一区| 日韩av不卡在线观看| 伊人av综合网| 国产精品久久久久久9999| 国产盗摄一区二区| 国产亚洲精品资源在线26u| 国产美女被下药99| 日韩三级免费看| 日韩av久操| 精品久久久久久久人人人人传媒| 久久久久国产一区二区三区| xxxxwww一片| 中文字幕高清在线播放| 国产精品福利一区二区三区| 狠狠爱一区二区三区| 波多野结衣mp4| 激情综合电影网| 一个人www欧美| 国产精品嫩草69影院| 精品3atv在线视频| 一区二区免费视频| 日日夜夜精品网站| 五月婷婷六月丁香综合| 国产一区二区三区久久悠悠色av| 欧美亚洲午夜视频在线观看| 91九色丨porny丨极品女神| 欧美男gay| 亚洲第一页在线| 欧美一级小视频| 性欧美1819sex性高清| 亚洲综合一区在线| 一区二区三区四区久久| 国产在线视频资源| 不卡的av电影| 春色成人在线视频| 国产免费无遮挡| 日本sm残虐另类| 日本电影亚洲天堂| 偷偷操不一样的久久| 欧美日本中文| 久久九九国产精品怡红院 | 欧美成欧美va| 99久久99热这里只有精品| 国产亚洲美女久久| 成人午夜福利一区二区| 日韩av资源网| 亚洲精品美女在线观看播放| 日批免费观看视频| 日韩高清在线观看一区二区| 在线播放91灌醉迷j高跟美女| 黄色三级视频片| 都市激情综合| 一本大道久久a久久综合婷婷 | 蜜桃av综合| 57pao精品| 中文字幕在线观看视频网站| 一本久道久久综合狠狠爱| 欧美—级a级欧美特级ar全黄 | 欧美日韩亚洲一区二区三区| 霍思燕三级露全乳照| 都市激情久久综合| 亚洲成人动漫一区| 亚洲国产精品无码观看久久| 国产黄色大片在线观看| 亚洲成a天堂v人片| 国产91xxx| 三级中文字幕在线观看| 一本大道久久a久久精二百| 国产精品欧美激情在线观看| 欧美羞羞视频| 欧美日韩一本到| 久久精品一二三四| 国产精品巨作av| 日韩激情视频在线| 人人妻人人澡人人爽| 欧美国产美女| 欧美国产一区二区三区| 国产情侣在线视频| 久久一综合视频| 成人精品aaaa网站| 亚洲国产精品久久久久久久| 9人人澡人人爽人人精品| 欧美日产一区二区三区在线观看| 国产黄在线播放| 亚洲视频一区在线观看| 日韩小视频网站| 欧美亚洲大片| 91精品国产福利在线观看| 国内精品免费视频| 国产日产一区| 欧美美女15p| www.色国产| 国产综合一区二区| 国产精品永久入口久久久| 理论在线观看| 亚洲精品视频在线观看网站| 久在线观看视频| 国产精品伦一区二区| 91精品视频网| 人妻无码一区二区三区| 欧美肥老太太性生活| 91国内揄拍国内精品对白| 波多野结衣小视频| 成熟亚洲日本毛茸茸凸凹| 日韩欧美亚洲区| 久草免费在线色站| 欧美亚洲一区二区在线| 亚洲欧美日韩偷拍| 97视频精品| 青青草一区二区| 亚洲产国偷v产偷v自拍涩爱| 欧美激情一区二区在线| 青青草精品视频在线| 福利一区在线| 亚洲精品小视频| 91杏吧porn蝌蚪| 欧美a级一区二区| 国产综合精品一区二区三区| 美女写真理伦片在线看| 色婷婷亚洲婷婷| 美女搡bbb又爽又猛又黄www| 99久久99视频只有精品| 国产精品 欧美在线| 欧美视频一二区| 亚洲男人的天堂网| 亚洲精品久久久中文字幕| 免费福利视频一区| 欧美日韩国产成人高清视频| 亚洲在线精品视频| 国产午夜亚洲精品不卡| 91视频 -- 69xx| 91综合久久爱com| 欧美精品一区在线播放| 91女人18毛片水多国产| 日本一区二区三区久久久久久久久不| 免费看又黄又无码的网站| 综合视频一区| 久久6免费高清热精品| 在线视频你懂得| 日本一区二区三区dvd视频在线| 欧美 日韩 亚洲 一区| 亚洲一二av| 欧美高清视频在线播放| 国产欧美日韩综合精品一区二区三区| 国产女人18水真多18精品一级做 | 久久久久久久福利| 国产精品一区二区果冻传媒| 国产精品夜夜夜爽张柏芝| 九九久久国产| 丝袜美腿精品国产二区| 中文资源在线播放| 国产精品少妇自拍| av污在线观看| 欧美电影免费| 亚洲伊人一本大道中文字幕| 国产高清一区二区三区视频| 91 com成人网| 强行糟蹋人妻hd中文| 国产黑丝在线一区二区三区| 国产一区二区片| 岛国av一区| 欧美一区二区影院| 国产视频在线看| 欧美日韩一区二区三区四区五区 | 成人影院在线| 国产乱人伦真实精品视频| 日本在线天堂| 制服视频三区第一页精品| 波多野结衣家庭教师| 顶级嫩模精品视频在线看| 成年人网站免费视频| 亚州综合一区| 国产精品第3页| 国产三区在线观看| 精品国产电影一区二区| 少妇一级淫片免费放中国| 久久综合九色综合欧美就去吻 | 亚洲成人午夜在线| 国产精久久一区二区| 久久免费视频网| 久草在现在线| 日韩一区二区免费视频| 亚洲伊人成人网| 国产精品女主播av| 无码人妻aⅴ一区二区三区玉蒲团| 最新日韩在线| 亚洲 国产 日韩 综合一区| 国产精品亚洲欧美一级在线 | 精品少妇theporn| 久久品道一品道久久精品| 一区二区xxx| 国产综合精品| 神马影院午夜我不卡影院| 国产精品美女久久久久| 91精品国产色综合久久不卡98口| 成人午夜电影在线观看| 日韩欧美色综合| 男人天堂2024| 亚洲男人的天堂在线观看| 爱爱的免费视频| 国内精品伊人久久久久av一坑| 黄色一级在线视频| 五月天激情综合网| 蜜桃传媒视频麻豆第一区免费观看 | 99久久婷婷国产一区二区三区| 亚洲福中文字幕伊人影院| 99re6热在线精品视频| 99麻豆久久久国产精品免费| 蜜臀一区二区三区精品免费视频 | 青青草精品视频在线观看| 欧美日韩亚洲国产精品| 亚洲午夜久久久影院伊人| 欧美电影免费网站| 91在线视频精品| 国产精品扒开腿做爽爽爽视频软件| 久久国产精品久久久| 国产精品免费播放| 亚洲国产成人精品女人久久久| 国产又大又粗又硬| 欧美自拍丝袜亚洲| 可以免费看的av毛片| 一个色妞综合视频在线观看| 中文字幕第69页| 国产网站一区二区三区| 真人bbbbbbbbb毛片| 国产风韵犹存在线视精品| 91福利免费观看| 麻豆精品视频在线观看视频| 久久久久久久久久久免费视频| 欧美天堂亚洲电影院在线观看| 日韩久久不卡| 免费观看不卡av| 国产一区免费视频| jizz久久精品永久免费| 亚洲精品日产aⅴ| 91成人在线网站| 成人国产精品久久久| 国产亚洲精品精品国产亚洲综合| 国产精品7m视频| 亚洲播播91| 日韩免费中文字幕| 国偷自产一区二区免费视频| 欧美亚洲国产另类| 小草在线视频免费播放| 2018日韩中文字幕| 在线免费三级电影网站| 欧美怡春院一区二区三区| 韩国精品一区| 456国产精品| 老色鬼在线视频| 97视频免费在线看| 美女搞黄视频在线观看| 欧美一区二区影院| 在线中文字幕播放| 日韩美女在线观看一区| 台湾佬中文娱乐久久久| 国产精品成人v| 国产亚洲欧美日韩精品一区二区三区| 国产乱肥老妇国产一区二| 国产精品va视频| 国产精品久久久久免费| 免费福利视频一区| 日韩videos| 99久久99久久精品国产片桃花| 国产系列第一页| 狠狠色狠狠色综合日日tαg| 欧洲精品一区二区三区久久| 国产亚洲激情| 国产精品无码av无码| 久久99久久久欧美国产| 国产一级二级av| 99久久精品免费精品国产| 色无极影院亚洲| 中文av一区特黄| 欧产日产国产v| 精品久久久久久国产| 蜜臀尤物一区二区三区直播| 欧美麻豆精品久久久久久| 国产高潮在线观看| 日韩av网站导航| 日韩黄色影院| 久久久久久91| 精品3atv在线视频| 亚洲影院色在线观看免费| 日本一道高清一区二区三区| 日韩高清国产精品| 欧美三级视频| 国产精品人人妻人人爽人人牛| 麻豆精品在线播放| 小毛片在线观看| 国产精品网曝门| 日本免费一二三区| 欧美日韩在线三区| 成人久久精品人妻一区二区三区| 亚洲欧美中文字幕在线一区| av在线官网| 日本亚洲欧洲色α| 欧美成年网站| 日韩一区二区三区高清| 国产精品99一区二区| 国产欧美高清在线| 福利一区在线观看| www中文在线| 红桃视频成人在线观看| 国产精品国产精品国产专区| 日韩精品在线第一页| av片哪里在线观看| 国产国产精品人在线视| 91综合精品国产丝袜长腿久久| 亚洲精品在线视频观看| 亚洲理伦在线| 4438x全国最大成人| 国产精品久久看| 久久精品视频7| 精品久久99ma| 国产精品扒开做爽爽爽的视频| 欧美影院久久久| 91免费精品国偷自产在线在线| 正在播放91九色| 久久先锋影音| 99久久国产精| 亚洲高清视频的网址| 国产情侣激情自拍| 中日韩午夜理伦电影免费| 神马久久午夜| 狠狠干一区二区| 精品999成人| 欧美一级大片免费看| 最新国产成人在线观看| 亚洲国产无线乱码在线观看| 日韩成人在线网站| 成年人国产在线观看| 亚洲a在线观看| 欧美成人激情| 欧美女同在线观看| 中文字幕乱码一区二区免费| 福利网址在线观看| 精品一区二区三区电影| 九九色在线视频| 大波视频国产精品久久| 韩日成人在线| 亚洲乱妇老熟女爽到高潮的片| 亚洲美女淫视频| 亚洲va天堂va欧美ⅴa在线| 美女性感视频久久久| 97久久中文字幕| 国产系列第一页| 国产一区二区三区免费在线观看| 日本精品在线免费观看| 91麻豆精品国产综合久久久久久 | 九一精品在线观看| 国产午夜亚洲精品不卡| 中文字幕777| 在线不卡国产精品| 欧美videos粗暴| 亚洲第一精品区| 国产精品自产自拍| 国产一级片久久| 亚洲黄在线观看| 中文在线а√在线8| 日韩欧美亚洲在线| 精品影院一区二区久久久| 免费三级在线观看| 欧美成人在线直播| 理论不卡电影大全神| 麻豆91av| 麻豆视频观看网址久久| 妺妺窝人体色www聚色窝仙踪| 亚洲电影免费观看高清| 无遮挡爽大片在线观看视频| 日韩一区二区三区资源| 国产自产高清不卡| 国产污视频在线看| 亚洲深夜福利视频| 日韩成人免费av| 老司机激情视频| 久久亚洲一级片| 91中文字幕在线播放| 欧美极品第一页| 精品美女视频| 亚洲AV无码久久精品国产一区| 亚洲高清免费视频| wwwww在线观看免费视频| 91深夜福利视频| 一本久久综合| 成人一级片免费看| 精品乱人伦一区二区三区| 成人性生交大片免费观看网站| 亚洲一区二区精品在线| 处破女av一区二区| 国内成+人亚洲| 青青久在线视频免费观看| 国产精品视频你懂的| 亚洲无码久久久久| 欧美黑人一级爽快片淫片高清| 一区二区美女| 日本一二三四区视频| 日本精品视频一区二区| 欧美xxx黑人xxx水蜜桃|