Python 內(nèi)置函數(shù)筆記

https://www.cnblogs.com/yuxuanlian/p/10289190.html


import math

# abs() 絕對值
print(abs(-1.2))
print(abs(3+2j)) #若參數(shù)為復(fù)數(shù),則返回復(fù)數(shù)的模礁遣,就是 (a平方+b平方) 開根斑芜。
print(math.sqrt(3**2+2**2))


'''
all()
如果iterable的所有元素不為0、''祟霍、False或者iterable為空杏头,all(iterable)返回True,否則返回False沸呐;
注意:空元組醇王、空列表返回值為True,這里要特別注意崭添。
'''
print(all(['a','b','c','']))   #列表存在一個為空的元素寓娩,返回False
print(all(['a','b','c','d']))  #列表都有元素,返回True
print(all([0,1,2,3,4,5,6]))    #列表里存在為0的元素 返回False

print(all(('a','b','c','')))   #元組存在一個為空的元素滥朱,返回Fasle
print(all(('a','b','c','d')))  #元組都有元素根暑,返回True
print(all((0,1,2,3,4,5)))      #元組存在一個為0的元素,返回Fasle

print(all([]))  #空列表返回 True
print(all(()))  #空元組返回 True


'''
any()
如果都為空徙邻、0排嫌、false,則返回false缰犁,如果不都為空淳地、0、false帅容,則返回true颇象。
'''
print(any(['a','b','c','']))   #列表存在一個為空的元素,返回True
print(any(['a','b','c','d']))  #列表都不為空并徘,返回True
print(any([0,'',False]))       #列表里的元素全為  0,'',False  返回False

print(any(('a','b','c','')))   #元組存在一個為空的元素遣钳,返回True
print(any(('a','b','c','d')))  #元組都有元素,返回True
print(any((0,'',False)))       #元組里的元素全為  0,'',False  返回False

print(any([]))  #空列表返回 False
print(any(()))  #空元組返回 False


#返回字符串
print(ascii('tianna天吶'))


'''
bin()
將一個整數(shù)轉(zhuǎn)化為一個二進制整數(shù)麦乞,并以字符串的類型返回蕴茴。
'''
print(bin(-120))        #輸出-12的二進制 -0b1111000
print(type(bin(12)))    #輸出bin(12) 的類型 <class 'str'> 所以不能直接計算

print(int(bin(10),base=2)+int(bin(20),base=2))  #輸出 30
#base 參數(shù)不可為空 為空默認參數(shù)為10進制 會報錯 ValueError: invalid literal for int() with base 10: '0b1010'

#當然了,參數(shù)不僅可以接受十進制整數(shù)姐直,八進制倦淀、十六進制也是可以的,只要是int型數(shù)據(jù)就合法声畏。
print(bin(0b10010))    #輸出0b10010
print(bin(0o1357))     #輸出0b1011101111
print(bin(0x2d9))      #輸出0b1011011001


print(bool(0))         #返回False
print(bool(False))     #返回False
print(bool(''))        #返回False


print(bytes('wo','ascii')) 
print(bytes('我','utf-8')) 
print(bytes('我',encoding='utf-8')) 

print(chr(8364))  #查看十進制數(shù)對應(yīng)的ASCII碼值


'''
callable()  判斷對象是否可以被調(diào)用撞叽,
'''
print(callable(max))       #輸出True
print(callable([1,2,3]))   #輸出Fasle
print(callable(None))      #輸出Fasle
print(callable('str'))     #輸出Fasle

def fn(x):
    return x*x
print(callable(fn))        #輸出True  證明自定義的函數(shù)也可以


'''
@classmethod
classmethod 修飾符對應(yīng)的函數(shù)不需要實例化,不需要 self 參數(shù),
但第一個參數(shù)需要是表示自身類的 cls 參數(shù)愿棋,可以來調(diào)用類的屬性科展,類的方法,實例化對象等初斑。
'''
class Stud:
    num=1
    def fn1(self):      #這個self不能缺
        print('方法一')
    @classmethod
    def fn2(cls):
        print('方法二')   #輸出 方法二
        print(cls.num)    #調(diào)用類的實例化對象
        cls().fn1()       #調(diào)用類的方法

Stud.fn2()    #輸出 方法二 不需要實例化——沒有傳參數(shù)哦

print('===='*10)
object=Stud()
object.fn1()  #輸出 方法一 需要實例化


'''
@staticmethod
靜態(tài)方法無需實例化
'''
class C():
    @staticmethod
    def f():
        print('hello world')
C.f()               # 靜態(tài)方法無需實例化
cobj = C()
cobj.f()            # 也可以實例化后調(diào)用



#complie()  將字符串編譯成python能識別或可以執(zhí)行的代碼辛润,也可以將文字讀成字符串再編譯
s="print('hello world')"
r=compile(s,'hello','exec')   #exec也可換成eval來計算
print(r)
r=compile(s,'iii','exec')
print(r)


#eval()  執(zhí)行計算
x=7
print(eval('3*x'))        #返回 21

#eval函數(shù)還可以實現(xiàn)list膨处、dict见秤、tuple與str之間的轉(zhuǎn)化

#1.字符串轉(zhuǎn)換成列表
a = "[[1,2], [3,4], [5,6], [7,8], [9,0]]"
print(type(a))         #返回  <class 'str'>
b = eval(a)
print(type(b))         #返回  <class 'list'>
print(b)               #輸出  [[1, 2], [3, 4], [5, 6], [7, 8], [9, 0]]


'''
函數(shù)的作用:
動態(tài)執(zhí)行python代碼。也就是說exec可以執(zhí)行復(fù)雜的python代碼真椿,而不像eval函數(shù)那樣只能計算一個表達式的值鹃答。
exec(source, globals=None, locals=None, /)
source:必選參數(shù),表示需要被指定的python代碼突硝。它必須是字符串或code對象测摔。如果source是一個字符串,該字符串會先被解析為一組python語句解恰,然后執(zhí)行锋八。如果source是一個code對象,那么它只是被簡單的執(zhí)行护盈。
返回值:
exec函數(shù)的返回值永遠為None挟纱。

eval()函數(shù)和exec()函數(shù)的區(qū)別:
eval()函數(shù)只能計算單個表達式的值,而exec()函數(shù)可以動態(tài)運行代碼段腐宋。
eval()函數(shù)可以有返回值紊服,而exec()函數(shù)返回值永遠為None。
'''

x = 10
def func():
    y = 20
    a = exec("x+y")
    print("a:",a)         #輸出  a: None胸竞,exec()函數(shù)返回值永遠為None欺嗤。
    b = exec("x+y",{"x":1,"y":2})
    print("b:",b)         #輸出  b: None,exec()函數(shù)返回值永遠為None卫枝。
func()

x = 10
expr = """
z = 30
sum = x + y + z   #一大包代碼
print(sum)
"""
def func():
    y = 20
    exec(expr)   #10+20+30       輸出60
    exec(expr,{'x':1,'y':2}) #30+1+2         輸出 33
    exec(expr,{'x':1,'y':2},{'y':3,'z':4}) #30+1+3煎饼,x是全局變量更新為1,y是局部變量更新為3  輸出34

func()



#dict()
dict2=dict(zip(['one', 'two', 'three'], [1, 2, 3]))   # 映射函數(shù)方式來構(gòu)造字典
print(dict2)    #輸出 {'one': 1, 'two': 2, 'three': 3}

dict3=dict([('one', 1), ('two', 2), ('three', 3)])    # 可迭代對象方式來構(gòu)造字典
print(dict3)     #輸出 {'one': 1, 'two': 2, 'three': 3}


'''
python divmod() 函數(shù)把除數(shù)和余數(shù)運算結(jié)果結(jié)合起來校赤,返回一個包含商和余數(shù)的元組(a // b, a % b)吆玖。
'''
print(divmod(7,2))    #返回  (3, 1)
# print(divmod(1+2j,1+0.5j))
#報錯 TypeError: can't take floor or mod of complex number.


'''
enumerate是翻譯過來是枚舉的意思,看下它的方法原型:
enumerate(sequence, start=0)痒谴,返回一個枚舉對象衰伯。
sequence必須是序列或迭代器iterator,或者支持迭代的對象积蔚。
enumerate()返回對象的每個元素都是一個元組意鲸,
每個元組包括兩個值,一個是計數(shù),一個是sequence的值怎顾,
計數(shù)是從start開始的读慎,start默認為0。
---------------------
'''
a=["q","w","e","r"]
c=enumerate(a)
for i in c:
    print(i)

'''
輸出如下:
(0, 'q')
(1, 'w')
(2, 'e')
(3, 'r')
'''

a=["w","a","s","d"]
#這里加了個參數(shù)2槐雾,代表的是start的值
c=enumerate(a,2)
for i in c:
    print(i)
'''
輸出如下:
(2, 'w')
(3, 'a')
(4, 's')
(5, 'd')
'''

a=["q","w","e","r"]
#創(chuàng)建一個空字典
b=dict()
#這里i表示的是索引夭委,item表示的是它的值
for i,item in enumerate(a):
    b[i]=item
print(b)   #輸出 {0: 'q', 1: 'w', 2: 'e', 3: 'r'}

for i,j in enumerate('abc'):
    print(i,j)
#輸出結(jié)果
# 0 a
# 1 b
# 2 c



'''
filter() 函數(shù)是一個對于可迭代對象的過濾器,過濾掉不符合條件的元素募强,
返回的是一個迭代器株灸,如果要轉(zhuǎn)換為列表,可以使用 list() 來轉(zhuǎn)換擎值。
該函數(shù)接收兩個參數(shù)慌烧,第一個為函數(shù)的引用或者None,第二個為可迭代對象鸠儿,
可迭代對象中的每個元素作為參數(shù)傳遞給函數(shù)進行判屹蚊,然后返回 True 或 False,最后將返回 True 的元素放到迭代器中
下面看下fiter()的用法:
'''

my_list=[1,2,'',3,4,'6',' ']
new_list=list(filter(None,my_list))
print(new_list)
#None 函數(shù) 過濾掉'' 而不是過濾掉空字符串

def is_oushu(x):
    return x%2==0
new_list=list(filter(is_oushu,list(range(1,11))))
print(new_list)
#過濾掉不是偶數(shù)的數(shù)

a=[1,2,3,4,5,6,2,2,2,]
print(list(filter(lambda x:x!=2,a)))
#篩選出列表里所有的不是 2  的元素

from functools import reduce
foo=[2, 18, 9, 22, 17, 24, 8, 12, 27]
print(list(filter(lambda x:x%3==0,foo))) #篩選x%3==0 的元素
print(list(map(lambda x:x*2+10,foo)))    #遍歷foo 每個元素乘2+10 再輸出
print(reduce(lambda x,y:x+y,foo))        #返回每個元素相加的和



'''
自python2.6開始,新增了一種格式化字符串的函數(shù)str.format(),此函數(shù)可以快速處理各種字符串栖茉。
語法
它通過{}和:來代替%抄罕。
請看下面的示例,基本上總結(jié)了format函數(shù)在python的中所有用法
'''
#通過位置
print ('{0},{1}'.format('chuhao',20))
#chuhao,20
print ('{},{}'.format('chuhao',20))
#chuhao,20
print ('{1},{0},{1}'.format('chuhao',20))
#20,chuhao,20
#通過關(guān)鍵字參數(shù)
print ('{name},{age}'.format(age=18,name='chuhao'))
#chuhao,18
class Person:
    def __init__(self,name,age):
        self.name = name
        self.age = age

    def __str__(self):
        return 'This guy is {self.name},is {self.age} old'.format(self=self)

print (str(Person('chuhao',18)))       #This guy is chuhao,is 18 old

#通過映射 list
a_list = ['chuhao',20,'china']
print ('my name is {0[0]},from {0[2]},age is {0[1]}'.format(a_list))
#my name is chuhao,from china,age is 20

#通過映射 dict
b_dict = {'name':'chuhao','age':20,'province':'shanxi'}
print ('my name is {name}, age is {age},from {province}'.format(**b_dict))
#my name is chuhao, age is 20,from shanxi

#填充與對齊
print ('{:>8}'.format('189'))
#     189
print ('{:0>8}'.format('189'))
#00000189
print ('{:a>8}'.format('189'))
#aaaaa189

#精度與類型f
#保留兩位小數(shù)
print ('{:.2f}'.format(321.33345))
#321.33

#用來做金額的千位分隔符
print ('{:,}'.format(1234567890))
#1,234,567,890

#其他類型 主要就是進制了,b、d、o遭京、x分別是二進制、十進制泞莉、八進制哪雕、十六進制。
print ('{:b}'.format(18)) #二進制 10010
print ('{:d}'.format(18)) #十進制 18
print ('{:o}'.format(18)) #八進制 22
print ('{:x}'.format(18)) #十六進制12


# frozenset() 返回一個凍結(jié)的集合鲫趁,凍結(jié)后集合不能再添加或刪除任何元素斯嚎。
a=frozenset(range(10))
print(a)
#輸出  frozenset({0, 1, 2, 3, 4, 5, 6, 7, 8, 9})
b=frozenset('ltftyut1234')
print(b)
#輸出  frozenset({'2', '4', 't', 'f', '1', '3', 'l', 'y', 'u'}) 亂序哦


#getattr() 得到對象屬性
class People():
    sex='男'
    def __init__(self,name):
        self.name=name
    def peopleinfo(self):
        print('歡迎%s訪問'%self.name)

obj=getattr(People,'sex')
print(obj)       #返回值  男



# globals() 函數(shù)會以字典類型返回當前位置的全部全局變量。
def hello():
    print("Hello")

def zero_promo():
    return 22

def one_promo():
    return 1

def two_promo():
    return 2

if __name__ == '__main__':
    promos = [name for name in globals()if name.endswith("_promo")]
    print(promos)   #輸出 ['zero_promo', 'one_promo', 'two_promo']

    promos = [globals()[name] for name in globals() if name.endswith("_promo")]
    print(promos[0]())    #輸出 22  調(diào)用了第一個函數(shù)zero_promo()


#hash()
print(hash('test'))      #輸出 -2950866779904704330   會改變的
print(hash('test'))      #輸出 -2950866779904704330   根上面一樣挨厚,因為內(nèi)存地址一樣
print(hash(1))              #數(shù)字  輸出 1
print(hash(str([1,2,3])))      # 集合   輸出 -6217131644886971364   會改變的
print(hash(str(sorted({'1':1})))) # 字典   輸出 -6233802074491902648    會改變的
'''
hash() 函數(shù)可以應(yīng)用于數(shù)字堡僻、字符串和對象,不能直接應(yīng)用于 list疫剃、set钉疫、dictionary。
在 hash() 對對象使用時巢价,所得的結(jié)果不僅和對象的內(nèi)容有關(guān)牲阁,還和對象的 id()固阁,也就是內(nèi)存地址有關(guān)。
'''


lst = [1,2,3,4,5,6,7]
for i in iter(lst):
    print(i)      #輸出1,2,3,4,5,6,7

lst = [1,2,3,4,5,6,7]
for i in lst:
    print(i)      #輸出1,2,3,4,5,6,7


# map() 把列表里每一個元素都搞一遍城菊,返回一個新list
def format_name(s):
    s1=s[0:1].upper()+s[1:].lower()
    return s1
names=['adam', 'LISA', 'barT']
print (map(format_name, names))  #python2 這樣寫可以直接輸出列表,python3 是<map object at 0x10d9300d0>
for i in map(format_name,names):
    print(i)                      #python3 得這樣寫才可以


# max()
#傳入命名參數(shù)key备燃,其為一個函數(shù),用來指定取最大值的方法
s = [
    {'name': 'sumcet', 'age': 18},
    {'name': 'bbu', 'age': 11}
]
a = max(s, key=lambda x: x['age'])
print(a)        #輸出 {'name': 'sumcet', 'age': 18}


#round() 四舍五入
print (round(80.264, 2))   #80.26


# set 無序無重復(fù)集合
se = {11, 22, 33}
be = {22, 55}
temp1 = se.difference(be)        #找到se中存在凌唬,be中不存在的集合并齐,返回新值
print(temp1)        #{33, 11}
print(se)        #{33, 11, 22}

temp2 = se.difference_update(be) #找到se中存在,be中不存在的集合客税,覆蓋掉se
print(temp2)        #None
print(se)           #{33, 11},

#4.判斷
se = {11, 22, 33}
be = {22}

print(se.isdisjoint(be))        #False况褪,判斷是否不存在交集(有交集False,無交集True)
print(se.issubset(be))          #False霎挟,判斷se是否是be的子集合
print(se.issuperset(be))        #True窝剖,判斷se是否是be的父集合


se = {11, 22, 33}
be = {22,44,55,'2'}

se.update(be)  # 把se和be合并,得出的值覆蓋se
print(se)
se.update([66, 77])  # 可增加迭代項
print(se)


#sorted
#要進行反向排序酥夭,也通過傳入第三個參數(shù) reverse=True:
example_list = [5, 0, 6, 1, 2, 7, 3, 4]
result_list=sorted(example_list, reverse=True)
print(result_list)                   #輸出 [7, 6, 5, 4, 3, 2, 1, 0]

#另一個區(qū)別在于list.sort() 方法只為 list 定義。而 sorted() 函數(shù)可以接收任何的 iterable脊奋。
print(sorted({1: 'D', 2: 'B', 3: 'B', 4: 'E', 5: 'A'}))      #輸出  [1, 2, 3, 4, 5]

#sorted 的應(yīng)用熬北,也可以通過 key 的值來進行數(shù)組/字典的排序,比如
array = [{"age":20,"name":"a"},{"age":25,"name":"b"},{"age":10,"name":"c"}]
array = sorted(array,key=lambda x:x["age"])
print(array)    #[{'age': 10, 'name': 'c'}, {'age': 20, 'name': 'a'}, {'age': 25, 'name': 'b'}]


#str()
print(str(1))             #輸出  字符串1
print(type(str(1)))       #輸出  <class 'str'>
print(str(b'\xe5\xbc\xa0\xe4\xb8\x89',encoding='utf-8'))  #輸出張三

dict={'zhangsan':'zhang1234','lisi':'li1234'}
print(type(dict))         #輸出  <class 'dict'>
a=str(dict)
print(str(dict))          #輸出  字符串 {'zhangsan': 'zhang1234', 'lisi': 'li1234'}
print(type(a))            #輸出  <class 'str'>


#sum()
print(sum((2,3,4),1))            # 元組計算總和后再加 1


#zip()
#zip函數(shù)接受任意多個可迭代對象作為參數(shù),將對象中對應(yīng)的元素打包成一個tuple,然后返回一個可迭代的zip對象.
#這個可迭代對象可以使用循環(huán)的方式列出其元素
#若多個可迭代對象的長度不一致,則所返回的列表與長度最短的可迭代對象相同.

#1.用列表生成zip對象
x=[1,2,3]
y=[4,5,6]
z=[7,8,9]
h=['a','b','c','d']
zip1=zip(x,y,z)     # zip每個元素依次讀一個诚隙,相當于行列轉(zhuǎn)換x讶隐、y、z生成的矩陣
print(zip1)         #<zip object at 0x107d6c0f0>
for i in zip1:
    print(i)
'''
行列轉(zhuǎn)換了
(1, 4, 7)
(2, 5, 8)
(3, 6, 9)
'''

zip3=zip(h)
for i in zip3:
    print(i)
'''
('a',)
('b',)
('c',)
('d',)
'''

zip4=zip(*h*3)        # *h把zip(h)行列轉(zhuǎn)換久又,h是一元所以只有一行巫延,再*3
for i in zip4:
    print(i)
'''
('a', 'b', 'c', 'd', 'a', 'b', 'c', 'd', 'a', 'b', 'c', 'd')
'''

print('==*=='*10)

#2.二維矩陣變換
l1=[[1,2,3],[4,5,6],[7,8,9]]
print(l1)
print([[j[i] for j in l1] for i in range(len(l1[0])) ])     # 行列轉(zhuǎn)換 [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

zip5=zip(*l1)       # 直接行列轉(zhuǎn)換
for i in zip5:
    print(i)
'''
(1, 4, 7)
(2, 5, 8)
(3, 6, 9)
'''
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市地消,隨后出現(xiàn)的幾起案子炉峰,更是在濱河造成了極大的恐慌,老刑警劉巖脉执,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件疼阔,死亡現(xiàn)場離奇詭異,居然都是意外死亡半夷,警方通過查閱死者的電腦和手機婆廊,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來巫橄,“玉大人淘邻,你說我怎么就攤上這事∠婊唬” “怎么了宾舅?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵敬尺,是天一觀的道長。 經(jīng)常有香客問我贴浙,道長砂吞,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任崎溃,我火速辦了婚禮蜻直,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘袁串。我一直安慰自己概而,他們只是感情好,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布囱修。 她就那樣靜靜地躺著赎瑰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪破镰。 梳的紋絲不亂的頭發(fā)上餐曼,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天,我揣著相機與錄音鲜漩,去河邊找鬼源譬。 笑死,一個胖子當著我的面吹牛孕似,可吹牛的內(nèi)容都是我干的踩娘。 我是一名探鬼主播,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼喉祭,長吁一口氣:“原來是場噩夢啊……” “哼养渴!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起泛烙,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤理卑,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后胶惰,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體傻工,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年孵滞,在試婚紗的時候發(fā)現(xiàn)自己被綠了中捆。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡坊饶,死狀恐怖泄伪,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情匿级,我是刑警寧澤蟋滴,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布染厅,位于F島的核電站,受9級特大地震影響津函,放射性物質(zhì)發(fā)生泄漏肖粮。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一尔苦、第九天 我趴在偏房一處隱蔽的房頂上張望涩馆。 院中可真熱鬧,春花似錦允坚、人聲如沸魂那。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽涯雅。三九已至,卻和暖如春展运,著一層夾襖步出監(jiān)牢的瞬間活逆,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工乐疆, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留划乖,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓挤土,卻偏偏與公主長得像,于是被迫代替她去往敵國和親误算。 傳聞我的和親對象是個殘疾皇子仰美,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

推薦閱讀更多精彩內(nèi)容