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

幾個被淘汰的Python庫,請不要再用!

開發 前端
隨著每個 Python 版本的發布,都會添加新模塊,并引入新的更好的做事方式,雖然我們都習慣了使用好的舊 Python 庫和某些做事方式,但現在也時候升級并利用新的和改進的模塊及其特性了。

隨著每個 Python 版本的發布,都會添加新模塊,并引入新的更好的做事方式,雖然我們都習慣了使用好的舊 Python 庫和某些做事方式,但現在也時候升級并利用新的和改進的模塊及其特性了。

Pathlib 而不是 OS

pathlib 絕對是 Python 標準庫中最近添加的更大的內容之一, 自 Python 3.4 以來,它一直是標準庫的一部分,但很多人仍然使用 os 模塊進行文件系統操作。

然而,pathlib 與舊的 os.path 相比具有許多優點 - 雖然 os 模塊以原始字符串格式表示路徑,但 pathlib 使用面向對象的樣式,這使得它更具可讀性和編寫自然:

from pathlib import Path
import os.path

# 老方式
two_dirs_up = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
# 新方式,可讀性強
two_dirs_up = Path(__file__).resolve().parent.parent

路徑被視為對象而不是字符串這一事實也使得可以創建一次對象,然后查找其屬性或對其進行操作:

readme = Path("README.md").resolve()

print(f"Absolute path: {readme.absolute()}")
# Absolute path: /home/martin/some/path/README.md
print(f"File name: {readme.name}")
# File name: README.md
print(f"Path root: {readme.root}")
# Path root: /
print(f"Parent directory: {readme.parent}")
# Parent directory: /home/martin/some/path
print(f"File extension: {readme.suffix}")
# File extension: .md
print(f"Is it absolute: {readme.is_absolute()}")
# Is it absolute: True

我最喜歡 pathlib 的一個特性是可以使用 /(“除法”)運算符來連接路徑:

# Operators:
etc = Path('/etc')

joined = etc / "cron.d" / "anacron"
print(f"Exists? - {joined.exists()}")
# Exists? - True

重要的是要注意 pathlib 只是替代 os.path 而不是整個 os 模塊, 它還包括 glob 模塊的功能,因此如果你習慣于將 os.path 與 glob.glob 結合使用,那么你可以完全用pathlib替代它們。

在上面的片段中,我們展示了一些方便的路徑操作和對象屬性,但 pathlib 還包括你習慣于 os.path 的所有方法,例如:

print(f"Working directory: {Path.cwd()}")  # same as os.getcwd()
# Working directory: /home/martin/some/path
Path.mkdir(Path.cwd() / "new_dir", exist_ok=True)  # same as os.makedirs()
print(Path("README.md").resolve())  # same as os.path.abspath()
# /home/martin/some/path/README.md
print(Path.home())  # same as os.path.expanduser()
# /home/martin

有關 os.path 函數到 pathlib 中新函數的完整映射,請參閱 官方文檔。

Secrets 而不是 OS

說到 os 模塊,你應該停止使用的另一部分是 os.urandom。相反,你應該使用自 Python 3.6 以來可用的新秘密模塊:

# 老方式:
import os

length = 64

value = os.urandom(length)
print(f"Bytes: {value}")
# Bytes: b'\xfa\xf3...\xf2\x1b\xf5\xb6'
print(f"Hex: {value.hex()}")
# Hex: faf3cc656370e31a938e7...33d9b023c3c24f1bf5

# 新方式:
import secrets

value = secrets.token_bytes(length)
print(f"Bytes: {value}")
# Bytes: b'U\xe9n\x87...\x85>\x04j:\xb0'
value = secrets.token_hex(length)
print(f"Hex: {value}")
# Hex: fb5dd85e7d73f7a08b8e3...4fd9f95beb08d77391

使用 os.urandom 實際上并不是這里的問題,引入secrets模塊的原因是因為人們使用隨機模塊來生成密碼等,即使隨機模塊不產生密碼安全令牌。

根據文檔,隨機模塊不應用于安全目的, 你應該使用 secrets 或 os.urandom,但 secrets 模塊絕對更可取,因為它比較新,并且包含一些用于十六進制令牌的實用程序/便利方法以及 URL 安全令牌。

Zoneinfo 而不是 pytz

在 Python 3.9 之前,沒有用于時區操作的內置庫,所以每個人都在使用 pytz,但現在我們在標準庫中有 zoneinfo,所以是時候切換了。

from datetime import datetime
import pytz  # pip install pytz

dt = datetime(2022, 6, 4)
nyc = pytz.timezone("America/New_York")

localized = nyc.localize(dt)
print(f"Datetime: {localized}, Timezone: {localized.tzname()}, TZ Info: {localized.tzinfo}")

# 新方式:
from zoneinfo import ZoneInfo

nyc = ZoneInfo("America/New_York")
localized = datetime(2022, 6, 4, tzinfo=nyc)
print(f"Datetime: {localized}, Timezone: {localized.tzname()}, TZ Info: {localized.tzinfo}")
# Datetime: 2022-06-04 00:00:00-04:00, Timezone: EDT, TZ Info: America/New_York

datetime 模塊將所有時區操作委托給抽象基類 datetime.tzinfo, 這個抽象基類需要一個具體的實現——在引入這個很可能來自 pytz 的模塊之前?,F在我們在標準庫中有 zoneinfo,我們可以使用它。

然而,使用 zoneinfo 有一個警告——它假定系統上有可用的時區數據,UNIX 系統就是這種情況, 如果你的系統沒有時區數據,那么你應該使用 tzdata 包,它是由 CPython 核心開發人員維護的第一方庫,其中包含 IANA 時區數據庫。

Dataclasses

Python 3.7 的一個重要補充是 dataclasses 包,它是 namedtuple 的替代品。

你可能想知道為什么需要替換 namedtuple?以下是你應該考慮切換到數據類的一些原因:

  • 1、它可以是可變的
  • 2、默認提供 repr、eq、init、hash 魔術方法,
  • 3、允許指定默認值,
  • 4、支持繼承。此外,數據類還支持 frozen 和 slots(從 3.10 開始)屬性以提供與命名元組的特征奇偶校驗。

切換真的不應該太難,因為你只需要更改定義:

# 老方式:
# from collections import namedtuple
from typing import NamedTuple
import sys

User = NamedTuple("User", [("name", str), ("surname", str), ("password", bytes)])

u = User("John", "Doe", b'tfeL+uD...\xd2')
print(f"Size: {sys.getsizeof(u)}")
# Size: 64

# 新方式:
from dataclasses import dataclass

@dataclass()
class User:
   name: str
   surname: str
   password: bytes

u = User("John", "Doe", b'tfeL+uD...\xd2')

print(u)
# User(name='John', surname='Doe', password=b'tfeL+uD...\xd2')

print(f"Size: {sys.getsizeof(u)}, {sys.getsizeof(u) + sys.getsizeof(vars(u))}")
# Size: 48, 152

在上面的代碼中,我們還包含了大小比較,因為這是 namedtuple 和數據類之間的較大差異之一,如上所見,命名元組的大小要小得多,這是由于數據類使用 dict 來表示屬性。

至于速度比較,除非你計劃創建數百萬個實例,否則屬性的訪問時間應該基本相同,或者不夠重要:

import timeit

setup = '''
from typing import NamedTuple
User = NamedTuple("User", [("name", str), ("surname", str), ("password", bytes)])
u = User("John", "Doe", b'')
'''

print(f"Access speed: {min(timeit.repeat('u.name', setup=setup, number=10000000))}")
# Access speed: 0.16838401100540068

setup = '''
from dataclasses import dataclass

@dataclass(slots=True)
class User:
  name: str
  surname: str
  password: bytes

u = User("John", "Doe", b'')
'''

print(f"Access speed: {min(timeit.repeat('u.name', setup=setup, number=10000000))}")
# Access speed: 0.17728697300481144

如果以上內容說服了你打算切換到數據類,請盡快嘗試吧

相反,如果你不想切換并且出于某種原因真的想使用命名元組,那么你至少應該使用鍵入模塊而不是collections中的 NamedTuple:

# 不好方式的:
from collections import namedtuple
Point = namedtuple("Point", ["x", "y"])

# 更好的方式:
from typing import NamedTuple
class Point(NamedTuple):
    x: float
    y: float

最后,如果你既不使用 namedtuple 也不使用數據類,你可能需要考慮直接使用 Pydantic。

Proper Logging 而不是 print

這不是標準庫的最新添加,但值得使用 - 你應該使用正確的日志記錄而不是打印語句, 如果你在本地調試問題,則可以使用 print,但對于任何無需用戶干預即可運行的生產就緒程序,正確的日志記錄是必須的。

特別是考慮到設置 Python 日志記錄非常簡單:

import logging
logging.basicConfig(
    filename='application.log',
    level=logging.WARNING,
    format='[%(asctime)s] {%(pathname)s:%(lineno)d} %(levelname)s - %(message)s',
    datefmt='%H:%M:%S'
)

logging.error("Some serious error occurred.")
# [12:52:35] {<stdin>:1} ERROR - Some serious error occurred.
logging.warning('Some warning.')
# [12:52:35] {<stdin>:1} WARNING - Some warning.

與打印語句相比,上面的簡單配置將為你提供卓越的調試體驗, 最重要的是,你可以進一步自定義日志庫以記錄到不同的位置、更改日志級別、自動輪換日志等。

f-strings 而不是 format

Python 包含很多格式化字符串的方法,包括 C 樣式格式化、f 字符串、模板字符串或 .format 函數, 不過,其中之一 - f-strings - 格式化的字符串文字 , 它們寫起來更自然,可讀性更強,并且是前面提到的選項中最快的。

因此,我認為沒有必要爭論或解釋為什么要使用它們,然而,在某些情況下不能使用 f 字符串:

使用 % 格式的唯一原因是用于記錄:

import logging

things = "something happened..."

logger = logging.getLogger(__name__)
logger.error("Message: %s", things)  # 評估內部記錄器方法
logger.error(f"Message: {things}")  # 立即評估

在上面的示例中,如果你使用 f 字符串,則表達式將立即計算,而使用 C 樣式格式,替換將被推遲到實際需要時,這對于消息分組很重要,其中具有相同模板的所有消息都可以記錄為一個, 這不適用于 f 字符串,因為模板在傳遞給記錄器之前填充了數據。

此外,有些事情是 f-strings 根本無法做到的, 例如在運行時填充模板 - 即動態格式 - 這就是 f-strings 被稱為文字字符串格式的原因:

# 動態設置模板及其參數
def func(tpl: str, param1: str, param2: str) -> str:
    return tpl.format(param=param1, param2=param2)

some_template = "First template: {param1}, {param2}"
another_template = "Other template: {param1} and {param2}"
print(func(some_template, "Hello", "World"))
print(func(another_template, "Hello", "Python"))

# 動態重用具有不同參數的相同模板.
inputs = ["Hello", "World", "!"]
template = "Here's some dynamic value: {value}"

for value in inputs:
    print(template.format(value=value))

最重要的是,盡可能使用 f 字符串,因為它們更具可讀性和更高性能,但請注意,在某些情況下仍然首選和/或需要其他格式樣式。

Tomllib 而不是 tomli

TOML 是一種廣泛使用的配置格式,對于 Python 的工具和生態系統尤其重要,因為它用于 pyproject.toml 配置文件, 到目前為止,你必須使用外部庫來管理 TOML 文件,但是從 Python 3.11 開始,將有一個名為 tomllib 的內置庫,它基于 toml 包。

所以,一旦你切換到 Python 3.11,你應該養成使用 import tomllib 而不是 import tomli 的習慣。少了一種需要擔心的依賴!

# import tomli as tomllib
import tomllib

with open("pyproject.toml", "rb") as f:
    config = tomllib.load(f)
    print(config)
    # {'project': {'authors': [{'email': 'contact@martinheinz.dev',
    #                           'name': 'Martin Heinz'}],
    #              'dependencies': ['flask', 'requests'],
    #              'description': 'Example Package',
    #              'name': 'some-app',
    #              'version': '0.1.0'}}

toml_string = """
[project]
name = "another-app"
description = "Example Package"
version = "0.1.1"
"""

config = tomllib.loads(toml_string)
print(config)
# {'project': {'name': 'another-app', 'description': 'Example Package', 'version': '0.1.1'}}

Setuptools 而不是  distutils

最后一個更像是棄用通知:

由于 Distutils 已棄用,因此同樣不鼓勵使用任何來自 distutils 的函數或對象,Setuptools 旨在替換或棄用所有此類用途。

是時候告別 distutils 包并切換到 setuptools 了,setuptools 文檔提供了有關如何替換 distutils 用法的指導, 除此之外,PEP 632 還為 setuptools 未涵蓋的部分 distutils 提供遷移建議。

總結

每個新的 Python 版本都會帶來新的特性,因此我建議你查看 Python 發行說明中的“新模塊”、“不推薦使用的模塊”和“已刪除的模塊”部分,這是了解 Python 標準重大變化的好方法 , 通過這種方式,你可以不斷地將新功能和最佳實踐整合到你的項目中。

責任編輯:華軒 來源: 快學Python
相關推薦

2025-07-28 02:22:00

2023-10-22 14:18:20

瀏覽器前端技術

2022-07-22 09:15:07

OpitonalJava代碼

2022-03-01 07:37:30

MySQL場景框架

2010-08-06 11:50:05

RIP協議

2021-10-29 15:27:50

手機智能技術

2017-09-11 10:09:59

刪庫DBA淘汰

2022-04-13 18:12:37

TypeScriptPython開發

2021-05-15 08:35:22

數據庫CAP模式

2024-03-18 07:56:49

CSSJS代碼調試

2013-01-10 10:16:12

2011-04-26 10:00:23

C語言程序員

2016-08-17 12:29:53

存儲SSDNAND Flash

2020-11-03 06:54:23

編程語言

2020-01-07 11:04:02

JavaJSP前端

2025-08-01 09:55:45

瀏覽器函數JavaScript

2014-12-05 10:06:44

程序員

2020-07-13 07:27:16

Python開發

2018-08-09 21:17:01

小程序微信BAT

2022-04-18 09:54:37

JDK8日期前端
點贊
收藏

51CTO技術棧公眾號

久久九九视频| 尤物99国产成人精品视频| 欧美亚洲色图视频| 成人午夜福利视频| 国产美女精品| 亚洲片在线资源| 天天综合成人网| av成人 com a| 久久久91精品国产一区二区三区| 国产精品免费一区豆花| 小早川怜子久久精品中文字幕| 久久三级毛片| 亚洲成av人片观看| 日韩中文字幕一区二区| 99产精品成人啪免费网站| 99在线精品免费视频九九视 | 国产wwwxx| 国产色在线观看| www国产成人免费观看视频 深夜成人网| 中文字幕不卡的av| 国产日韩欧美在线| 国产视频91在线| 色喇叭免费久久综合网| 亚洲精品一区二区三区四区高清| 欧洲熟妇精品视频| 国产精品69xx| 自拍视频在线观看一区二区| 欧美日韩一区二| 亚洲精品无码久久久| 奇米一区二区三区| 欧美亚洲成人xxx| 欧美人与禽zozzo禽性配| 九九视频精品全部免费播放| 日韩免费成人网| 一区二区免费av| 新片速递亚洲合集欧美合集| 黄色综合网站| 另类调教123区| 九九热精品视频| 99热6这里只有精品| 亚洲aaa级| 亚洲国产99精品国自产| 免费不卡av网站| 亚洲天堂网站| 欧美日韩美女一区二区| 欧美伦理片在线看| 欧美黑人疯狂性受xxxxx野外| 亚洲超碰精品一区二区| 日韩精品在线视频免费观看| 性xxxfreexxxx性欧美| 1区2区3区精品视频| 亚洲乱码一区二区三区三上悠亚| 日本私人网站在线观看| av不卡一区二区三区| 国产一区二区中文字幕免费看| 99热在线只有精品| 国产精品一区二区x88av| 91免费在线视频| 99国产成人精品| 国产成人免费视| 99精品99久久久久久宅男| 国产裸体无遮挡| 国产一区二区福利视频| 51国偷自产一区二区三区| 国产日韩免费视频| 国产不卡在线一区| 国产精品初高中精品久久| 黄色一级a毛片| 99久久国产综合精品色伊| 精品伊人久久大线蕉色首页| 色猫av在线| 国产亚洲1区2区3区| 亚洲国产精品www| 黄色在线论坛| 亚洲五码中文字幕| 欧美国产亚洲一区| 怡红院成人在线| 欧美日韩精品一区二区三区四区| 午夜精品久久久久久久99热影院| www999久久| 精品国产乱码91久久久久久网站| 国产毛片毛片毛片毛片毛片毛片| 中文精品一区二区| 中文字幕欧美日韩| 毛片a片免费观看| 国产日韩亚洲欧美精品| 国产精品美女久久久久av超清| 美女日批在线观看| 91porny在线| 亚洲免费黄色| 国产精品久久久久久一区二区| 亚洲图片视频小说| 成人在线综合网站| 四虎影视永久免费在线观看一区二区三区| 欧美成人hd| 亚洲自拍偷拍网站| 亚洲精品一二三四五区| 麻豆国产一区二区三区四区| 亚洲精品久久久一区二区三区| 欧美激情 一区| 欧美日韩午夜| 国产精品美女久久久久久免费| 亚洲第一天堂影院| 国产欧美精品日韩区二区麻豆天美| 日本道在线视频| 天天综合网天天| 精品国偷自产国产一区| 免费看黄色三级| 亚洲激情女人| 91热精品视频| 成年人在线看| 婷婷久久综合九色综合绿巨人| 日韩av片网站| 日韩丝袜视频| 欧美国产精品日韩| 亚洲一级片免费看| 久久免费美女视频| 一本久道高清无码视频| 麻豆久久久久| 亚洲图片制服诱惑| 国产69精品久久久久久久久久| 国产在线精品一区二区夜色| 欧美精品一区二区三区在线四季| 日本高清在线观看视频| 欧美日韩免费高清一区色橹橹 | 亚洲欧美日本国产| 中文字幕9999| 国产午夜麻豆影院在线观看| 成人自拍视频在线| 日本香蕉视频在线观看| 在线免费观看亚洲| 中文字幕精品—区二区| 色av性av丰满av| 99精品国产91久久久久久| 福利在线小视频| 疯狂欧洲av久久成人av电影| 一区二区成人av| 久久精品视频7| 99国产欧美久久久精品| 日本阿v视频在线观看| 狂野欧美xxxx韩国少妇| 久久五月天综合| 国产精品久久久久久久久毛片 | 高清一区二区| 日韩中文字幕在线看| 自拍偷拍色综合| 国产欧美一区二区在线| 成人免费毛片播放| 国产日产精品_国产精品毛片| 97在线视频一区| 天天摸天天碰天天爽天天弄| 精品高清一区二区三区| 午夜av免费看| 久久狠狠婷婷| 麻豆av一区二区三区| 在线天堂新版最新版在线8| 国产视频精品在线| 四虎影院在线免费播放| 国产日韩欧美制服另类| 日韩肉感妇bbwbbwbbw| 久久大综合网| 亚洲一区二区久久久久久| 中文字幕中文字幕在线十八区| 日韩一级片在线观看| 麻豆changesxxx国产| 成人黄色国产精品网站大全在线免费观看 | 亚洲 欧美 自拍偷拍| 午夜精品福利久久久| 蜜桃精品成人影片| 日韩av网站在线观看| 亚洲资源视频| 日韩成人精品| 97成人精品区在线播放| 精品成人一区二区三区免费视频| 欧美在线不卡一区| 夫妻性生活毛片| 不卡的看片网站| 欧美成人黑人猛交| 国产精品久久久久9999赢消| 97se亚洲综合在线| 午夜激情在线播放| 日韩中文理论片| 亚洲av无码片一区二区三区| 欧美色视频日本高清在线观看| 蜜臀久久99精品久久久久久| 国产美女在线精品| 日韩av在线第一页| 欧美国产一区二区三区激情无套| 99国产视频| 天堂久久午夜av| 欧美第一黄网免费网站| 蜜芽tv福利在线视频| 91麻豆精品国产91久久久使用方法| 久久精品性爱视频| 中文字幕欧美三区| fc2成人免费视频| 欧美bbbbb| 九色自拍视频在线观看| 青青草成人影院| 国产青春久久久国产毛片| 午夜精品成人av| 久久久久这里只有精品| 成年人视频网站在线| 亚洲成年人在线播放| 在线中文字幕网站| 欧美日韩视频在线| 黄色a级片在线观看| 久久久精品免费网站| wwwww在线观看| 久久精品99久久久| 欧美色图另类小说| 欧美日一区二区在线观看| 婷婷五月色综合| 色综合www| 国产精品12| 国产aa精品| 国产精品福利网站| 美女搞黄视频在线观看| 欧美老少配视频| 在线观看免费黄色| 亚洲欧美变态国产另类| 乱色精品无码一区二区国产盗| 欧美日本国产视频| 色屁屁影院www国产高清麻豆| 亚洲午夜精品17c| 好吊色视频在线观看| 国产精品情趣视频| 日本一级免费视频| 99国产精品视频免费观看| 国产高潮失禁喷水爽到抽搐 | 五级黄高潮片90分钟视频| 国产成人午夜精品5599| 三级性生活视频| 久久成人免费日本黄色| 99视频在线免费| 日日夜夜免费精品视频| 免费欧美一级视频| 制服诱惑一区二区| 国内精品视频一区二区三区| 狠色狠色综合久久| 国产精品69久久久| 在线不卡亚洲| 国产 日韩 亚洲 欧美| 亚洲福利电影| 日本一道本久久| 国产农村妇女精品一区二区| 亚欧无线一线二线三线区别| 国产精品日本| 欧美黄色免费影院| 另类天堂av| 亚洲中文字幕久久精品无码喷水| 久久蜜桃精品| 亚洲精品一二三四五区| 美日韩一级片在线观看| 一女二男3p波多野结衣| 久久99久久99小草精品免视看| 手机看片一级片| 国产做a爰片久久毛片| 日韩欧美中文视频| 国产在线精品不卡| 特黄特色免费视频| 97久久超碰精品国产| 亚洲成人网在线播放| 国产免费成人在线视频| 国产又色又爽又高潮免费| 亚洲欧洲av一区二区三区久久| 91嫩草丨国产丨精品| 一区二区三区精品久久久| 亚欧视频在线观看| 色综合久久久久久久| 又骚又黄的视频| 日韩一区二区在线观看| 色婷婷综合视频| 中文字幕免费国产精品| 成人在线app| 韩国三级电影久久久久久| 欧美xo影院| 成人国产精品免费视频| 亚洲小说春色综合另类电影| 久久偷看各类wc女厕嘘嘘偷窃| 精品国产中文字幕第一页| 男人天堂成人网| 国产亚洲激情| 中文字幕第一页在线视频| 东方aⅴ免费观看久久av| 蜜臀av一区二区三区有限公司| 国产精品久久久一区麻豆最新章节| 欧美三级在线免费观看| 狠狠干狠狠久久| 97精品人妻一区二区三区| 亚洲国产精久久久久久| 超碰免费在线观看| 欧美激情亚洲激情| 日韩av电影资源网| 国产 高清 精品 在线 a| 国产影视精品一区二区三区| 国产 国语对白 露脸| 丝袜美腿成人在线| 深夜视频在线观看| 欧美国产激情二区三区| 国产亚洲精品码| 欧美撒尿777hd撒尿| 狠狠综合久久av一区二区| 中文字幕日韩有码| 黄色激情在线播放| 91在线精品播放| 精品国产一区二区三区小蝌蚪| 免费高清一区二区三区| 麻豆成人久久精品二区三区红| 国产肉体xxxx裸体784大胆| 自拍偷拍欧美精品| 午夜一级黄色片| 亚洲精品99999| 主播国产精品| 91精品久久久久久久久久久| 婷婷综合一区| 丰满少妇大力进入| 国产精品综合网| 国产精品18在线| 在线一区二区三区做爰视频网站| 好吊色一区二区三区| 操91在线视频| 日韩av黄色| 亚洲精品国产一区| 久久久久久9| 免费a在线观看播放| 亚洲一二三区视频在线观看| 国产精品怡红院| 精品国产区一区二区三区在线观看| 成人免费无遮挡| 久久久综合香蕉尹人综合网| 影音先锋久久久| 第一页在线视频| 亚洲精品大片www| 国产伦精品一区二区三区免.费| 一本一道久久a久久精品逆3p| 国产精品迅雷| 麻豆av一区二区三区| 一本色道久久综合亚洲精品不卡| 欧美激情一区二区三区p站| 一区二区视频在线| 精品久久无码中文字幕| 久久精品精品电影网| 91精品网站在线观看| 亚洲成年人专区| 韩国女主播成人在线| 亚洲精品一区二区三区在线播放| 欧美色视频在线| 蜜桃视频在线观看www社区 | 91免费视频污| 亚洲婷婷综合久久一本伊一区 | 中文.日本.精品| 性欧美精品一区二区三区在线播放 | 国产成人无吗| 亚洲va欧美va国产综合久久| 亚洲在线久久| 折磨小男生性器羞耻的故事| 亚洲图片欧美视频| 亚洲av成人精品毛片| 国产91色在线|免| 久久一区二区三区电影| 日本精品一区在线| 一区二区三区中文字幕精品精品| 亚洲国产精品久久久久久6q| 午夜精品久久久久久99热| 麻豆视频一区| 亚洲视频在线观看一区二区三区| 亚洲国产经典视频| 国产高清不卡视频| 久久久久久久97| 久久av中文| 欧美一级免费在线| 婷婷开心激情综合| av电影在线观看| av一本久道久久波多野结衣| 亚洲黄色高清| avhd101老司机| 欧美一级免费大片| 捆绑调教日本一区二区三区| 日韩欧美手机在线| 国产一区二区三区久久久| 日韩三级视频在线播放| 一区二区亚洲精品国产| 久久影院一区二区三区| 精品人妻一区二区三区四区在线| 国产精品无人区| 免费国产羞羞网站视频| 国产精品对白刺激| 欧美freesex交免费视频| 熟女丰满老熟女熟妇| 欧美日韩大陆一区二区| 24小时免费看片在线观看| 亚洲高清视频一区| www.日韩大片| 97caocao| 日本精品久久中文字幕佐佐木| 中文字幕免费精品| japanese中文字幕| 精品美女一区二区| 欧美国产视频|