日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

诺,你们要的Python进阶来咯!【函数、类进阶必备】

發(fā)布時間:2023/12/20 python 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 诺,你们要的Python进阶来咯!【函数、类进阶必备】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

Python基礎(chǔ)及進(jìn)階內(nèi)容持續(xù)更新中!歡迎小伙伴們一起關(guān)注學(xué)習(xí)

目錄

一、Python進(jìn)階初體驗(yàn)——內(nèi)置函數(shù)

1、數(shù)據(jù)類型相關(guān)

2、數(shù)值計(jì)算相關(guān)

3、bool 值判斷相關(guān)

4、IO 相關(guān)

5、元數(shù)據(jù)相關(guān)

6、help()函數(shù)

7、sorted()函數(shù)

8、range()函數(shù)

二、給代碼安個家——函數(shù)進(jìn)階

1、位置參數(shù)

2、參數(shù)默認(rèn)值

3、關(guān)鍵字參數(shù)

4、任意參數(shù)列表

5、多返回值

三、讓你函數(shù)更好用——類進(jìn)階

1、類屬性和類方法

(1)類屬性的定義

(2)類方法的定義

2、靜態(tài)方法

3、私有屬性、方法

4、特殊方法

5、類的繼承

(1)類的簡單繼承

(2)類的繼承鏈

(3)類的多繼承

四、從小獨(dú)棟升級為別墅區(qū)——函數(shù)式編程

1、函數(shù)賦值給變量

2、函數(shù)作為函數(shù)參數(shù)

3、lambda 表達(dá)式


寫在前面

Hello,你好呀,我是灰小猿!一個超會寫bug的程序猿!

最近和大家總結(jié)了幾期有關(guān)Python基礎(chǔ)入門和常見報(bào)錯解決的相關(guān)文章,得到了很多小伙伴的支持,同時Python基礎(chǔ)入門相關(guān)的內(nèi)容也算是和大家總結(jié)得差不多了,有想學(xué)習(xí)或參考的小伙伴可以看以下幾篇文章:

Python基礎(chǔ)入門:

【全網(wǎng)力薦】堪稱最易學(xué)的Python基礎(chǔ)入門教程

萬字長文爆肝Python基礎(chǔ)入門【第二彈、超詳細(xì)數(shù)據(jù)類型總結(jié)】

常見報(bào)錯及解決:

全網(wǎng)最值得收藏的Python常見報(bào)錯及其解決方案,再也不用擔(dān)心遇到BUG了!

今天就繼續(xù)來和大家分享有關(guān)Python進(jìn)階中函數(shù)和類使用的相關(guān)內(nèi)容,同時之后還會繼續(xù)更新,感興趣的小伙伴可以關(guān)注一起學(xué)習(xí)呀!

?

一、Python進(jìn)階初體驗(yàn)——內(nèi)置函數(shù)

Python 中內(nèi)置有很多常用的函數(shù),這些函數(shù)無需從模塊中導(dǎo)入,可直接使用。由于內(nèi)置函數(shù)有六七十個之多,

故這里不一一介紹,只介紹一些最常用的,有關(guān)其他詳細(xì)的內(nèi)置函數(shù)大家可以參考這里“菜鳥教程—Python內(nèi)置函數(shù)”。

1、數(shù)據(jù)類型相關(guān)

內(nèi)置函數(shù)功能示例示例結(jié)果
dict()將參數(shù)轉(zhuǎn)換為字典類型dict(a=1, b=2, c=3){'a': 1, 'b': 2, 'c': 3}
float()將字符串或數(shù)字轉(zhuǎn)換為浮點(diǎn)型float('0.22')0.22
int()將字符串或數(shù)字轉(zhuǎn)換為整數(shù)型int(1.23)1
list()將元組、字符串等可迭代對象轉(zhuǎn)換為列表list('abc')['a', 'b', 'c']
tuple()將列表、字符串等可迭代對象轉(zhuǎn)換為元組tuple([1, 2, 3])(1, 2, 3)
set()1.創(chuàng)建空集合;2.將可迭代對象轉(zhuǎn)換為列表集合set('abc'){'b', 'a', 'c'}
str()將參數(shù)轉(zhuǎn)換為字符串str(3.14)'3.14'
bytes()將參數(shù)轉(zhuǎn)換為字節(jié)序列bytes(4)b'\x00\x00\x00\x00

擴(kuò)展:上表中的函數(shù)嚴(yán)格來講并不是函數(shù),而是類,只是其命名風(fēng)格和使用方式和函數(shù)類似。

可迭代對象:如列表、元組、字符串、集合、字典等。關(guān)于可迭代對象的使用計(jì)劃在下一篇和大家分享。

2、數(shù)值計(jì)算相關(guān)

內(nèi)置函數(shù)功能示例示例結(jié)果
max()求最大值max([13, 2, 0.6, -51, 7])13
min()求最小值min([13, 2, 0.6, -51, 7])-51
sum()求和sum([13, 2, 0.6, -51, 7])-28.4
abs()求絕對值abs(-51)51
pow()求次方pow(2, 10)1024
bin()轉(zhuǎn)換為二進(jìn)制bin(77)'0b1001101' (注意結(jié)果為字符串)
hex()轉(zhuǎn)換為十六進(jìn)制hex(77)'0x4d' (注意結(jié)果為字符串)
round()浮點(diǎn)數(shù)四舍五入round(4.5678, 2) (第二個參數(shù)為小數(shù)精度)4.57

3、bool 值判斷相關(guān)

內(nèi)置函數(shù)功能
bool()判斷參數(shù)是否為真,為真則返回 True,否則返回 False。「為真」指的是,表達(dá)式的結(jié)果為布爾值 True,或非零數(shù)字,或非空字符串,或非空列表
all()如果可迭代對象中的所有值,在逐一應(yīng)用 bool(值) 后結(jié)果都為 True,則返回 True,否則返回 False
any()如果可迭代對象中的任意一個或多個值,在應(yīng)用 bool(值) 后結(jié)果為 True,則返回 True,否則返回 False

關(guān)于上述三個函數(shù)的使用可以看下面的實(shí)例:

>>> bool(2)
True
>>> bool(0)
False
>>> bool([1, 2, 3])
True
>>> bool([])
False
>>> bool(‘a(chǎn)bc’)
True
>>> bool(’’)
False

>>> all([‘a(chǎn)’, 1, [1]])
True
>>> all([‘a(chǎn)’, 0, [1]])
False

>>> any([’’, 0, []])
False
>>> any([‘a(chǎn)’, 0, []])
True

4、IO 相關(guān)

IO 即輸入輸出。

內(nèi)置函數(shù)功能
input()從標(biāo)準(zhǔn)輸入中讀取字符串
print()將內(nèi)容寫入標(biāo)準(zhǔn)輸出中
open()打開一個文件。之后便可以對文件做讀寫操作。詳見 IO 操作章節(jié)

5、元數(shù)據(jù)相關(guān)

內(nèi)置函數(shù)功能
type()獲取對象的類型
isinstance()判斷對象是否是某個類(或其子類)的對象
dir()獲取類或?qū)ο笾械乃蟹椒ê蛯傩?#xff1b;無參數(shù)時獲取當(dāng)前作用域下的所有名字
id()返回一個對象的唯一標(biāo)識。在我們所使用的 CPython 中這個唯一標(biāo)識實(shí)際為該對象在內(nèi)存中的地址

type() 示例:

>>> numbers = [1, 2, 3]
>>> type(numbers)
<class ‘list’>

isinstance() 示例:

>>> numbers = [1, 2, 3]
>>> isinstance(numbers, list)
True
>>> isinstance(numbers, str)
False

也可以把多個類型放在元組中,其中一個與對象的類型相符即為 True,若無相符則為 False。如:

>>> numbers = [1, 2, 3]
>>> isinstance(numbers, (list, str))
True

dir() 示例:

>>> dir(list)
[’__add__’, ‘__class__’, ‘__contains__’, ‘__delattr__’, ‘__delitem__’, ‘__dir__’, ‘__doc__’, ‘__eq__’, ‘__format__’, ‘__ge__’, ‘__getattribute__’, ‘__getitem__’, ‘__gt__’, ‘__hash__’, ‘__iadd__’, '__imul__, ‘__init__’, ‘__init_subclass__’, ‘__iter__’, ‘__le__’, ‘__len__’, ‘__lt__’, ‘__mul__’, ‘__ne__’, ‘__new__’, ‘__reduce__’, ‘__reduce_ex__’, ‘__repr__’, ‘__reversed__’, ‘__rmul__’, ‘__setattr__’, ‘__setitem__’, ‘__sizeof__’, ‘__str__’, ‘__subclasshook__’, ‘a(chǎn)ppend’, ‘clear’, ‘copy’, ‘count’, ‘extend’, ‘index’, ‘insert’, ‘pop’, ‘remove’, ‘reverse’, ‘sort’]

id() 示例:

>>> number = 1
>>> id(number)
4411695232

>>> numbers = [1, 2, 3, 4]
>>> id(numbers)
4417622792

6、help()函數(shù)

解釋器交互模式下獲取某個函數(shù)、類的幫助信息,非常實(shí)用。

比如查看內(nèi)置函數(shù) any() 的用法:

>>> help(any) # 只需使用函數(shù)名字

將顯示出 any() 的幫助信息:

Help on built-in function any in module builtins:any(iterable, /)Return True if bool(x) is True for any x in the iterable.If the iterable is empty, return False. (END)

按下 q 鍵退出上述界面。

對于這個章節(jié)中的內(nèi)置函數(shù),如果你有不清楚的地方,便可以用 help() 來查看使用說明。

7、sorted()函數(shù)

對可迭代對象中的數(shù)據(jù)進(jìn)行排序,返回一個新的列表。

>>> numbers = (4, 5, 2, 8, 9, 1, 0)
>>> sorted(numbers)
[0, 1, 2, 4, 5, 8, 9]

通過參數(shù) reverse=True 指定倒序:

>>> numbers = (4, 5, 2, 8, 9, 1, 0)
>>> sorted(numbers, reverse=True)
[9, 8, 5, 4, 2, 1, 0]

通過參數(shù) key 指定排序時所使用的字段:

>>> codes = [(‘上海’, ‘021’), (‘北京’, ‘010’), (‘成都’, ‘028’), (‘廣州’, ‘020’)]
>>> sorted(codes, key=lambda x: x[1])
[(‘北京’, ‘010’), (‘廣州’, ‘020’), (‘上海’, ‘021’), (‘成都’, ‘028’)]

說明:指定 key 排序需要用到 lambda 表達(dá)式。有關(guān) lambda 表達(dá)式的內(nèi)容將在函數(shù)式編程章節(jié)中介紹。

8、range()函數(shù)

獲取一個整數(shù)序列。可指定起始數(shù)值,結(jié)束數(shù)值,增長步長。

在 for 循環(huán)中想要指定循環(huán)次數(shù)時非常有用。

  • 指定起始數(shù)值和結(jié)束數(shù)值,獲取一個連續(xù)的整數(shù)序列

    for i in range(2, 6):print(i)

    >>> for i in range(2, 6):
    … print(i)

    2
    3
    4
    5

    注意,生成的數(shù)值范圍為左閉右開區(qū)間,即不包括所指定的結(jié)束數(shù)值。

  • 只指定結(jié)束數(shù)值,此時起始數(shù)值默認(rèn)為 0

    >>> for i in range(4):
    … print(i)

    0
    1
    2
    3

  • 指定步長(第三個參數(shù))

    >>> for i in range(3, 15, 3):
    … print(i)

    3
    6
    9
    12

?

二、給代碼安個家——函數(shù)進(jìn)階

1、位置參數(shù)

位置參數(shù)這個名稱其實(shí)我們并不陌生,之前所編寫的函數(shù)使用的就是位置參數(shù)。位置參數(shù),顧名思義,傳入函數(shù)時每個參數(shù)都是通過位置來作區(qū)分的。函數(shù)調(diào)用時,傳入的值需按照位置與參數(shù)一一對應(yīng)。

比如下面這個程序:

def overspeed_rate(current, max, min):if current > max:return (current - max) / max # 超過最大時速,結(jié)果為正elif current < min:return (current - min) / min # 超過最小時速,結(jié)果為負(fù)else:return 0 # 不超速,結(jié)果為 0

這個函數(shù)用來判斷車輛在高速上行駛時超速的比例。它接受三個參數(shù),current 表示當(dāng)前時速,max 參數(shù)表示當(dāng)前路段的允許的最大時速,min 表示所允許的最小時速。

位置參數(shù)需要按位置順序來傳遞,否則結(jié)果不可預(yù)期。

>>> overspeed_rate(150, 120, 90)
0.25 # 超過最大時速 25%
>>> overspeed_rate(80, 100, 60)
0 # 不超速
>>> overspeed_rate(60, 120, 90)
-0.3333333333333333 # 超過最小時速 33.33%

?

2、參數(shù)默認(rèn)值

前面的函數(shù)中,如果最大時速和最小時速比較固定,那么每次函數(shù)調(diào)用時都輸入這個兩個參數(shù)就顯得有些繁瑣,這時我們可以使用參數(shù)默認(rèn)值。

參數(shù)默認(rèn)值也就是給參數(shù)設(shè)置默認(rèn)值,之后函數(shù)調(diào)用時便可以不傳入這個參數(shù),Python 自動以默認(rèn)值來填充參數(shù)。如果一個有默認(rèn)值的參數(shù)依然被傳入了值,那么默認(rèn)值將會被覆蓋。

函數(shù)定義時,以 參數(shù)=值 來指定參數(shù)默認(rèn)值。如下:

def 函數(shù)(參數(shù)1, 參數(shù)2=默認(rèn)值):pass

例如上面的 overspeed_rate 函數(shù), max 和 min 通常比較固定,我們可以使用一個常用值來作為默認(rèn)值。

def overspeed_rate(current, max=120, min=90):if current > max:return (current - max) / maxelif current < min:return (current - min) / minelse:return 0

>>> overspeed_rate(192)
0.6
>>> overspeed_rate(45)
-0.5

?

3、關(guān)鍵字參數(shù)

對于 overspeed_rate 函數(shù),我們還可以在函數(shù)調(diào)用時,以 參數(shù)名=值 的形式來向指定的參數(shù)傳入值。

如:

overspeed_rate(100, min=80)

或者

overspeed_rate(current=100, min=80)

或者

overspeed_rate(current=100, max=100, min=80)

在調(diào)用函數(shù)時以 參數(shù)名=值 指明要傳遞的參數(shù),這種以關(guān)鍵字的形式來使用的參數(shù)叫做關(guān)鍵字參數(shù)

使用關(guān)鍵字時甚至可以打亂參數(shù)傳遞次序:

overspeed_rate(min=80, max=100, current=100)

>>> overspeed_rate(min=80, max=100, current=100)
0

但要注意,關(guān)鍵字參數(shù)需要出現(xiàn)在位置參數(shù)之后,否則將拋出 SyntaxError 異常:

>>> overspeed_rate(100, max=100, 80)
???? File “”, line 1
SyntaxError: positional argument follows keyword argument

關(guān)鍵字參數(shù)的用法還不止如此。

當(dāng)我們在定義函數(shù)時,如果參數(shù)列表中某個參數(shù)使用 **參數(shù)名 形式,那么這個參數(shù)可以接受一切關(guān)鍵字參數(shù)。如下:

def echo(string, **keywords):print(string)for kw in keywords:print(kw, ":", keywords[kw])

>>> echo(‘hello’, today=‘2019-09-04’, content=‘function’, section=3.6)
hello
today : 2019-09-04
content : function
section : 3.6

顯然,我們并沒有在函數(shù)定義時定義 today、content、section 參數(shù),但是我們卻能接收到它們,這正是 **keywords 發(fā)揮了作用。函數(shù)會將所有接收到的關(guān)鍵字參數(shù)組裝成一個字典,并綁定到 keywords 上。驗(yàn)證一下:

>>> def foo(**keywords):
…???? print(keywords)

>>> foo(a=1, b=2, c=3)
{‘a(chǎn)’: 1, ‘b’: 2, ‘c’: 3}

?

4、任意參數(shù)列表

定義函數(shù)時,在參數(shù)列表中使用 **參數(shù)名,可以接收一切關(guān)鍵字參數(shù)。類似的,參數(shù)列表中使用 *參數(shù)名,就可以接受任意數(shù)量的非關(guān)鍵字參數(shù),也就是可變參數(shù)。

如,計(jì)算任意個數(shù)的乘積:

def multiply(*nums):result = 1for n in nums:result *= nreturn result

>>> multiply(1,3,5,7)
105

這個函數(shù)能接收任意個參數(shù),這正是 *nums 所發(fā)揮的作用。函數(shù)所有接收到的非關(guān)鍵字參數(shù)組裝成一個元組,并綁定到 nums 上。來試驗(yàn)一下:

>>> def multiply(*nums):
…???? print(nums)

>>> multiply(1, 2, 3, 4, 5)
(1, 2, 3, 4, 5)

?

5、多返回值

典型情況下,函數(shù)只有一個返回值,但是 Python 也支持函數(shù)返回多個返回值。

要返回多個返回值,只需在 return 關(guān)鍵字后跟多個值(依次用逗號分隔)。

例如:

def date():import datetimed = datetime.date.today()return d.year, d.month, d.day

date() 返回了今天的日期的年、月、日。

接收函數(shù)返回值時,用對應(yīng)返回值數(shù)量的變量來分別接收它們。

>>> year, month, day = date()
>>> year
2019
>>> month
9
>>> day
4

函數(shù)返回多個返回值是什么原理呢?其實(shí)多返回值時,Python 將這些返回值包裝成了元組,然后將元組返回。來驗(yàn)證下:

>>> date()
(2019, 9, 4)

接收返回值時,year, month, day = date(),這樣賦值寫法,會將元組解包,分別將元素賦予單獨(dú)的變量中。即:

>>> year, month, day = (2019, 9, 4)
>>> year
2019
>>> month
9
>>> day
4

?

三、讓你函數(shù)更好用——類進(jìn)階

1、類屬性和類方法

之前介紹類的時候,我們學(xué)習(xí)了對象屬性和對象方法。對象屬性和對象方法是綁定在對象這個層次上的,也就是說需要先創(chuàng)建對象,然后才能使用對象的屬性和方法。

即:

對象 = 類()對象.屬性 對象.方法()

除此之外,還有一種綁定在類這個層面的屬性和方法,叫作類屬性和類方法。使用類屬性和類方法時,不用創(chuàng)建對象,直接通過類來使用。

類屬性和類方法的使用方式:

類.屬性 類.方法()

?

(1)類屬性的定義

類屬性如何定義呢?

只要將屬性定義在類之中方法之外即可。如下面的 屬性1 和 屬性2:

class 類:屬性1 = X屬性2 = Ydef 某方法():pass

舉個例子:

class Char:letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'digits = '0123456789'

這里定義了類 Char,有兩個類屬性,這兩個類屬性分別包含所有大寫字母和所有數(shù)字。可以通過類名來使用這兩個類屬性,此時無需創(chuàng)建對象:

>>> Char.letters
’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
>>> Char.digits
’0123456789’

當(dāng)然,類所創(chuàng)建出來的對象也能使用類屬性:

>>> char = Char()
>>> char.letters
’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
>>> char.digits
’0123456789’

?

(2)類方法的定義

再來看下類方法的定義方法。類方法的定義需要借助于裝飾器,裝飾器具體是什么后續(xù)文章中會介紹,目前只要知道用法即可。

定義類方法時,需要在方法的前面加上裝飾器 @classmethod。如下:

class 類:@classmethoddef 類方法(cls):pass

注意與對象方法不同,類方法的第一個參數(shù)通常命名為 cls,表示當(dāng)前這個類本身。我們可以通過該參數(shù)來引用類屬性,或類中其它類方法。

類方法中可以使用該類的類屬性,但不能使用該類的對象屬性。因?yàn)轭惙椒`屬于類,而對象屬性隸屬于對象,使用類方法時可能還沒有對象被創(chuàng)建出來。

在之前 Char 類的基礎(chǔ)上,我們加上隨機(jī)獲取任意字符的類方法。代碼如下:

import randomclass Char:letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'digits = '0123456789'@classmethoddef random_letter(cls):return random.choice(cls.letters)@classmethoddef random_digits(cls):return random.choice(cls.digits)

方法 random_letter() 可以從屬性 letters 隨機(jī)獲取一個大寫字母;方法 random_digits() 可以從屬性 digits 隨機(jī)獲取一個數(shù)字。它們函數(shù)體中的 random.choice() 可從指定序列中隨機(jī)獲取一個元素。

>>> Char.random_digits()
‘8’
>>> Char.random_letter()
‘X’

擴(kuò)展:import 語句不僅可用于模塊的開頭,也可用于模塊的任意位置,如函數(shù)中。

?

2、靜態(tài)方法

與類方法有點(diǎn)相似的是靜態(tài)方法,靜態(tài)方法也可直接通過類名來調(diào)用,不必先創(chuàng)建對象。不同在于類方法的第一個參數(shù)是類自身(cls),而靜態(tài)方法沒有這樣的參數(shù)。如果方法需要和其它類屬性或類方法交互,那么可以將其定義成類方法;如果方法無需和其它類屬性或類方法交互,那么可以將其定義成靜態(tài)方法。

定義靜態(tài)方法時,需要在方法的前面加上裝飾器 @staticmethod。如下:

class 類:@staticmethoddef 靜態(tài)方法():pass

之前的例子中,我們可以從類屬性 letters 和 digits 中隨機(jī)獲取字符,如果想要自己來指定字符的范圍,并從中獲取一個隨機(jī)字符,可以再來定義一個靜態(tài)方法 random_char()。如:

import randomclass Char:letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'digits = '0123456789'@classmethoddef random_letter(cls):return random.choice(cls.letters)@classmethoddef random_digits(cls):return random.choice(cls.digits)@staticmethoddef random_char(string):if not isinstance(string, str):raise TypeError('需要字符串參數(shù)')return random.choice(string)

靜態(tài)方法 random_char 從傳入的字符串中隨機(jī)挑選出一個字符。之所以定義成靜態(tài)方法,是因?yàn)樗鼰o需與類屬性交互。

>>> Char.random_char(‘imooc2019’)
‘0’
>>> Char.random_char(‘imooc2019’)
‘m’

?

3、私有屬性、方法

類屬性 letters 和 digits 是為了提供給同一個類中的類方法使用,但我們可以通過類或?qū)ο髲念惖耐獠恐苯釉L問它們。比如:

Char.letters Char.digits

>>> Char.letters
’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
>>> Char.digits
’0123456789’

有時我們不想把過多的信息暴露出去,有沒有什么方法來限制屬性不被類外部所訪問,而是只能在類中使用?

答案是有的,我們只需要在命名上動動手腳,將屬性或方法的名稱用 __(兩個下劃線)開頭即可。如:

import randomclass Char:__letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'__digits = '0123456789'@classmethoddef random_letter(cls):return random.choice(cls.__letters)@classmethoddef random_digits(cls):return random.choice(cls.__digits)

從類外部訪問這兩個屬性看看:

>>> Char.__letters
Traceback (most recent call last):
???? File “”, line 1, in
AttributeError: type object ‘Char’ has no attribute ‘__letters’

>>> Char.__digits
Traceback (most recent call last):
???? File “”, line 1, in
AttributeError: type object ‘Char’ has no attribute ‘__digits’

可以看到,修改過后的屬性不能直接被訪問了,解釋器拋出 AttributeError 異常,提示類中沒有這個屬性。

但位于同一個類中的方法還是可以正常使用這些屬性:

>>> Char.random_letter()
‘N’
>>> Char.random_digits()
‘4’

像這樣以 __(兩個下劃線)開頭的屬性我們稱為私有屬性。顧名思義,它是類所私有的,不能在類外部使用。

上述是以類屬性作為示例,該規(guī)則對類方法、對象屬性、對象方法同樣適用。只需在名稱前加上 __(兩個下劃線)即可。

我們也可以使用 _(一個下劃線)前綴來聲明某屬性或方法是私有的,但是這種形式只是一種使用者間的約定,并不在解釋器層面作限制。如:

class Char:_letters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ'_digits = '0123456789'

上面的 _letters 和 _digits 也可看作私有屬性,只不過是約定上的私有,通過名稱前綴 _(一個下滑線)向使用者告知這是私有的。但你如果非要使用,依然可以用。

>>> Char._letters
’ABCDEFGHIJKLMNOPQRSTUVWXYZ’
>>> Char._digits
’0123456789’

?

4、特殊方法

類中以 __ 開頭并以 __ 結(jié)尾的方法是特殊方法,特殊方法有特殊的用途。它們可以直接調(diào)用,也可以通過一些內(nèi)置函數(shù)或操作符來間接調(diào)用,如之前學(xué)習(xí)過的 __init__()、__next__()。

特殊方法很多,在這里我們簡單例舉幾個:

  • __init__()

    __init__() 是非常典型的一個特殊方法,它用于對象的初始化。在實(shí)例化類的過程中,被自動調(diào)用。

  • __next__()

    在迭代器章節(jié)中我們講過,對迭代器調(diào)用 next() 函數(shù),便能生成下一個值。這個過程的背后,next() 調(diào)用了迭代器的 __next__() 方法。

  • __len__()

    你可能會好奇,為什么調(diào)用 len() 函數(shù)時,便能返回一個容器的長度?原因就是容器類中實(shí)現(xiàn)了 __len__() 方法,調(diào)用 len() 函數(shù)時將自動調(diào)用容器的 __len__() 方法。

  • __str__()

    在使用 print() 函數(shù)時將自動調(diào)用類的 __str__() 方法。如:

    class A:def __str__(self):return '這是 A 的對象'

    >>> a = A()
    >>> print(a)
    這是 A 的對象`

  • __getitem__()

    諸如列表、元素、字符串這樣的序列,我們可以通過索引的方式來獲取其中的元素,這背后便是 __getitem__() 在起作用。

    'abc'[2] 即等同于 'abc'.__getitem__(2)。

    >>> ‘a(chǎn)bc’[2]
    ‘c’
    >>> ‘a(chǎn)bc’.__getitem__(2)
    ‘c’

?

5、類的繼承

(1)類的簡單繼承

如果想基于一個現(xiàn)有的類,獲取其全部能力,并以此擴(kuò)展出一個更強(qiáng)大的類,此時可以使用類的繼承。被繼承的類叫作父類(或基類),繼承者叫作子類(或派生類)。關(guān)于類的簡單繼承可以看下圖就是一個典型的例子:

在類的繼承的定義時,子類名稱的后面加上括號并寫入父類。如下:

class 父類:父類的實(shí)現(xiàn)class 子類(父類):子類的實(shí)現(xiàn)

例如:

class A:def __init__(self):self.apple = 'apple'def have(self):print('I hava an', self.apple)class B(A):def who(self):print('I am an object of B')

>>> b = B()

>>> b.who()
I am an object of B

>>> b.apple
’apple’

>>> b.have()
I hava an apple

可以看到,雖然類 B 中什么都沒定義,但由于 B 繼承自 A,所以它擁有 A 的屬性和方法。

子類 B 中當(dāng)然也可以定義自己的屬性。

class B(A):def __init__(self):super().__init__()self.banana = 'banana'

>>> b = B()
>>> b.banana
’banana’

我們在 B 中定義 __init__() 方法,并在其中定義了 B 自己的屬性 banana。

super().__init__() 這一句代碼是什么作用?由于我們在子類中定義了 __init__() 方法,這會導(dǎo)致子類無法再獲取父類的屬性,加上這行代碼就能在子類初始化的同時初始化父類。super() 用在類的方法中時,返回父類對象。

子類中出現(xiàn)和父類同名的方法會怎么樣?答案是子類會覆蓋父類的同名方法。

class A:def __init__(self):self.apple = 'apple'def have(self):print('I hava an', self.apple)class B(A):def __init__(self):super().__init__()self.banana = 'banana'def have(self):print('I hava an', self.banana)

>>> b = B()
>>> b.have()
I hava an banana

?

(2)類的繼承鏈

子類可以繼承父類,同樣的,父類也可以繼承它自己的父類,如此一層一層繼承下去。

class A:def have(self):print('I hava an apple')class B(A):passclass C(B):pass

>>> c = C()
>>> c.have()
I hava an apple

在這里 A 是繼承鏈的頂端,B 和 C 都是它的子類(孫子類)。

其實(shí) A 也有繼承,它繼承自 object。任何類的根源都是 object 類。如果一個類沒有指定所繼承的類,那么它默認(rèn)繼承 object。

A 中也可以顯式指明其繼承于 object :

class A(object):def have(self):print('I hava an apple')

如果想要判斷一個類是否是另一個類的子類,可以使用內(nèi)置函數(shù) issubclass() 。用法如下:

>>> issubclass(C, A)
True
>>> issubclass(B, A)
True
>>> issubclass(C, B)
True

(3)類的多繼承

子類可以同時繼承多個父類,這樣它便擁有了多份能力。如下圖,步兵類就同時擁有士兵類和人類的屬性,就步兵類屬于多繼承。

定義時,子類名稱后面加上括號并寫入多個父類。如下:

class A:def get_apple(self):return 'apple'class B:def get_banana(self):return 'banana'class C(A, B):pass

>>> c = C()
>>> c.get_apple()
‘a(chǎn)pple’
>>> c.get_banana()
‘banana’

此時 C 便同時擁有了 A 和 B 的能力。

?

四、從小獨(dú)棟升級為別墅區(qū)——函數(shù)式編程

1、函數(shù)賦值給變量

在 Python 中,所有的對象都可以賦值給變量,包括函數(shù)。這可能有點(diǎn)出乎意料,我們不妨來試一試:

def say_hello(name):return name + ', hello!'f = say_hello

>>> f(‘開發(fā)者’)
‘開發(fā)者, hello!’

>>> f
<function say_hello at 0x10befec80>

注意,這里被賦值的是函數(shù)本身,而不是函數(shù)的結(jié)果。賦值后,變量 f 與函數(shù) say_hello 綁定,f 也就相當(dāng)于是 say_hello 的別名,完全可以用調(diào)用 say_hello 的方式來調(diào)用 f。

擴(kuò)展:類也可以賦值給變量。如:

class Apple:who_am_i = 'apple'banana = Apple

>>> banana.who_am_i
’apple’

注意,被賦值的是類本身,而不是類實(shí)例化后的對象。賦值后,變量 banana 與類 Apple 綁定,banana 也就相當(dāng)于是 Apple 的別名,使用 banana 就相當(dāng)于使用 Apple。

?

2、函數(shù)作為函數(shù)參數(shù)

一切對象都可以作為函數(shù)的參數(shù),包括另一個函數(shù)。接受函數(shù)作為參數(shù)的函數(shù),稱為高階函數(shù)。這和數(shù)學(xué)中的高階函數(shù)有些相似。

來看一個函數(shù)作為參數(shù)的例子。

這個例子中,我們實(shí)現(xiàn)了一個函數(shù),它從給定的數(shù)字列表中篩選數(shù)字,而具體的篩選策略由另一個函數(shù)決定并以參數(shù)的形式存在:

def filter_nums(nums, want_it):return [n for n in nums if want_it(n)]

函數(shù) filter_nums 用來篩選數(shù)字,它接受兩個參數(shù),nums 是包含所有待篩選數(shù)字的列表,want_it 是一個函數(shù),用來決定某個數(shù)字是否保留。

我們選定一個簡單的策略來實(shí)現(xiàn)下 want_it 參數(shù)所對應(yīng)的函數(shù)(其函數(shù)名不必為 want_it):

def want_it(num):return num % 2 == 0

這里 want_it 接受一個數(shù)字作為參數(shù),如果這個數(shù)字是 2 的倍數(shù),則返回 True,否則返回 False。

調(diào)用一下 filter_nums 試試:

>>> def filter_nums(nums, want_it):
…???? return [n for n in nums if want_it(n)]

>>> def want_it(num):
…???? return num % 2 == 0

>>> filter_nums([11, 12, 13, 14, 15, 16, 17, 18], want_it)
[12, 14, 16, 18]

這里每個數(shù)字都經(jīng)過 want_it() 函數(shù)的判斷,而 want_it() 是以 filter_num() 第二個參數(shù)的形式傳遞進(jìn)去,供 filter_num() 調(diào)用。

?

3、lambda 表達(dá)式

在 Python 中,可以通過 lambda 表達(dá)式來便捷地定義一個功能簡單的函數(shù),這個函數(shù)只有實(shí)現(xiàn)沒有名字,所以叫作匿名函數(shù)。

lambda 表達(dá)式的寫法如下:

lambda 參數(shù)1, 參數(shù)2, 參數(shù)N: 函數(shù)實(shí)現(xiàn)

使用上述表達(dá)式將定義一個匿名函數(shù),這個匿名函數(shù)可接受若干參數(shù),參數(shù)寫在冒號前(:),多個參數(shù)時用逗號分隔,其實(shí)現(xiàn)寫在冒號后(:)。

舉個例子:

f = lambda x: x ** 2

這個 lambda 表達(dá)式定義了一個匿名函數(shù),這個匿名函數(shù)接受一個參數(shù) x,返回 x ** 2 的計(jì)算結(jié)果。同時賦值語句將這個匿名函數(shù)賦值給了變量 f。注意 f 保存的是函數(shù),而不是函數(shù)結(jié)果。

>>> f
<function at 0x10bcba0d0>

>>> f(4)
16
>>> f(9)
81

通過觀察上述示例可以發(fā)現(xiàn),lambda 表達(dá)式中并沒有 return 關(guān)鍵字,但結(jié)果被返回出來。是的,匿名函數(shù)的 函數(shù)實(shí)現(xiàn) 的執(zhí)行結(jié)果就會作為它的返回值,無需使用 return 關(guān)鍵字。

從功能上來看,lambda x: x ** 2 等同于:

def no_name(x):return x ** 2

>>> no_name(4)
16

一般情況下,我們不會像 f = lambda x: x ** 2 這樣直接將匿名函數(shù)賦值給變量,然后去用這個變量。而是在需要將函數(shù)作為參數(shù)時,才去使用 lambda 表達(dá)式,這樣就無需在函數(shù)調(diào)用前去定義另外一個函數(shù)了。

如我們剛才寫的函數(shù) filter_nums:

def filter_nums(nums, want_it):return [n for n in nums if want_it(n)]

它的 want_it 參數(shù)需要是一個函數(shù) ,這時用 lambda 表達(dá)式便能方便的解決問題。可以像這樣來使用:

>>> filter_nums([11, 12, 13, 14, 15, 16, 17, 18], lambda x: x % 2 == 0)
[12, 14, 16, 18]

以前講內(nèi)置函數(shù)的時候,我們介紹過排序函數(shù) sorted()。它有一個參數(shù) key,用來在排序復(fù)雜元素時,指定排序所使用的字段,這個參數(shù)需要是個函數(shù),同樣可以用 lambda 表達(dá)式來解決:

>>> codes = [(‘上海’, ‘021’), (‘北京’, ‘010’), (‘成都’, ‘028’), (‘廣州’, ‘020’)]
>>> sorted(codes, key=lambda x: x[1]) # 以區(qū)號字典來排序
[(‘北京’, ‘010’), (‘廣州’, ‘020’), (‘上海’, ‘021’), (‘成都’, ‘028’)]

?

關(guān)于Python進(jìn)階的第一部分內(nèi)容就和大家分享到這里。評論區(qū)留言你們的問題和見解,我們一起學(xué)習(xí)!

之后還會和大家繼續(xù)更新更多關(guān)于Python技術(shù)干貨,

感興趣的小伙伴別忘了點(diǎn)個關(guān)注哈!

灰小猿陪你一起進(jìn)步呀!

同時給大家推薦一個CSDN官方的Python全棧知識圖譜學(xué)習(xí)路線,涵蓋Python六大模塊,100+知識點(diǎn),內(nèi)容梳理全面,難點(diǎn),痛點(diǎn)羅列齊全,可以說這本知識圖譜上的每一句話,都價值千金,這是CSDN聯(lián)合6位一線Python工程師,花費(fèi)3個月反復(fù)打磨,旨在幫助大家Python知識體系,具備實(shí)戰(zhàn)經(jīng)驗(yàn),破解開發(fā)和面試難題!非常適合學(xué)習(xí)Python的小伙伴們!原價129,CSDN官方限時限量29元!

總結(jié)

以上是生活随笔為你收集整理的诺,你们要的Python进阶来咯!【函数、类进阶必备】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

亚洲国产精品999 | 超级碰碰碰碰 | 精品在线你懂的 | 精品特级毛片 | 四虎在线视频免费观看 | 日日夜夜网站 | 免费观看久久久 | 日韩在线免费高清视频 | 在线看中文字幕 | 欧美人交a欧美精品 | 精品视频99 | 欧美成人aa | 久久久久麻豆 | 天天天天综合 | 2021国产精品 | 九九热精品视频在线观看 | 欧美激情在线网站 | 亚洲精品视频久久 | 综合久久一本 | 五月天激情视频 | av电影中文字幕 | av成人黄色 | 国产成人1区 | 久草免费看 | 免费人成在线观看网站 | 免费看十八岁美女 | 日韩精品一区二区三区免费视频观看 | 亚洲国产人午在线一二区 | 中文字幕精品一区 | 亚洲性少妇性猛交wwww乱大交 | 日韩欧三级 | 丰满少妇对白在线偷拍 | 久久综合九色综合欧美狠狠 | 天天综合操 | 99色视频 | 久久99久久久久久 | 日韩动漫免费观看高清完整版在线观看 | 人人插人人插 | 国产性天天综合网 | 久久免费视频在线观看 | 久久国产亚洲 | 午夜精品久久久久久久久久久久久久 | 五月激情视频 | 国产视频久久 | 五月激情五月激情 | 久久69精品久久久久久久电影好 | 国产一区二区在线免费观看 | 亚洲国产精品成人综合 | 久久国产精品99久久久久久丝袜 | 五月天亚洲综合小说网 | 亚洲区另类春色综合小说校园片 | 婷婷六月久久 | 成人a视频 | 在线观看不卡视频 | 97爱爱爱| 91在线视频免费观看 | 在线之家免费在线观看电影 | 怡红院av | 99热在线看 | 香蕉在线视频观看 | 99国产在线 | 欧美日韩国产在线精品 | 日韩欧美精品在线观看 | 欧美国产91| 精品免费视频. | 九九热99视频 | 欧美日韩一区三区 | 在线观看国产中文字幕 | 久久一区国产 | 精品美女在线观看 | 色综合 久久精品 | 亚洲精品国内 | 九九视频网| 久草视频观看 | 精品久久久久久久久久久久久久久久 | 国产最新精品视频 | 女人高潮特级毛片 | 一区二区三区在线免费观看视频 | 欧美极度另类性三渗透 | 久久综合久久综合这里只有精品 | 久草在线免费资源站 | 69国产盗摄一区二区三区五区 | 国产短视频在线播放 | 国产精彩视频一区二区 | 日韩精品一区二区三区免费视频观看 | 欧美a级在线免费观看 | 国色天香在线 | 精品99在线视频 | 99产精品成人啪免费网站 | 亚洲三级在线 | 天天操天天操天天操天天操天天操 | 成年人视频在线免费观看 | 69亚洲视频 | 免费在线成人 | 国产色中涩 | 亚洲伊人网在线观看 | 天天爱天天射 | 天天射天天做 | av在线播放免费 | 97超碰成人在线 | 97偷拍视频| 97在线视频观看 | 欧美性生活久久 | 国产在线播放一区二区 | 亚洲免费在线观看视频 | 成人va在线观看 | 国内外成人在线 | 免费在线看成人av | 日本大片免费观看在线 | 99热亚洲精品 | 亚洲无毛专区 | 国产精品系列在线播放 | 国产精品国产三级国产aⅴ无密码 | 免费在线观看污 | 人人插人人爱 | 久久免费在线观看 | 在线成人一区 | 91精品久久久久久久99蜜桃 | 婷婷色在线 | 成人小视频在线观看免费 | 亚洲一区二区高潮无套美女 | 久久国产精品99久久久久久进口 | 超碰人人超 | 国产专区视频在线观看 | 久久久免费国产 | 免费在线观看av网址 | av在线一级 | av天天澡天天爽天天av | 国产精品免费久久久久久久久久中文 | 日韩欧美网址 | 国产亚洲人成网站在线观看 | 在线观看av中文字幕 | 国产剧情久久 | 国产精品一区二区久久 | www.狠狠操.com | 国产精品综合av一区二区国产馆 | 最新91在线视频 | 手机看国产毛片 | 波多在线视频 | 国产不卡av在线 | 国产香蕉久久精品综合网 | 欧洲成人免费 | av日韩av| 色av婷婷 | 国产黄色片免费观看 | 99在线看| 亚州国产视频 | 中文字幕乱码日本亚洲一区二区 | 午夜精品一区二区三区可下载 | 福利网在线 | 在线三级播放 | 亚洲三级在线免费观看 | 亚洲 中文 欧美 日韩vr 在线 | 久久人人97超碰国产公开结果 | 久久一及片 | 天天射天天拍 | 久久草草影视免费网 | 久久成人精品电影 | 精品福利片| 91av美女| 亚洲国产欧美一区二区三区丁香婷 | 国产在线观看地址 | 不卡的av在线播放 | 成人国产网址 | 黄色日视频 | 992tv在线 | 亚洲精品乱码久久久久久写真 | 涩av在线 | 婷婷六月丁 | 天天摸天天舔天天操 | 亚洲日本中文字幕在线观看 | 涩av在线| 69国产精品视频 | 人人看人人草 | 中文字幕制服丝袜av久久 | 久草在线观看视频免费 | 免费观看全黄做爰大片国产 | 久久综合久久综合九色 | 日日摸日日碰 | 欧美最新大片在线看 | 久久久男人的天堂 | 最近中文字幕国语免费高清6 | 日韩中文在线电影 | 色五月成人 | 国产精品久久久一区二区 | 日韩精品一区二 | 视频91在线 | 亚洲婷婷免费 | 日韩精品三区四区 | 亚洲视频资源在线 | 久草青青在线观看 | 精品少妇一区二区三区在线 | 亚洲午夜电影网 | 久久9视频| 久草在线 | 99久久日韩精品视频免费在线观看 | 欧美日韩首页 | a天堂一码二码专区 | 欧美极度另类 | 天天玩天天干 | 在线精品一区二区 | 99精品久久久久久久 | 亚洲免费国产视频 | 欧美国产日韩一区二区三区 | 亚洲精选在线 | 日韩理论电影在线观看 | 国产精品免费人成网站 | 亚洲日日射 | 久久在线免费观看视频 | 一级黄色片在线免费看 | 91成年人在线观看 | 日韩在线电影 | 日韩欧美xxxx| 亚洲男男gaygay无套 | 日日夜夜婷婷 | 亚洲精品88欧美一区二区 | 黄色av电影一级片 | 人人澡超碰碰97碰碰碰软件 | 国产一级三级 | 国产美女网站在线观看 | 天天操天天干天天操天天干 | 免费在线观看成人小视频 | 久久免费国产精品1 | 亚州精品国产 | 欧美激情视频在线观看免费 | 五月婷婷婷婷婷 | 亚洲综合视频网 | 国产精品五月天 | 97精品国产91久久久久久 | 欧美另类sm图片 | 97超碰在线人人 | 香蕉视频一级 | 精品国产一区二区三区噜噜噜 | 中文字幕色网站 | 欧美国产精品久久久久久免费 | 十八岁以下禁止观看的1000个网站 | 91麻豆产精品久久久久久 | 久久久免费精品国产一区二区 | 999成人 | 欧美日韩国产一区二 | 97成人精品视频在线观看 | 九九九视频在线 | 亚洲一级黄色av | 亚洲永久av | 99视频在线观看一区三区 | 亚洲第一区在线观看 | 夜夜躁狠狠燥 | 国产精品一区二区三区99 | 久久这里只有精品1 | 一本一道久久a久久综合蜜桃 | 亚洲女裸体 | 青青河边草免费 | 日韩精品播放 | 成人av教育| 97偷拍视频 | 久久99九九99精品 | 欧美日韩免费看 | 国产在线最新 | 国产中文视| 92av视频| 一区 二区 精品 | 最近中文字幕高清字幕在线视频 | 97免费| 国产资源精品在线观看 | 在线观看岛国av | 久久这里只有精品首页 | 精品国产一区二区三区免费 | 国产在线中文 | aaawww| 久久久久久福利 | 97超碰在线免费观看 | 日韩精品一区二区在线视频 | 久久成人精品电影 | 久草免费电影 | 日韩高清一二三区 | 人人草在线视频 | 欧美日韩高清在线观看 | 午夜视频免费播放 | 精品国产乱码久久久久久1区二区 | av在线播放中文字幕 | 激情久久婷婷 | 久精品在线| 日韩激情视频 | 特级西西www44高清大胆图片 | 久久黄色免费视频 | 欧美成人精品在线 | 激情网站免费观看 | 国产精品免费观看视频 | 成人影视免费 | 欧美一级日韩三级 | 麻豆视频免费版 | 国产精品国产三级国产不产一地 | 亚洲一区不卡视频 | 狠狠色噜噜狠狠狠狠 | 精品一区中文字幕 | 国产一区二区网址 | 成人国产精品久久久春色 | www.天天干 | 欧美少妇xxx | 天天爽天天碰狠狠添 | 国产裸体bbb视频 | 午夜美女福利 | 久草视频精品 | 国产在线久草 | 国产日产精品一区二区三区四区 | 成人在线视频免费观看 | 美女av在线免费 | 99精品在线免费视频 | 国产精品九九九九九九 | 成人在线黄色电影 | 四虎国产精品免费 | 欧美一级日韩三级 | 亚洲成人精品影院 | 亚洲精品国产拍在线 | 国产午夜精品免费一区二区三区视频 | av高清在线观看 | 在线97 | 久久 地址 | 黄色在线网站噜噜噜 | 欧美日韩一区二区三区在线免费观看 | 欧洲精品亚洲精品 | 黄在线免费看 | 婷婷久久亚洲 | 久久精彩 | 欧美性一级观看 | av短片在线观看 | 亚洲激情六月 | 天天视频色 | 色综合天天色 | 亚洲午夜精品久久久久久久久 | 91精品国产三级a在线观看 | 久久国产精品一区二区三区四区 | 手机在线视频福利 | 免费在线观看av不卡 | 久久久久免费视频 | 久久综合九色欧美综合狠狠 | 国产成人免费av电影 | 久久精品99国产国产 | 亚洲少妇激情 | 成人丝袜 | 五月天视频网 | 日韩中文字幕免费在线观看 | 国产成人精品一区二区三区在线 | 国内精品久久久精品电影院 | 国产超碰97| 99久久久久免费精品国产 | 91精品国产三级a在线观看 | 一区二区三区精品久久久 | 亚洲天堂网站视频 | 日韩免费观看一区二区 | 天天操夜夜操天天射 | 国产精品18久久久久久vr | 婷婷久久久久 | 精品一区精品二区高清 | 青草视频在线看 | av福利在线导航 | 美女精品网站 | 日日操日日操 | 人人爽夜夜爽 | 最新动作电影 | 国产在线一区二区三区播放 | 青青河边草免费观看完整版高清 | 久久天天躁狠狠躁夜夜不卡公司 | 91精品电影| 欧美在线视频日韩 | 欧美国产一区二区 | 美女在线黄| 五月亚洲综合 | 在线视频黄 | 国产精品一区二 | 人人玩人人添人人 | 国产 成人 久久 | 亚洲精品国产精品国自产观看 | 五月天六月婷婷 | 五月天最新网址 | 99精品欧美一区二区蜜桃免费 | 国产中文字幕三区 | 国产色拍拍拍拍在线精品 | 久久久久久中文字幕 | 国产欧美日韩精品一区二区免费 | 日韩av网页 | 久久精品一二三区 | 在线视频婷婷 | 日韩免费成人 | 亚洲成人av电影 | 免费看的黄色录像 | 中文字幕字幕中文 | 国产成人一区二区三区电影 | 欧美日韩视频一区二区三区 | 国产精品久久久久久久久久不蜜月 | 国产精品不卡av | 亚洲精品资源在线观看 | 国产一二区在线观看 | 国产又黄又硬又爽 | 一区二区三区免费在线观看视频 | 久久精品国产一区二区三区 | 在线色资源 | 婷婷免费在线视频 | 欧美日韩国产一区二区三区 | 国产色婷婷在线 | 中文在线免费看视频 | www黄在线 | 超碰在线免费福利 | 免费麻豆| 亚洲电影第一页av | 天天射天天干天天爽 | 久久久亚洲麻豆日韩精品一区三区 | 久久久久女人精品毛片 | 在线观看成人一级片 | 一区二区三区免费看 | 欧美aa一级片 | 日本性xxx| 国产女人40精品一区毛片视频 | 丁香视频五月 | 国产精品久久久久久久久久尿 | 久久综合天天 | 国产一区二区免费看 | 久久精品亚洲一区二区三区观看模式 | 日韩精品不卡 | 日韩欧美极品 | 日本女人的性生活视频 | av黄色国产 | 操高跟美女 | 日韩欧美在线视频一区二区 | 日本最新高清不卡中文字幕 | 国产高清视频免费 | 狠狠久久综合 | 日日干天天 | 成年人黄色免费看 | 中文字幕免费久久 | 亚洲电影一区二区 | 波多野结衣一区三区 | 国产无套精品久久久久久 | 亚洲视屏一区 | 亚洲国产欧美一区二区三区丁香婷 | 国产91在线观 | 97在线观看视频免费 | 最近2019年日本中文免费字幕 | 激情久久久久久久久久久久久久久久 | 亚洲精品综合欧美二区变态 | 欧美一区二区三区在线观看 | 日韩久久久久久久 | 国产精品1区2区3区在线观看 | 99视频在线免费观看 | 国产视频精选在线 | 狠狠干夜夜爽 | 久久国产精品影片 | 国产精品亚洲视频 | 国产精品 中文字幕 亚洲 欧美 | 久久国产品 | 国产精品国产三级国产aⅴ入口 | 中文字幕人成乱码在线观看 | 亚洲妇女av | 91麻豆网| 国产美女网站在线观看 | 欧美精品在线观看免费 | 在线成人av | 国产精品一区二区av影院萌芽 | 亚洲 欧美日韩 国产 中文 | 亚洲爱爱视频 | 久久任你操 | 久久免费看av | 开心综合网 | 丁香综合av | 国产精品99久久免费黑人 | 日本精品久久 | 免费在线观看a v | 精品黄色视| 在线观看视频91 | 96视频免费在线观看 | 一区二区精品久久 | 国产精品 美女 | 这里有精品在线视频 | 日日夜夜天天 | 久久精品久久精品久久精品 | 午夜在线免费视频 | 欧美 亚洲 另类 激情 另类 | 欧美视频日韩 | 一区二区三区精品在线 | 国产在线播放一区二区 | 亚洲国产小视频在线观看 | 天堂网中文在线 | av解说在线观看 | 免费a级观看 | 在线亚洲成人 | 999视频网 | 日韩av不卡在线播放 | 亚洲在线免费视频 | 国产精品亚洲a | 91最新中文字幕 | 黄网站免费看 | 午夜体验区| 激情欧美一区二区三区免费看 | 88av网站| 色网址99| 成人在线黄色 | 亚洲涩涩网 | 日韩大片免费在线观看 | 久久久综合精品 | 伊人中文网| 国产999在线 | 国产精品不卡在线观看 | 日本资源中文字幕在线 | 国产日韩欧美在线一区 | 狠狠色丁香久久婷婷综 | 亚洲年轻女教师毛茸茸 | 欧美国产日韩一区 | 成人在线免费视频 | 91视频高清 | 日韩午夜大片 | 午夜性福利 | 久久精品视 | 精品999久久久 | 国产精品久久久久久一区二区 | 欧美视频网址 | 久免费视频 | 在线国产能看的 | 91网在线看 | 麻豆视频免费网站 | 日韩理论电影网 | av在线激情 | 中文字幕在线一区二区三区 | 啪一啪在线 | 91看片在线 | 久久 地址 | 欧美日韩在线看 | 一区二区三区中文字幕在线观看 | 欧美日韩成人 | 婷婷久久久 | 看片一区二区三区 | 日本少妇视频 | 日日日日干 | 亚洲精品在线视频观看 | 97在线视频免费观看 | 国产精品乱码在线 | 婷婷丁香花五月天 | 亚洲成a人片在线观看网站口工 | 久久久久久久av | 日韩精品视频免费 | 色999视频 | 欧美精品在线观看免费 | 丁香婷婷激情国产高清秒播 | 中文字幕字幕中文 | 免费看三级 | 国产一区在线免费观看视频 | 欧美日韩xxxxx| 国产精品久久久久久爽爽爽 | 在线天堂8√ | 日韩精品2区 | 久草精品视频 | 日韩精品一二三 | 亚洲国产精品一区二区尤物区 | 在线香蕉视频 | 96亚洲精品久久 | 精品一区电影国产 | 人人狠 | 日韩在线视频观看免费 | 四川bbb搡bbb爽爽视频 | 欧美福利网站 | 亚洲精品久久久久中文字幕二区 | 久久综合久久综合九色 | 国产99久 | 国产精品一区二区av影院萌芽 | 日韩一级片网址 | 国产精品久久久久久久久软件 | 亚洲国产美女精品久久久久∴ | 久久草av | 亚洲日本在线一区 | av在线网站观看 | 午夜精品福利一区二区三区蜜桃 | 草久热 | 国产中年夫妇高潮精品视频 | 在线看毛片网站 | 国内免费久久久久久久久久久 | 夜夜爽www | 欧美久久久久久久久中文字幕 | 亚洲精品久久久蜜臀下载官网 | 99久久精品电影 | 久久久国产精品人人片99精片欧美一 | 日韩欧美国产激情在线播放 | 亚洲高清久久久 | 欧美精品国产综合久久 | 午夜精品福利一区二区 | 国产精品麻豆一区二区三区 | 日韩深夜在线观看 | 亚洲电影在线看 | 国产精品mm | 日本性生活免费看 | 久久久久久高清 | 国产高清在线免费观看 | 麻豆国产在线播放 | 国产高清在线永久 | 成人v| 国色天香永久免费 | 精品亚洲在线 | av一区二区三区在线观看 | 天天色中文 | 欧美精品一区二区蜜臀亚洲 | 一区二区三区电影 | 日韩av影片在线观看 | 国产91精品久久久久久 | 亚欧日韩成人h片 | 午夜 免费 | 国产精品第54页 | 亚洲更新最快 | 欧美孕妇视频 | 久久久久久久久亚洲精品 | av中文字幕在线播放 | 一区二区成人国产精品 | 91精品久| 色多视频在线观看 | 91亚色视频| 激情开心网站 | www免费看片com | 亚洲做受高潮欧美裸体 | 国产精品videoxxxx | 久久久久久久亚洲精品 | av电影免费在线 | 一区 二区电影免费在线观看 | 91在线看免费 | 日韩在线免费 | 天天躁日日躁狠狠躁av中文 | 国产亚洲精品久久久久久 | 天天操天天综合网 | 婷婷视频导航 | 亚洲人成人在线 | 香蕉精品视频在线观看 | 国产亚洲在线视频 | 97香蕉视频 | 久久久91精品国产一区二区精品 | 精品国产理论 | 日韩国产精品一区 | 成人黄色av网站 | 久久久久成人精品免费播放动漫 | 成人黄色在线 | 亚洲精品中文在线资源 | 97自拍超碰 | 日韩精品黄| 欧美老女人xx | 国产精品美女久久久久久久 | 国产无套精品久久久久久 | 999在线精品| 麻豆91精品91久久久 | 国产精品黑丝在线观看 | 亚洲人成网站精品片在线观看 | 99色99| 国产一区二区高清不卡 | 91av电影网| 四虎5151久久欧美毛片 | 色香蕉在线视频 | 久久人人爽人人爽人人 | 免费在线国产黄色 | 免费看一级黄色 | 久久久久久久久久久电影 | 少妇搡bbbb搡bbb搡忠贞 | 992tv在线成人免费观看 | 色婷婷亚洲 | aⅴ视频在线 | 日本精品一区二区在线观看 | 中文字幕免费观看 | 久久久精品国产一区二区 | 亚洲精品永久免费视频 | 最近中文字幕国语免费av | 黄色国产在线 | 亚洲最新精品 | 美女网站色在线观看 | 国产一区在线免费观看视频 | 91在线视频网址 | 美女国产在线 | 亚洲一二区视频 | 亚洲一区天堂 | 最新亚洲视频 | 国产伦理久久精品久久久久_ | 日韩经典一区二区三区 | 欧美黄网站 | 99久久免费看 | 国产精品乱码一区二三区 | 成人av资源站| 99久久精品国 | 人人要人人澡人人爽人人dvd | 日韩电影在线观看中文字幕 | 色综合国产 | 久久久久伊人 | 久久久久国产精品一区二区 | 国产69久久| 成人在线观看影院 | 99精品免费网 | 久久99久久99精品免观看粉嫩 | 91精品办公室少妇高潮对白 | 欧洲精品亚洲精品 | 九九视频这里只有精品 | 免费观看全黄做爰大片国产 | 久草a在线| 999视频网站 | 手机在线小视频 | 久草视频在线免费看 | 丰满少妇久久久 | 91看片看淫黄大片 | 国产精品手机在线观看 | a级免费观看 | 五月天丁香视频 | 成人精品久久久 | 99久久夜色精品国产亚洲 | 日本女人逼 | 狂野欧美激情性xxxx | 国产精品永久免费 | 一区二区不卡在线观看 | 人人爽人人爽人人片av免 | 国产成人综合精品 | 少妇性bbb搡bbb爽爽爽欧美 | 不卡的av电影在线观看 | 中文字幕 国产视频 | 97色在线视频 | 日韩中文在线观看 | 亚洲一级片在线观看 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 日日干天天 | 在线观看亚洲国产 | 中文字幕在线网址 | 成 人 免费 黄 色 视频 | 成人av片免费看 | 丁香九月婷婷 | 久久久精品久久日韩一区综合 | 9久久精品 | 国产精品男女 | 中文字幕精品www乱入免费视频 | 中文字幕一区二区三区在线观看 | 久久激情五月婷婷 | 九色在线视频 | 国产一级免费在线 | 亚洲成色777777在线观看影院 | 91精品久久久久久粉嫩 | 91麻豆精品国产 | 亚洲一二三久久 | 色www.| 久草在线免 | 高清av中文在线字幕观看1 | 天天操天天射天天舔 | 国产一区 在线播放 | 97人人人人 | 91天堂素人约啪 | 欧美激情视频一区 | 国产免费亚洲 | 国产精品久久麻豆 | 日韩中文字幕免费 | aaa日本高清在线播放免费观看 | 激情五月婷婷丁香 | 久久九九精品久久 | 男女日麻批 | 国产美女精品视频 | 在线免费看黄色 | 九九免费在线观看 | 天天射天天射天天射 | 国产精品免费久久久久久久久久中文 | 91精品成人 | 久草在线官网 | 色婷婷国产 | 天天天射 | 三级在线播放视频 | 国产精品毛片 | 婷婷六月丁香激情 | 欧美日本在线视频 | 亚洲人成免费网站 | 成人国产精品一区二区 | 成人午夜黄色影院 | 久久精品人人做人人综合老师 | 99久久激情视频 | 欧美成年网站 | 国产精品成人自产拍在线观看 | 国产成人av免费在线观看 | 又黄又爽又刺激视频 | 六月天色婷婷 | 香蕉视频国产在线 | 97爱爱爱 | 天天射一射 | 国产精品igao视频网入口 | 一区三区视频在线观看 | 天天躁天天狠天天透 | 黄色日本免费 | 国产女人18毛片水真多18精品 | 国产精品毛片 | 日韩欧美一区二区三区免费观看 | 日本中出在线观看 | 亚洲精品播放 | av电影中文 | 婷婷去俺也去六月色 | 精品99视频 | 欧美午夜视频在线 | 日韩高清在线一区二区三区 | 美女精品在线观看 | 91精品国产综合久久久久久久 | 色视频成人在线观看免 | 伊人春色电影网 | 久久99久久久久久 | 欧美日韩网址 | 99久久精品免费看 | 深爱激情亚洲 | 国产高清视频免费最新在线 | 国产精品美 | 日韩久久久久久久久 | 亚洲免费av网站 | 99视频免费播放 | 久色网| 高清色免费 | 国产大片黄色 | 久久精品这里精品 | 久久免费视频播放 | 九热精品| 久久99视频免费观看 | 国产精品永久免费在线 | 黄色片网站大全 | 国产超碰在线 | 日韩中文字幕免费电影 | 日韩综合视频在线观看 | 69国产盗摄一区二区三区五区 | 又黄又爽又无遮挡免费的网站 | 久久精品中文字幕免费mv | 91av久久 | 色综合久久久久 | 欧美日韩视频在线播放 | 色综合a | 精品国模一区二区三区 | 天天摸日日操 | 99久久99久久精品国产片 | 中文字幕色网站 | 麻豆91精品视频 | 超碰人人干人人 | 日本字幕网 | 在线韩国电影免费观影完整版 | 99这里只有精品视频 | 天天色天天干天天 | 国产 字幕 制服 中文 在线 | 日本黄色免费观看 | 四虎www. | 日韩av看片 | 国产视频一区二区三区在线 | 美女免费视频观看网站 | 国产裸体无遮挡 | v片在线播放 | 久久影院亚洲 | 亚洲国产精品成人精品 | 91亚洲精品国产 | 天天综合久久 | 精品久久久久免费极品大片 | 日韩综合一区二区三区 | 欧美一二区视频 | 国产精品一二 | 国产精品 国内视频 | 一区二区三区在线观看免费视频 | 91亚色在线观看 | 中文字幕成人 | 久久av免费观看 | 玖玖玖国产精品 | 97超碰总站 | 日本中文字幕在线一区 | av高清一区二区三区 | 亚洲va男人天堂 | 国产成人在线观看免费 | 久久久久久国产精品亚洲78 | 国产欧美在线一区二区三区 | 国产黄色大全 | 国产伦精品一区二区三区免费 | 成人一区电影 | 久久99精品热在线观看 | 99色免费| 天天爱天天射天天干天天 | 亚洲国产999 | 国产视频一区精品 | 欧美一区二区三区四区夜夜大片 | 久艹视频在线免费观看 | 五月天婷婷在线观看视频 | 日韩一区在线播放 | 久久久久亚洲最大xxxx | 91人人澡人人爽 | 欧美色精品天天在线观看视频 | 欧美性性网 | 69精品在线观看 | 五月婷婷久久综合 | 国产精品久久久久av免费 | 国产麻豆剧传媒免费观看 | 国产又粗又猛又色又黄网站 | 成人免费在线播放视频 | 一级性视频| 国产丝袜高跟 | 久久综合欧美精品亚洲一区 | 天天操天天操天天 | 中文字幕国语官网在线视频 | 2019中文| 久久久免费看片 | 国产精品亚 | 久草精品国产 | 日韩美女免费线视频 | 色婷婷在线观看视频 | 欧美二区视频 | 激情网第四色 | 天天操天天玩 | 亚洲激情一区二区三区 | 国产裸体永久免费视频网站 | 久久一区国产 | 日韩av免费在线电影 | 久操视频在线观看 | 91丨九色丨蝌蚪丨对白 | 午夜10000 | 成人欧美亚洲 | 91片黄在线观 | 美女黄濒 | 国产免费叼嘿网站免费 | 色综合久久久网 | 亚洲 欧美 变态 国产 另类 | 96久久欧美麻豆网站 | 天天色天天射天天操 | 91亚洲激情 | 国产99视频在线观看 | bbbbb女女女女女bbbbb国产 | 香蕉影视在线观看 | 国产成人免费观看久久久 | 久久夜色精品国产欧美一区麻豆 | 最新国产在线 | 色黄www小说 | 国产精品毛片一区视频播不卡 | 成人小视频在线观看免费 | 久草资源在线观看 | 久久精品福利 | 久草免费福利在线观看 | 久久1区 | 顶级欧美色妇4khd | 精品久久久久久亚洲 | 中文字幕一二三区 | 国产一区欧美一区 | 永久免费的啪啪网站免费观看浪潮 | 2022久久国产露脸精品国产 | 天天综合色天天综合 | 国产又粗又猛又黄又爽 | 国产精品综合久久久 | www.午夜| 超碰97国产精品人人cao | 久久精品国产亚洲aⅴ | 成人av在线网 | 综合网av| 国产中文字幕一区 | 国产精品一区在线观看 | 日韩欧美在线影院 | 欧美91精品久久久久国产性生爱 | 91毛片在线 | 久久视频这里有精品 | 黄色亚洲精品 | 91亚洲国产 | 色综合www | 免费观看mv大片高清 | 国产精品99久久久久人中文网介绍 | 91桃色免费观看 | 国产精品成人自拍 | 天天舔天天搞 | 日本黄色免费在线 | 青草视频网 | 亚洲 成人 一区 | 亚洲精品国产高清 | 97人人澡人人添人人爽超碰 | 99这里有精品 | 最近中文字幕高清字幕免费mv | 国产高清视频在线观看 | 精品a视频 | 狠狠ri | 中文字幕在线观看不卡 | 婷婷丁香视频 | 午夜视频在线瓜伦 | 99综合电影在线视频 | 日日夜夜天天干 | 亚洲一区尤物 | 精品欧美日韩 | 国产香蕉97碰碰碰视频在线观看 | 久久久久色 | 国产日韩在线视频 | 日韩综合一区二区 | 日一日操一操 | 天天干 天天摸 天天操 | 91在线一区二区 | 亚洲成人黄色在线观看 | 婷婷四房综合激情五月 | 91福利影院在线观看 | 国产精品中文 | 亚洲最大av网站 | 成年人网站免费在线观看 | 日韩精品视频第一页 | 久久av网址 | 天天射天天干天天插 | 国产高清中文字幕 | 插插插色综合 | 99欧美视频 | 91三级视频 | 欧美老少交 | 狠狠躁日日躁狂躁夜夜躁av | 99看视频在线观看 | 日韩美女免费线视频 | 18国产精品白浆在线观看免费 | 日本黄色免费大片 | 国产成人精品福利 | 亚洲精品视频在线播放 |