久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx

python包里的函數 python 函數內import

查看python模塊中所有函數

隨著使用python的時間越來越長,安裝的python模塊也越來越多,有的模塊不常用,也漸漸會忘了里面有哪些函數;或者,一個新的python模塊,沒有官方文檔,要想知道調用哪些函數,怎么調用那些函數,于是乎就需要查看一下自己安裝的python模塊里有哪些函數,現將查看方法總結如下

我們提供的服務有:網站設計制作、成都網站設計、微信公眾號開發、網站優化、網站認證、泊頭ssl等。為上1000家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的泊頭網站制作公司

在命令行下運行如下命令即可查看

在交互式解釋器中輸入如下命令即可,效果跟在命令行下輸入 $ pydoc modules 是一樣的。

python的sys模塊也是可以用來查看模塊信息的

如果你使用的是 pip 來作為你的 python 包管理器的話,可以在命令行下直接運行 $ pip freeze/code 或者 code$ pip list 來查看安裝包的信息,當然其它的包管理器也有類似的功能,同時,你也可以在python交互式解釋器中導入pip模塊來查看包信息。

如果你安裝過 yolk 的話可以使用 yolk 命令來查看包信息,你可以使用 $ pip install yolk 來安裝它 yolk 使用簡單,只需在命令行下操作即可。

Python中冷門但非常好用的內置函數

Python中有許多內置函數,不像print、len那么廣為人知,但它們的功能卻異常強大,用好了可以大大提高代碼效率,同時提升代碼的簡潔度,增強可閱讀性

Counter

collections在python官方文檔中的解釋是High-performance container datatypes,直接的中文翻譯解釋高性能容量數據類型。這個模塊實現了特定目標的容器,以提供Python標準內建容器 dict , list , set , 和 tuple 的替代選擇。在python3.10.1中它總共包含以下幾種數據類型:

容器名簡介

namedtuple() 創建命名元組子類的工廠函數

deque 類似列表(list)的容器,實現了在兩端快速添加(append)和彈出(pop)

ChainMap 類似字典(dict)的容器類,將多個映射集合到一個視圖里面

Counter 字典的子類,提供了可哈希對象的計數功能

OrderedDict 字典的子類,保存了他們被添加的順序

defaultdict 字典的子類,提供了一個工廠函數,為字典查詢提供一個默認值

UserDict 封裝了字典對象,簡化了字典子類化

UserList 封裝了列表對象,簡化了列表子類化

UserString 封裝了字符串對象,簡化了字符串子類化

其中Counter中文意思是計數器,也就是我們常用于統計的一種數據類型,在使用Counter之后可以讓我們的代碼更加簡單易讀。Counter類繼承dict類,所以它能使用dict類里面的方法

舉例

#統計詞頻

fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']

result = {}

for fruit in fruits:

if not result.get(fruit):

result[fruit] = 1

else:

result[fruit] += 1

print(result)

#{'apple': 2, 'peach': 3, 'lemon': 1}下面我們看用Counter怎么實現:

from collections import Counter

fruits = ['apple', 'peach', 'apple', 'lemon', 'peach', 'peach']

c = Counter(fruits)

print(dict(c))

#{'apple': 2, 'peach': 3, 'lemon': 1}顯然代碼更加簡單了,也更容易閱讀和維護了。

elements()

返回一個迭代器,其中每個元素將重復出現計數值所指定次。元素會按首次出現的順序返回。如果一個元素的計數值小于1,elements()將會忽略它。

c = Counter(a=4, b=2, c=0, d=-2)

sorted(c.elements())

['a', 'a', 'a', 'a', 'b', 'b']most_common([n])

返回一個列表,其中包含n個最常見的元素及出現次數,按常見程度由高到低排序。如果n被省略或為None,most_common()將返回計數器中的所有元素。計數值相等的元素按首次出現的順序排序:

Counter('abracadabra').most_common(3)

[('a', 5), ('b', 2), ('r', 2)]這兩個方法是Counter中最常用的方法,其他方法可以參考 python3.10.1官方文檔

實戰

Leetcode 1002.查找共用字符

給你一個字符串數組words,請你找出所有在words的每個字符串中都出現的共用字符(包括重復字符),并以數組形式返回。你可以按任意順序返回答案。

輸入:words = ["bella", "label", "roller"]

輸出:["e", "l", "l"]

輸入:words = ["cool", "lock", "cook"]

輸出:["c", "o"]看到統計字符,典型的可以用Counter完美解決。這道題是找出字符串列表里面每個元素都包含的字符,首先可以用Counter計算出每個元素每個字符出現的次數,依次取交集最后得出所有元素共同存在的字符,然后利用elements輸出共用字符出現的次數

class Solution:

def commonChars(self, words: List[str]) - List[str]:

from collections import Counter

ans = Counter(words[0])

for i in words[1:]:

ans = Counter(i)

return list(ans.elements())提交一下,發現83個測試用例耗時48ms,速度還是不錯的

sorted

在處理數據過程中,我們經常會用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時候就需要用到sorted(),它可以對任何可迭代對象進行排序,并返回列表

對列表升序操作:

a = sorted([2, 4, 3, 7, 1, 9])

print(a)

# 輸出:[1, 2, 3, 4, 7, 9]對元組倒序操作:

sorted((4,1,9,6),reverse=True)

print(a)

# 輸出:[9, 6, 4, 1]使用參數:key,根據自定義規則,按字符串長度來排序:

fruits = ['apple', 'watermelon', 'pear', 'banana']

a = sorted(fruits, key = lambda x : len(x))

print(a)

# 輸出:['pear', 'apple', 'banana', 'watermelon']all

all() 函數用于判斷給定的可迭代參數iterable中的所有元素是否都為 TRUE,如果是返回 True,否則返回 False。元素除了是 0、空、None、False外都算True。注意:空元組、空列表返回值為True。

all(['a', 'b', 'c', 'd']) # 列表list,元素都不為空或0

True

all(['a', 'b', '', 'd']) # 列表list,存在一個為空的元素

False

all([0, 1,2, 3]) # 列表list,存在一個為0的元素

False

all(('a', 'b', 'c', 'd')) # 元組tuple,元素都不為空或0

True

all(('a', 'b', '', 'd')) # 元組tuple,存在一個為空的元素

False

all((0, 1, 2, 3)) # 元組tuple,存在一個為0的元素

False

all([]) # 空列表

True

all(()) # 空元組

Trueany函數正好和all函數相反:判斷一個tuple或者list是否全為空,0,False。如果全為空,0,False,則返回False;如果不全為空,則返回True。

F-strings

在python3.6.2版本中,PEP 498提出一種新型字符串格式化機制,被稱為 “字符串插值” 或者更常見的一種稱呼是F-strings,F-strings提供了一種明確且方便的方式將python表達式嵌入到字符串中來進行格式化:

s1='Hello'

s2='World'

print(f'{s1} {s2}!')

# Hello World!在F-strings中我們也可以執行函數:

def power(x):

return x*x

x=4

print(f'{x} * {x} = {power(x)}')

# 4 * 4 = 16而且F-strings的運行速度很快,比傳統的%-string和str.format()這兩種格式化方法都快得多,書寫起來也更加簡單。

本文主要講解了python幾種冷門但好用的函數,更多內容以后會陸陸續續更新~

在Python中定義Main函數

目錄

許多編程語言都有一個特殊的函數,當操作系統開始運行程序時會自動執行該函數。這個函數通常被命名為main(),并且依據語言標準具有特定的返回類型和參數。另一方面,Python解釋器從文件頂部開始執行腳本,并且沒有自動執行的特殊函數。

盡管如此,為程序的執行定義一個起始點有助于理解程序是如何運行的。Python程序員提出了幾種方式對此進行實現。

本文結束時,您將了解以下內容:

Python中的基本main()函數

一些Python腳本中,包含一個函數定義和一個條件語句,如下所示:

此代碼中,包含一個main()函數,在程序執行時打印Hello World!。此外,還包含一個條件(或if)語句,用于檢查__name__的值并將其與字符串"__main__"進行比較。當if語句為True時,Python解釋器將執行main()函數。更多關于Python條件語句的信息可以由此獲得。

這種代碼模式在Python文件中非常常見,它將作為腳本執行并導入另一個模塊。為了幫助理解這段代碼的執行方式,首先需要了解Python解釋器如何根據代碼的執行方式設置__name__。

Python中的執行模式

Python解釋器執行代碼有兩種方式:

更多內容可參考如何運行Python腳本。無論采用哪種方式,Python都會定義一個名為__name__的特殊變量,該變量包含一個字符串,其值取決于代碼的使用方式。

本文將如下示例文件保存為execution_methods.py,以 探索 代碼如何根據上下文改變行為:

在此文件中,定義了三個對print()函數的調用。前兩個打印一些介紹性短語。第三個print()會先打印短語The value __name__ is,之后將使用Python內置的repr()函數打印出__name__變量。

在Python中,repr()函數將對象轉化為供解釋器讀取的形式。上述示例通過使用repr()函數來強調__name__的值為字符串。更多關于repr()的內容可參考Python文檔。

在本文中,您將隨處可見文件(file),模塊(module)和腳本(script)這三個字眼。實際上,三者之間并無太大的差別。不過,在強調代碼目的時,還是存在細微的差異:

“如何運行Python腳本”一文也討論了三者的差別。

基于命令行執行

在這類方法中,Python腳本將通過命令行來執行。

執行腳本時,無法與Python解釋器正在執行的代碼交互。關于如何通過命令行執行代碼的詳細信息對本文而言并不重要,但您可以通過展開下框閱讀更多有關Windows,Linux和macOS之間命令行差異的內容。

命令行環境

不同的操作系統在使用命令行執行代碼時存在細微的差異。

在Linux和macOS中,通常使用如下命令:

美元符號($)之前的內容可能有所不同,具體取決于您的用戶名和計算機名稱。您鍵入的命令位于$之后。在Linux或macOS上,Python3的可執行文件名為python3,因此可以通過輸入python3 script_name.py來運行python腳本。

在Windows上,命令提示符通常如下所示:

根據您的用戶名,之前的內容可能會有所不同,您輸入的命令位于之后。在Windows上,Python3的可執行文件通常為python。因此可以通過輸入python script_name.py來運行python腳本。

無論哪種操作系統,本文的Python腳本的輸出結果都是相同的。因此本文以Linux和macOS為例。

使用命令行執行execution_methods.py,如下所示:

在這個示例中,__name__具有值'__main__',其中引號(')表明該值為字符串類型。

請記住,在Python中,使用單引號(')和雙引號(")定義的字符串沒有區別。更多關于字符串的內容請參考Python的基本數據類型。

如果在腳本中包含"shebang行"并直接執行它(./execution_methods.py),或者使用IPython或Jupyter Notebook的%run,將會獲取相同的結果。

您還可以通過向命令行添加-m參數的方法實現以模塊的方式執行。通常情況下,推薦如下方式pip: python3 -m pip install package_name。

添加-m參數將會運行包中__main__.py的代碼。更多關于__main__.py文件的內容可參考如何將開源Python包發布到PyPI中。

在三種情況中,__name__都具有相同的值:字符串'__main__'。

技術細節:Python文檔中具體定義了__name__何時取值為'__main__'。

當通過標準輸入,腳本或者交互提示中讀取數據時,模塊的__name__將取值為'__main__'。(來源)

__name__與__doc__,__package__和其他屬性一起存儲在模塊的全局命名空間。更多關于屬性的信息可參考Python數據模型文檔,特別是關于模塊和包的信息,請參閱Python Import文檔。

導入模塊或解釋器

接下來是Python解釋器執行代碼的第二種方式:導入。在開發模塊或腳本時,可以使用import關鍵字導入他人已經構建的模塊。

在導入過程中,Python執行指定模塊中定義的語句(但僅在第一次導入模塊時)。要演示導入execution_methods.py文件的結果,需要啟動Python解釋器,然后導入execution_methods.py文件:

在此代碼輸出中,Python解釋器執行了三次print()函數調用。前兩行由于沒有變量,在輸出方面與在命令行上作為腳本執行時完全相同。但是第三個輸出存在差異。

當Python解釋器導入代碼時,__name__的值與要導入的模塊的名稱相同。您可以通過第三行的輸出了解這一點。__name__的值為'execution_methods',是Python導入的.py文件。

注意如果您在沒有退出Python時再次導入模塊,將不會有輸出。

注意:更多關于導入在Python中如何工作的內容請參考官方文檔和Python中的絕對和相對導入。

Main函數的最佳實踐

既然您已經了解兩種執行方式上的差異,那么掌握一些最佳實踐方案還是很有用的。它們將適用于編寫作為腳本運行的代碼或者在另一個模塊導入的代碼。

如下是四種實踐方式:

將大部分代碼放入函數或類中

請記住,Python解釋器在導入模塊時會執行模塊中的所有代碼。有時如果想要實現用戶可控的代碼,會導致一些副作用,例如:

在這種情況下,想要實現用戶控制觸發此代碼的執行,而不是讓Python解釋器在導入模塊時執行代碼。

因此,最佳方法是將大部分代碼包含在函數或類中。這是因為當Python解釋器遇到def或class關鍵字時,它只存儲這些定義供以后使用,并且在用戶通知之前不會實際執行。

將如下代碼保存在best_practices.py以證明這個想法:

在此代碼中,首先從time模塊中導入sleep()。

在這個示例中,參數以秒的形式傳入sleep()函數中,解釋器將暫停一段時間再運行。隨后,使用print()函數打印關于代碼描述的語句。

之后,定義一個process_data()函數,執行如下五項操作:

在命令行中執行

當你將此文件作為腳本用命令行執行時會發生什么呢?

Python解釋器將執行函數定義之外的from time import sleep和print(),之后將創建函數process_data()。然后,腳本將退出而不做任何進一步的操作,因為腳本沒有任何執行process_data()的代碼。

如下是這段腳本的執行結果:

我們在這里看到的輸出是第一個print()的結果。注意,從time導入和定義process_data()函數不產生結果。具體來說,調用定義在process_data()內部的print()不會打印結果。

導入模塊或解釋器執行

在會話(或其他模塊)中導入此文件時,Python解釋器將執行相同的步驟。

Python解釋器導入文件后,您可以使用已導入模塊中定義的任何變量,類或函數。為了證明這一點,我們將使用可交互的Python解釋器。啟動解釋器,然后鍵入import best_practices:

導入best_practices.py后唯一的輸出來自process_data()函數外定義的print()。導入模塊或解釋器執行與基于命令行執行類似。

使用__name__控制代碼的執行

如何實現基于命令行而不使用Python解釋器導入文件來執行呢?

您可以使用__name__來決定執行上下文,并且當__name__等于"__main__"時才執行process_data()。在best_practices.py文件中添加如下代碼:

這段代碼添加了一個條件語句來檢驗__name__的值。當值為"__main__"時,條件為True。記住當__name__變量的特殊值為"__main__"時意味著Python解釋器會執行腳本而不是將其導入。

條件語塊內添加了四行代碼(第12,13,14和15行):

現在,在命令行中運行best_practices.py,并觀察輸出的變化:

首先,輸出顯示了process_data()函數外的print()的調用結果。

之后,data的值被打印。因為當Python解釋器將文件作為腳本執行時,變量__name__具有值"__main__",因此條件語句被計算為True。

接下來,腳本將調用process_data()并傳入data進行修改。當process_data執行時,將輸出一些狀態信息。最終,將輸出modified_data的值。

現在您可以驗證從解釋器(或其他模塊)導入best_practices.py后發生的事情了。如下示例演示了這種情況:

注意,當前結果與將條件語句添加到文件末尾之前相同。因為此時__name__變量的值為"best_practices",因此條件語句結果為False,Python將不執行process_data()。

創建名為main()的函數來包含要運行的代碼

現在,您可以編寫作為腳本由從命令行執行并導入且沒有副作用的Python代碼。接下來,您將學習如何編寫代碼并使其他程序員能輕松地理解其含義。

許多語言,如C,C++,Java以及其他的一些語言,都會定義一個叫做main()的函數,當編譯程序時,操作系統會自動調用該函數。此函數通常被稱為入口點(entry point),因為它是程序進入執行的起始位置。

相比之下,Python沒有一個特殊的函數作為腳本的入口點。實際上在Python中可以將入口點定義成任何名稱。

盡管Python不要求將函數命名為main(),但是最佳的做法是將入口點函數命名為main()。這樣方便其他程序員定位程序的起點。

此外,main()函數應該包含Python解釋器執行文件時要運行的任何代碼。這比將代碼放入條件語塊中更好,因為用戶可以在導入模塊時重復使用main()函數。

修改best_practices.py文件如下所示:

在這個示例中,定義了一個main()函數,它包含了上面的條件語句塊。之后修改條件語塊執行main()。如果您將此代碼作為腳本運行或導入,將獲得與上一節相同的輸出。

在main()中調用其他函數

另一種常見的實現方式是在main()中調用其他函數,而不是直接將代碼寫入main()。這樣做的好處在于可以實現將幾個獨立運行的子任務整合。

例如,某個腳本有如下功能:

如果在單獨的函數中各自實現這些子任務,您(或其他用戶)可以很容易地實現代碼重用。之后您可以在main()函數中創建默認的工作流。

您可以根據自己的情況選擇是否使用此方案。將任務拆分為多個函數會使重用更容易,但會增加他人理解代碼的難度。

修改best_practices.py文件如下所示:

在此示例代碼中,文件的前10行具有與之前相同的內容。第12行的第二個函數創建并返回一些示例數據,第17行的第三個函數模擬將修改后的數據寫入數據庫。

第21行定義了main()函數。在此示例中,對main()做出修改,它將調用數據讀取,數據處理以及數據寫入等功能。

首先,從read_data_from_web()中創建data。將data作為參數傳入process_data(),之后將返回modified_data。最后,將modified_data傳入write_data_to_database()。

腳本的最后兩行是條件語塊用于驗證__name__,并且如果if語句為True,則執行main()。

在命令行中運行如下所示:

根據執行結果,Python解釋器在執行main()函數時,將依次執行read_data_from_web(),process_data()以及write_data_to_database()。當然,您也可以導入best_practices.py文件并重用process_data()作為不同的數據輸入源,如下所示:

在此示例中,導入了best_practices并且將其簡寫為bp。

導入過程會導致Python解釋器執行best_practices.py的全部代碼,因此輸出顯示解釋文件用途的信息。

然后,從文件中存儲數據而不是從Web中讀取數據。之后,可以重用best_practices.py文件中的process_data()和write_data_to_database()函數。在此情況下,可以利用代碼重寫來取代在main()函數中實現全部的代碼邏輯。

實踐總結

以下是Python中main()函數的四個關鍵最佳實踐:

結論

恭喜!您現在已經了解如何創建Python main()函數了。

本文介紹了如下內容:

現在,您可以開始編寫一些非常棒的關于Python main()函數代碼啦!

文章題目:python包里的函數 python 函數內import
轉載來于:http://www.js-pz168.com/article20/dogoico.html

成都網站建設公司_創新互聯,為您提供動態網站電子商務靜態網站外貿建站用戶體驗網頁設計公司

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

h5響應式網站建設
久久99久久人婷婷精品综合_超碰aⅴ人人做人人爽欧美_亚洲电影第三页_日韩欧美一中文字暮专区_波多野结衣的一区二区三区_婷婷在线播放_人人视频精品_国产精品日韩精品欧美精品_亚洲免费黄色_欧美性猛交xxxxxxxx
亚洲成人自拍偷拍| 亚洲欧洲国产日本综合| 亚洲国产岛国毛片在线| 亚洲免费在线看| 日韩在线观看一区二区| 国产一区二区在线电影| 91免费版在线| 精品视频在线观看| 色一区在线观看| 精品奇米国产一区二区三区| 欧美精品第1页| 欧美高清在线视频| 午夜成人在线视频| 国产 日韩 欧美大片| 韩国精品一区二区三区六区色诱| 亚洲图色在线| 日韩一级成人av| 国产精品夫妻自拍| 老司机一区二区| 99精品欧美一区二区蜜桃免费 | 久久蜜桃香蕉精品一区二区三区| 日韩美女视频一区二区| 日本美女一区二区| 波多野结衣亚洲| 欧洲亚洲一区二区| 6080yy午夜一二三区久久| 中文字幕av一区二区三区高| 午夜精品久久久久久久久| 国产精品一卡二| 极品尤物一区二区三区| 在线观看成人小视频| 久久婷婷色综合| 午夜精品福利一区二区三区蜜桃| 国产91精品欧美| 欧美中日韩免费视频| 欧美日韩国产免费| 亚洲国产精华液网站w| 日韩电影免费在线看| av在线综合网| 日韩偷拍一区二区| 欧美成人精品1314www| 一区二区激情视频| 成人v精品蜜桃久久一区| 日韩欧美在线电影| 精品国产凹凸成av人导航| 亚洲国产精品麻豆| 91丨porny丨最新| 在线免费观看视频一区| 国产精品网友自拍| 国产一区二区三区在线观看精品| 久久草.com| 欧美一区二区三区成人| 亚洲激情校园春色| 不卡一二三区首页| 自拍偷拍亚洲色图欧美| 欧美激情一区二区三区不卡| 另类专区欧美蜜桃臀第一页| 国产伦理一区二区三区| 欧美人妖巨大在线| 亚洲视频一区二区在线| 国产一区二区在线免费观看| 欧美日韩国产综合视频在线| 精品剧情在线观看| 性久久久久久久久| av资源站久久亚洲| 欧美一区二区三区性视频| 亚洲国产视频a| 99在线视频免费观看| 欧美日韩在线播放三区| 一区二区三区四区在线免费观看| 99视频一区二区| 欧洲精品在线观看| 亚洲自拍另类综合| 91精品综合久久| 91精品在线免费观看| 午夜精品爽啪视频| 国产精品一区二区三区不卡 | 在线观看成人小视频| 亚洲免费观看高清完整版在线| 成人免费高清视频在线观看| 91官网在线观看| 亚洲综合999| 国产精品一区在线观看| 日韩免费观看高清完整版在线观看| 视频一区在线播放| 久久精品丝袜高跟鞋| 久久综合九色综合97婷婷| 国产资源精品在线观看| 亚洲一区不卡在线| 欧美国产精品专区| 成人免费视频一区| 精品视频1区2区| 亚洲bt欧美bt精品| 欧美日韩免费高清| 国产精品久久久久久福利一牛影视 | 国产亚洲女人久久久久毛片| 免费成人深夜小野草| 激情五月综合色婷婷一区二区 | 成人免费视频一区| 欧美高清视频在线高清观看mv色露露十八| 五月天丁香久久| 日韩欧美亚洲精品| 亚洲精品国产精品乱码不99| 国产精品一区二区三区免费| 亚洲精品一线二线三线无人区| 精品午夜久久福利影院| 涩涩涩999| 一区二区三区免费网站| 久久久久久久久一区| 国产精品美女久久久久高潮| 91日韩一区二区三区| 精品日韩欧美一区二区| 东方欧美亚洲色图在线| 7777精品伊人久久久大香线蕉 | 国产精品免费视频一区| 成人久久视频在线观看| 欧美精品一级二级| 老色鬼精品视频在线观看播放| 中文字幕日韩精品久久| 亚洲人成电影网站色mp4| 好吊色欧美一区二区三区四区 | 国内外成人在线| 欧美日韩一区国产| 久久99久久精品欧美| 欧美在线一区二区| 久久国产剧场电影| 欧美日韩一区二区三区不卡| 午夜电影网亚洲视频| 欧美色欧美亚洲另类七区| 中文字幕亚洲在| 久久99精品久久久久久水蜜桃| 国产精品久久久久桃色tv| 国产精品一区二区三区在线| 国产精品女主播av| 精品蜜桃传媒| 亚洲女女做受ⅹxx高潮| 日本午夜一区二区三区| 亚洲国产精品综合小说图片区| 久久伊人一区二区| 亚洲视频综合在线| 日本一区二区三区www| 亚洲高清视频的网址| 色婷婷av一区二区三区之一色屋| 免费观看成人av| 精品视频在线免费看| 国产精品99久久久| 精品黑人一区二区三区久久| 91麻豆视频网站| 欧美激情一区二区三区不卡| 成人片在线免费看| 亚洲日本va午夜在线电影| 色中色综合成人| 美国欧美日韩国产在线播放| 欧美老年两性高潮| caoporn国产精品| 国产精品午夜春色av| 农村寡妇一区二区三区| 丝袜诱惑制服诱惑色一区在线观看 | 婷婷综合久久一区二区三区| 91传媒视频在线播放| 国产一区二区精品久久91| 精品久久久久香蕉网| 国产精品露出视频| 亚洲伊人色欲综合网| 欧洲一区二区三区在线| 懂色av一区二区三区蜜臀| 国产亚洲1区2区3区| 蜜桃传媒视频麻豆一区| 日韩在线一二三区| 4438x亚洲最大成人网| 91精品网站| 亚洲高清免费观看高清完整版在线观看| 91久久免费观看| 波多野结衣中文字幕一区| 亚洲天堂久久久久久久| 色老汉一区二区三区| 国产99久久久精品| 国产精品二三区| 一本高清dvd不卡在线观看| 男女男精品网站| 精品免费国产一区二区三区四区| 国产精选一区二区| 午夜精品在线看| 欧美一级理论性理论a| 国产66精品久久久久999小说 | 国产精品免费一区二区三区四区| 亚洲一区二区五区| 在线成人小视频| 国产精选一区二区| 免费在线观看日韩欧美| 2021久久国产精品不只是精品| 欧美伦理一区二区| 国产一区福利在线| 国产精品亲子伦对白| 一区二区不卡视频| 99久久精品久久久久久ai换脸| 日韩 欧美一区二区三区| 久久综合久色欧美综合狠狠| 夜夜春亚洲嫩草影视日日摸夜夜添夜| 波多野洁衣一区|