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

如何用上下文管理器擴展 Python 計時器

開發 前端
本文中,云朵君將和大家一起了解什么是上下文管理器 和 Python 的 with 語句,以及如何完成自定義。然后擴展 Timer 以便它也可以用作上下文管理器。最后,使用 Timer 作為上下文管理器如何簡化我們自己的代碼。

上文中我們創建的第一個 Python 計時器類,然后逐步擴展我們 Timer 類,其代碼也是較為豐富強大。我們不能滿足于此,仍然需要模板一些代碼來使用Timer:

  • 首先,實例化類
  • 其次,在要計時的代碼塊之前調用.start()
  • 最后,在代碼塊之后調用.stop()

一個 Python 定時器上下文管理器

Python 有一個獨特的構造,用于在代碼塊之前和之后調用函數:上下文管理器。

了解 Python 中的上下文管理器

上下文管理器長期以來一直是 Python 中重要的一部分。由 PEP 343 于 2005 年引入,并首次在 Python 2.5 中實現。可以使用 with 關鍵字識別代碼中的上下文管理器:

with EXPRESSION as VARIABLE:
BLOCK

EXPRESSION 是一些返回上下文管理器的 Python 表達式。首先上下文管理器綁定到變量名 VARIABLE上,BLOCK 可以是任何常規的 Python 代碼塊。上下文管理器保證程序在 BLOCK 之前調用一些代碼,在 BLOCK 執行之后調用一些其他代碼。這樣即使 BLOCK 引發異常,后者也是會照樣執行。

上下文管理器最常見的用途是處理不同的資源,如文件、鎖和數據庫連接等。上下文管理器用于使用資源后釋放和清理資源。以下示例僅通過打印包含冒號的行來演示 timer.py 的基本結構。此外,它展示了在 Python 中打開文件的常用習語:

with open("timer.py") as fp:
print("".join(ln for ln in fp if ":" in ln))

class TimerError(Exception):
class Timer:
timers: ClassVar[Dict[str, float]] = {}
name: Optional[str] = None
text: str = "Elapsed time: {:0.4f} seconds"
logger: Optional[Callable[[str], None]] = print
_start_time: Optional[float] = field(default=None, init=False, repr=False)
def __post_init__(self) -> None:
if self.name is not None:
def start(self) -> None:
if self._start_time is not None:
def stop(self) -> float:
if self._start_time is None:
if self.logger:
if self.name:

注意,使用 open() 作為上下文管理器,文件指針fp 不會顯式關閉,可以確認 fp 已自動關閉:

fp.closed
True

在此示例中,open("timer.py") 是一個返回上下文管理器的表達式。該上下文管理器綁定到名稱 fp。上下文管理器在 print() 執行期間有效。這個單行代碼塊在 fp 的上下文中執行。

fp 是上下文管理器是什么意思? 從技術上講,就是 fp 實現了 上下文管理器協議。Python 語言底層有許多不同的協議。可以將協議視為說明我們代碼必須實現哪些特定方法的合同。

上下文管理器協議由兩種方法組成:

  1. 進入與上下文管理器相關的上下文時調用.__enter__()。
  2. 退出與上下文管理器相關的上下文時調用.__exit__()。

換句話說,要自己創建上下文管理器,需要編寫一個實現 .__enter__() 和 .__exit__() 的類。試試 Hello, World!上下文管理器示例:

# studio.py
class Studio:
def __init__(self, name):
self.name = name

def __enter__(self):
print(f"你好 {self.name}")
return self

def __exit__(self, exc_type, exc_value, exc_tb):
print(f"一會兒見, {self.name}")

Studio是一個上下文管理器,它實現了上下文管理器協議,使用如下:

from studio import Studio
with Studio("云朵君"):
print("正在忙 ...")
你好 云朵君
正在忙 ...
一會兒見, 云朵君

首先,注意 .__enter__() 在做事之前是如何被調用的,而 .__exit__() 是在做事之后被調用的。該示例中,沒有引用上下文管理器,因此不需要使用 as 為上下文管理器命名。

接下來,注意 self.__enter__() 的返回值受 as 約束。創建上下文管理器時,通常希望從 .__enter__() 返回 self 。可以按如下方式使用該返回值:

from greeter import Greeter
with Greeter("云朵君") as grt:
print(f"{grt.name} 正在忙 ...")
你好 云朵君
云朵君 正在忙 ...
一會兒見, 云朵君

在寫 __exit__ 函數時,需要注意的事,它必須要有這三個參數:

  • exc_type:異常類型
  • exc_val:異常值
  • exc_tb:異常的錯誤棧信息

這三個參數用于上下文管理器中的錯誤處理,它們以 sys.exc_info() 的返回值返回。當主邏輯代碼沒有報異常時,這三個參數將都為None。

如果在執行塊時發生異常,那么代碼將使用異常類型、異常實例和回溯對象(即exc_type、exc_value和exc_tb)調用 .__exit__() 。通常情況下,這些在上下文管理器中會被忽略,而在引發異常之前調用 .__exit__():

from greeter import Greeter
with Greeter("云朵君") as grt:
print(f"{grt.age} does not exist")
你好 云朵君
一會兒見, 云朵君
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
AttributeError: 'Greeter' object has no attribute 'age'

可以看到,即使代碼中有錯誤,還是照樣打印了 "一會兒見, 云朵君"。

理解并使用 contextlib

現在我們初步了解了上下文管理器是什么以及如何創建自己的上下文管理器。在上面的例子中,我們只是為了構建一個上下文管理器,卻寫了一個類。如果只是要實現一個簡單的功能,寫一個類未免有點過于繁雜。這時候,我們就想,如果只寫一個函數就可以實現上下文管理器就好了。

這個點Python早就想到了。它給我們提供了一個裝飾器,你只要按照它的代碼協議來實現函數內容,就可以將這個函數對象變成一個上下文管理器。

我們按照 contextlib 的協議來自己實現一個上下文管理器,為了更加直觀我們換個用例,創建一個我們常用且熟悉的打開文件(with open)的上下文管理器。

import contextlib

@contextlib.contextmanager
def open_func(file_name):
# __enter__方法
print('open file:', file_name, 'in __enter__')
file_handler = open(file_name, 'r')

# 【重點】:yield
yield file_handler

# __exit__方法
print('close file:', file_name, 'in __exit__')
file_handler.close()
return

with open_func('test.txt') as file_in:
for line in file_in:
print(line)

在被裝飾函數里,必須是一個生成器(帶有yield),而 yield 之前的代碼,就相當于__enter__里的內容。yield 之后的代碼,就相當于__exit__ 里的內容。

上面這段代碼只能實現上下文管理器的第一個目的(管理資源),并不能實現第二個目的(處理異常)。

如果要處理異常,可以改成下面這個樣子。

import contextlib

@contextlib.contextmanager
def open_func(file_name):
# __enter__方法
print('open file:', file_name, 'in __enter__')
file_handler = open(file_name, 'r')

try:
yield file_handler
except Exception as exc:
# deal with exception
print('the exception was thrown')
finally:
print('close file:', file_name, 'in __exit__')
file_handler.close()
return

with open_func('test.txt') as file_in:
for line in file_in:
1/0
print(line)

Python 標準庫中的 contextlib包括定義新上下文管理器的便捷方法,以及可用于關閉對象、抑制錯誤甚至什么都不做的現成上下文管理器!

創建 Python 計時器上下文管理器

了解了上下文管理器的一般工作方式后,要想知道它們是如何幫助處理時序代碼呢?假設如果可以在代碼塊之前和之后運行某些函數,那么就可以簡化 Python 計時器的工作方式。其實,上下文管理器可以自動為計時時顯式調用 .start() 和.stop()。

同樣,要讓 Timer 作為上下文管理器工作,它需要遵守上下文管理器協議,換句話說,它必須實現 .__enter__() 和 .__exit__() 方法來啟動和停止 Python 計時器。從目前的代碼中可以看出,所有必要的功能其實都已經可用,因此只需將以下方法添加到之前編寫的的 Timer 類中即可:

# timer.py
@dataclass
class Timer:
# 其他代碼保持不變

def __enter__(self):
"""Start a new timer as a context manager"""
self.start()
return self

def __exit__(self, *exc_info):
"""Stop the context manager timer"""
self.stop()

Timer 現在就是一個上下文管理器。實現的重要部分是在進入上下文時, .__enter__() 調用 .start() 啟動 Python 計時器,而在代碼離開上下文時, .__exit__() 使用 .stop() 停止 Python 計時器。

from timer import Timer
import time
with Timer():
time.sleep(0.7)
Elapsed time: 0.7012 seconds

此處注意兩個更微妙的細節:

  • .__enter__()? 返回self?,Timer 實例,它允許用戶使用as? 將Timer ?實例綁定到變量。例如,使用with Timer() as t:? 將創建指向Timer ?對象的變量t。
  • .__exit__()? 需要三個參數,其中包含有關上下文執行期間發生的任何異常的信息。代碼中,這些參數被打包到一個名為exc_info 的元組中,然后被忽略,此時 Timer 不會嘗試任何異常處理。

在這種情況下不會處理任何異常。上下文管理器的一大特點是,無論上下文如何退出,都會確保調用.__exit__()。在以下示例中,創建除零公式模擬異常查看代碼功能:

from timer import Timer
with Timer():
for num in range(-3, 3):
print(f"1 / {num} = {1 / num:.3f}")
1 / -3 = -0.333
1 / -2 = -0.500
1 / -1 = -1.000
Elapsed time: 0.0001 seconds
Traceback (most recent call last):
File "<stdin>", line 3, in <module>
ZeroDivisionError: division by zero

注意 ,即使代碼拋出異常,Timer 也會打印出經過的時間。

使用 Python 定時器上下文管理器

現在我們將一起學習如何使用 Timer 上下文管理器來計時 "下載數據" 程序。回想一下之前是如何使用 Timer 的:

# download_data.py
import requests
from timer import Timer
def main():
t = Timer()
t.start()
source_url = 'https://cloud.tsinghua.edu.cn/d/e1ccfff39ad541908bae/files/?p=%2Fall_six_datasets.zip&dl=1'
headers = {'User-Agent': 'Mozilla/5.0'}
res = requests.get(source_url, headers=headers)
t.stop()
with open('dataset/datasets.zip', 'wb') as f:
f.write(res.content)

if __name__ == "__main__":
main()

我們正在對 requests.get() 的調用進行記時監控。使用上下文管理器可以使代碼更短、更簡單、更易讀:

# download_data.py
import requests
from timer import Timer
def main():
source_url = 'https://cloud.tsinghua.edu.cn/d/e1ccfff39ad541908bae/files/?p=%2Fall_six_datasets.zip&dl=1'
headers = {'User-Agent': 'Mozilla/5.0'}
with Timer():
res = requests.get(source_url, headers=headers)

with open('dataset/datasets.zip', 'wb') as f:
f.write(res.content)

if __name__ == "__main__":
main()

此代碼實際上與上面的代碼相同。主要區別在于沒有定義無關變量t,在命名空間上無多余的東西。

寫在最后

將上下文管理器功能添加到 Python 計時器類有幾個優點:

  • 省時省力:只需要一行額外的代碼即可為代碼塊的執行計時。
  • 可讀性高:調用上下文管理器是可讀的,你可以更清楚地可視化你正在計時的代碼塊。

使用 Timer 作為上下文管理器幾乎與直接使用 .start() 和 .stop() 一樣靈活,同時它的樣板代碼更少。在該系列下一篇文章中,云朵君將和大家一起學習如何將 Timer 也用作裝飾器,并用于代碼中,從而更加容易地監控代碼完整運行過程,我們一起期待吧!

責任編輯:華軒 來源: 數據STUDIO
相關推薦

2025-06-06 08:00:00

上下文管理器Python開發

2014-04-04 10:27:00

Python上下文管理器

2022-11-03 08:29:32

編程管理器協議

2017-05-11 14:00:02

Flask請求上下文應用上下文

2023-11-16 08:46:27

上下文管理器Python

2022-10-31 15:34:30

python裝飾器內存泄漏

2024-11-14 09:00:00

Python上下文管理器

2024-03-14 08:11:45

模型RoPELlama

2022-06-30 16:10:26

Python計時器裝飾器

2022-09-14 13:13:51

JavaScript上下文

2023-12-10 13:37:23

Python編程上下文管理

2020-10-21 09:11:52

Spring Boot源碼分析代碼

2023-07-11 10:02:23

2021-11-03 16:41:30

Windows 11操作系統微軟

2022-09-15 08:01:14

繼承基礎設施基礎服務

2012-05-08 13:58:37

SharePoint

2011-05-31 16:50:35

Android 線程

2025-10-14 01:55:00

AI應用上下文工程機器人

2024-02-21 19:56:48

??filterA并發計算

2012-12-31 10:01:34

SELinuxSELinux安全
點贊
收藏

51CTO技術棧公眾號

亚洲区综合中文字幕日日| 国产高清亚洲| 欧美国产在线观看| 成人黄色大片在线免费观看| 国产午夜手机精彩视频| 日韩激情欧美| 色综合天天综合狠狠| 亚洲蜜桃av| 女人18毛片一区二区三区| 久久一区二区三区四区五区 | 六十路在线观看| 免费观看在线综合色| 欧美激情第99页| x88av在线| www黄色在线| 国产h视频在线播放| 日本一区视频| 激情五月播播久久久精品| 久久露脸国产精品| 国产精品无码无卡无需播放器| avtt久久| 色www精品视频在线观看| 国产女主播av| 国产中文在线观看| 国产成人亚洲精品狼色在线| 国产福利精品视频| 久久草视频在线| 久久精品国内一区二区三区水蜜桃| 亚洲国产精品美女| 手机在线免费毛片| 欧美精品资源| 日韩欧美亚洲一二三区| 日韩成人三级视频| 黄色免费网站在线| 日本一区二区三区dvd视频在线 | 国产福利一区二区三区视频| 国产精品久久久久久av福利软件 | 91香蕉电影院| 久久久999久久久| 国产精品久久久亚洲一区| 久久综合久久八八| 老司机精品免费视频| 久久91精品| 亚洲国产精品人人爽夜夜爽| 三级网站免费看| 欧美9999| 91精品麻豆日日躁夜夜躁| www黄色在线| 国产超碰精品| 色婷婷久久久亚洲一区二区三区| www.一区二区.com| av黄在线观看| 亚洲视频精选在线| 亚洲最新在线| 黄色网址在线免费观看| 国产精品女同互慰在线看| 日本一区二区免费看| 黄色片在线播放| 国产亚洲一区二区三区| 日韩一本精品| av网页在线| 国产欧美日韩在线| 亚洲激情一区二区| 嫩草香蕉在线91一二三区| 国产精品无人区| 伊人久久婷婷色综合98网| 免费a级人成a大片在线观看| 亚洲欧美日韩在线不卡| av日韩在线看| 色吧亚洲日本| 欧美在线免费观看亚洲| 亚洲欧美日本一区二区三区| 国产亚洲精aa在线看| 日韩欧美专区在线| 完美搭档在线观看| 妖精一区二区三区精品视频| 尤物九九久久国产精品的分类| 天堂资源在线视频| 亚洲香蕉av| 97激碰免费视频| 国产黄色免费视频| 精品无码三级在线观看视频| 粉嫩av免费一区二区三区| 午夜在线视频免费| 欧美激情综合在线| 高清无码一区二区在线观看吞精| 国产传媒在线| 欧美怡红院视频| 波多野结衣在线免费观看| 国产精品xxxav免费视频| 亚洲欧美国产日韩天堂区| 国产wwwwxxxx| 亚洲激情网址| 国产欧美在线播放| 老熟妇高潮一区二区高清视频| 久久综合国产精品| 日本一区二区免费高清视频| 2021天堂中文幕一二区在线观| 色噜噜久久综合| 日韩高清在线一区二区| 同性恋视频一区| 久久视频在线直播| av一级在线观看| 国产精品1区二区.| 日本视频精品一区| 不卡的av影片| 欧美精品一卡两卡| 成人h动漫精品一区| 欧美高清视频手机在在线| 亚州国产精品久久久| 又污又黄的网站| 91色porny蝌蚪| 中文字幕の友人北条麻妃| 国产精品伦理| 精品国产电影一区二区| 亚洲精品自拍视频在线观看| 国产一区二区三区久久久久久久久| 亚洲一区亚洲二区亚洲三区| 国内av一区二区三区| 亚洲成精国产精品女| 亚洲妇熟xx妇色黄蜜桃| 精品日韩一区| 欧美亚洲第一页| 免费观看a视频| 亚洲嫩草精品久久| 欧美日韩中文不卡| 神马久久一区二区三区| 午夜精品一区二区三区av| 国产伦一区二区| 国产精品久久免费看| 国产欧美在线一区| 麻豆一区二区| 欧美成人国产va精品日本一级| 中文字幕第99页| 久久久99久久| 精品99在线视频| 日本成人a网站| 午夜剧场成人观在线视频免费观看| 国产情侣av在线| 国产精品护士白丝一区av| 亚洲国产精品毛片av不卡在线| 麻豆国产欧美一区二区三区r| 欧美激情在线播放| www.日韩在线观看| 亚洲一线二线三线视频| 久久精品一二三四| 欧美一区网站| 999视频在线免费观看| av网站免费在线观看| 制服丝袜成人动漫| 特一级黄色录像| 国产麻豆成人精品| 国产在线观看欧美| 大陆精大陆国产国语精品| 久久久久久久久久久av| 蜜桃视频污在线观看| 亚洲成人av电影在线| 亚洲男人在线天堂| 久久av一区二区三区| 日韩福利二区| 欧美大陆国产| 不卡av在线播放| а√天堂资源在线| 亚洲国产乱码最新视频| 色婷婷免费视频| 日韩在线一区二区| 亚洲欧洲精品在线| 精品亚洲a∨一区二区三区18| 九九热精品视频国产| 日韩一级片免费在线观看| 欧美日韩在线看| 国产黄色大片免费看| 麻豆91在线播放免费| 红桃一区二区三区| 欧美人成在线观看ccc36| 国产成+人+综合+亚洲欧洲 | 中文字幕制服诱惑| 亚洲精品国产无天堂网2021| 人妻激情偷乱频一区二区三区 | 亚洲成人av免费看| 亚洲欧美色图| 狠狠久久综合婷婷不卡| 性感美女一区二区在线观看| 日韩中文字幕在线观看| www.国产黄色| 欧美日韩中文在线| 呻吟揉丰满对白91乃国产区| 国产高清视频一区| av动漫免费看| 99久久精品国产亚洲精品 | 国内精品久久久久久久| 成在在线免费视频| 日韩欧美一卡二卡| 日韩综合在线观看| 夜夜爽夜夜爽精品视频| 欧美日韩高清丝袜| 国产suv精品一区二区6| 黑鬼大战白妞高潮喷白浆| 亚洲精品二区三区| 欧美一区激情视频在线观看| 精品久久亚洲| 国产成一区二区| 欧美激情成人动漫| 中文字幕精品视频| 天堂av资源网| 在线电影院国产精品| 日韩精品一区二区亚洲av| 综合电影一区二区三区| aaaaa级少妇高潮大片免费看| 国内一区二区在线| 日本一极黄色片| 韩国亚洲精品| 香蕉视频在线网址| 国产精品入口久久| 国产精品一区二区三区四区五区 | www.成人av.com| 成人a在线观看高清电影| 久久频这里精品99香蕉| 伦xxxx在线| 亚洲性无码av在线| 天堂网www中文在线| 精品黑人一区二区三区久久| 国产精品污视频| 91福利视频网站| 国产精品视频免费播放| 亚洲一二三级电影| 91杏吧porn蝌蚪| 国产精品热久久久久夜色精品三区| 亚洲一区二区乱码| 成人精品一区二区三区四区| 亚洲精品在线视频播放| 久久精品99国产精品| 97公开免费视频| 午夜综合激情| 日韩av片在线看| 亚洲人成久久| 国产 日韩 欧美在线| 国产在线不卡| 99精品一区二区三区的区别| 忘忧草精品久久久久久久高清| 先锋影音欧美| 成人在线国产| 亚洲一区二区三区欧美| 日韩欧美中文| 亚洲一区二区三区免费观看| 色777狠狠狠综合伊人| 亚洲精品一区二区三| 欧美裸体在线版观看完整版| 日韩av大全| 操欧美老女人| 一本久久a久久精品vr综合 | 欧美成人三级视频网站| av免费在线免费观看| 欧美国产视频日韩| caoprom在线| 992tv在线成人免费观看| 色综合桃花网| 国产成人一区二区三区| av久久网站| 91亚洲国产精品| 色悠久久久久综合先锋影音下载| 97超碰人人看人人| 加勒比中文字幕精品| 九色视频成人porny| 猛男gaygay欧美视频| 手机成人在线| 亚洲91视频| 日韩伦理在线免费观看| 亚洲一区日韩在线| 日韩一级理论片| 国产在线不卡一卡二卡三卡四卡| 无码人妻一区二区三区精品视频| 99久久久国产精品| 欧美波霸videosex极品| 亚洲三级在线免费| 动漫精品一区一码二码三码四码| 日韩欧美aaa| 一本色道久久综合亚洲| 日韩精品一区二区三区在线观看| 香蕉视频网站在线| 在线观看中文字幕亚洲| 成人av免费| 日韩av电影中文字幕| 欧美性www| 国产一区二区高清不卡| 欧美理论视频| 国产黄色激情视频| 久久婷婷亚洲| 亚洲精品一二三四| 国产校园另类小说区| 国内偷拍精品视频| 日本精品一区二区三区高清| 国产美女自慰在线观看| 日韩福利在线播放| 黄色网页在线播放| 国产成人97精品免费看片| 精品国产一区二区三区2021| 欧美一区少妇| 亚洲经典在线| 一级黄色高清视频| 久久精品一区二区| 精品无码人妻一区二区三| 欧美性极品少妇| 亚洲 精品 综合 精品 自拍| 日韩三级成人av网| 欧美亚洲韩国| 国产日韩欧美一区二区三区四区 | 日韩在线观看精品| 日产福利视频在线观看| 95av在线视频| 欧美日韩伦理| 无码精品a∨在线观看中文| 国产麻豆精品在线| 一本在线免费视频| 日韩欧美黄色动漫| 亚洲精品一区二区三区新线路| 在线视频欧美日韩精品| 中文字幕人成乱码在线观看| yellow视频在线观看一区二区| 日韩精品首页| 久久久精品在线视频| www.久久精品| 国产亚洲精品久久久久久打不开| 欧美精品乱码久久久久久按摩| 国产人成在线视频| 欧美在线视频一区二区| 久久丝袜视频| 日韩精品在线观看av| 国产精品一区久久久久| 亚洲色偷偷综合亚洲av伊人| 欧美少妇bbb| 国产福利电影在线| 国产成人精品午夜| 国产亚洲一区二区三区啪| 国产精品无码一区二区在线| 成人免费av网站| 免费视频网站www| 日韩一区二区三区精品视频 | 神马久久一区二区三区| 波多野结衣50连登视频| 99天天综合性| 久热这里只有精品6| 日韩福利在线播放| 亚洲精品中文字幕| 欧美成人一区二区在线| 羞羞视频在线观看欧美| 国产三级视频网站| 日韩欧亚中文在线| 国产一级免费在线观看| 日韩av123| heyzo久久| 中日韩av在线播放| 亚洲色大成网站www久久九九| 国产剧情久久久| 美女撒尿一区二区三区| 亚洲精品黑牛一区二区三区| 欧美做暖暖视频| 9l国产精品久久久久麻豆| 综合激情网五月| 亚洲男人天堂网| 成人国产精品入口免费视频| 亚洲视频导航| 国产suv精品一区二区三区| 日本在线观看中文字幕| 亚洲精品aⅴ中文字幕乱码| 成人免费看黄| 亚洲精品日韩成人| 国产成人精品免费网站| 国产成人无码一区二区三区在线| 亚洲精品视频在线播放| se69色成人网wwwsex| 在线免费观看成人网| 国产成人精品综合在线观看 | 91麻豆精品国产91久久久使用方法 | 一本一本久久a久久精品牛牛影视 一本色道久久综合亚洲精品小说 一本色道久久综合狠狠躁篇怎么玩 | www.男人天堂| 日韩欧美a级成人黄色| 91caoporm在线视频| 99热在线播放| 亚洲专区免费| 免费黄色激情视频| 精品久久一区二区| 三级成人黄色影院| 91精品一区二区三区四区| 91小视频在线| 7777久久亚洲中文字幕| 国内伊人久久久久久网站视频 | 国产精品久久久久久久久久精爆| 在线播放日韩欧美| 91麻豆精品激情在线观看最新 | 麻豆成人91精品二区三区| 久久网一区二区| 亚洲图片制服诱惑| 视频在线观看免费影院欧美meiju| 鲁一鲁一鲁一鲁一色| 成人免费一区二区三区视频 | 91色视频在线| 国产女主播福利| 日韩美女毛茸茸| 黑人一区二区|