個人Python筆記

Python筆記

--HANL
都是個人的一些總結,發(fā)到這里記錄一下鸳碧,嘿嘿报强!


python不允許if語句中賦值

比較運算符優(yōu)先邏輯運算符

Python的關鍵要素

  • 基本數(shù)據(jù)類型
  • 對象引用
  • 組合數(shù)據(jù)類型
  • 邏輯操作符
  • 控制流程語句
  • 算數(shù)操作符
  • 函數(shù)的創(chuàng)建與調(diào)用

如何獲取使用幫助

HELP:
    想獲取某一對象支持使用的屬性和方法:dir()
    某方法的具體使用幫助:help()
    獲取可調(diào)用的對象的文檔字串:print obj.__doc__

變量名命名規(guī)則:

命名慣例:
    以單一下劃線開頭變量名(_x)不會被from module import *語句導入
    前后有下劃線的變量名(__x__)是系統(tǒng)定義的變量名,對python解釋器有特殊意義
    以兩個下劃線開頭但結尾沒有下劃線的變量名(__x)是類的本地變量
    交互模式下爬虱,"_"用于保存最后表達式的結果

    >>> 1+1
    2
    >>> print _
    2

    注意:變量名沒有類型隶债,對象才有

組合類型

序列類型
  列表是可變序列,元組是不可變序列
    列表:使用[]定義  ["This","is","a","pig"]
    可變對象跑筝,原處可變死讹,
    元表:使用()定義  ("This,"is")
    不可變對象
    字符串也屬于序列

邏輯運算

身份操作符
    is:判斷左端的對象引用是否相同于右端對象引用;也可以與None進行
    In [16]: n = "jerry"
    In [19]: y = "jerry"
    In [20]: n is y
    Out[20]: True
成員操作符
    in或not in:測試成員關系

函數(shù)的創(chuàng)建與定義

使用def語句定義函數(shù)
def functionName(arguments):
    suite
ps:
def printName(name):
    print name
調(diào)用:
>>>printName('Jerry')
Jerry
callable() 可用于測試函數(shù)是否可以調(diào)用
每個python函數(shù)都有一個返回值曲梗,默認為None赞警,也可以使用“return value”明確定義返回值
def語句會創(chuàng)建一個函數(shù)對象,并同時創(chuàng)建一個指向函數(shù)的對象引用

內(nèi)置函數(shù)

dir(__builtin__) 查看內(nèi)置函數(shù)
dir(),id(),type(),str(),help()

Python編程基礎與編程風格

1.語句和語法
    #:注釋虏两,可從一行的多個地方開始
    \:續(xù)行
    ''': 也可做續(xù)行愧旦, 閉合操作符,單一語句跨行定罢,多行注釋
    同一行放置多個語句笤虫,使用分號作為分割符

2.模塊
    每一個Python腳本文件都可以被當成是一個模塊;
    模塊里的代碼可以是一段直接智行的腳本引颈,也可以是一些類似庫函數(shù)的代碼從而可以由別的模塊執(zhí)行導入(import)耕皮。

3.標識符
    標識符是計算機語言中允許作為名字的有效集合

4.編程風格
    注釋:既不能缺少注釋,亦要避免過度注釋
    文檔:Python允許通過__doc__動態(tài)獲得文檔子串
    標識符:要做到見名知義蝙场,英文全拼

5.命名慣例
    以單一下劃線開頭變量名(_x)不會被from module import *語句導入
    前后有下劃線的變量名(__x__)是系統(tǒng)定義的變量名凌停,對python解釋器有特殊意義
    以兩個下劃線開頭但結尾沒有下劃線的變量名(__x)是類的本地變量
    交互模式下,"_"用于保存最后表達式的結果

文件結構

文件結構

Python文件主程序

主程序
    無論當前模塊是被別人的模塊導入還是作為腳本直接執(zhí)行售滤,都會智行這部分代碼
注意:所有的模塊都有能執(zhí)行代碼
    最高級別的Python語句(沒有縮進的)在模塊被導入時候就會執(zhí)行罚拟,無論是否需要真的需要執(zhí)行

    妥當?shù)淖龇ǎ撼四切┱嬲枰獔?zhí)行的代碼以外台诗,所有的功能代碼都通過函數(shù)建立,因此
        僅在主程序模塊中編寫大量的頂級執(zhí)行代碼
        用于被導入的模塊只應該存在較少的頂級執(zhí)行代碼
__name__指示模塊應該如何被加載
每個模塊都有一個名為__name__的內(nèi)建變量赐俗,此變量值會根據(jù)調(diào)用此模塊的方式發(fā)生變化:
    如果模塊是被導入拉队,__name__的值是模塊的名字
    如果模塊是直接執(zhí)行,__name__的值是'__main__'

Python對象特性阻逮、比較及核心數(shù)據(jù)類型

Python對象的相關術語

Python程序中保存的所有數(shù)據(jù)都是圍繞對象這個概念展開的

  • 程序中存儲的所有數(shù)據(jù)都是對象

  • 每個對象都有一個身份粱快、一個類型和一個值

  • 對象的類型也稱對象的類別,用于描述對象的內(nèi)部表示及他支持的方法的操作

  • 創(chuàng)建特定的類型的對象時叔扼,有時也將該對象稱為該類型的實例

      class:自定義類型
      type:
      instance:實例化
    
  • 實例被創(chuàng)建后事哭,其身份和類型就不可改變

      如果對象值是可以修改的,則稱為可變對象
      如果對象的值不可修改瓜富,則稱為不可變對象
    
  • 如果某個對象包含對其它對象的引用鳍咱,則將其稱為容器

  • 大多數(shù)對象都擁有大量的特有的數(shù)據(jù)屬性和方法

      屬性:與對象相關的值
      方法:被調(diào)用時將在對象上執(zhí)行某些操作的函數(shù)
      使用點 . 運算符可以訪問屬性和方法
      /**
      類:數(shù)據(jù)和方法
          數(shù)據(jù):變量
          方法:函數(shù)
      類:實例化成對象
          CA:
              IA:
              IB:
      **/
    

對象的身份與類型

Python內(nèi)置函數(shù)id()可返回一個對象的身份,即該對象在內(nèi)存中的位置

    is運算符用于比較兩個對象的身份
        兩個對象的比較:
            1与柑、值比較:對象中的數(shù)據(jù)是否相同谤辜;
            2、身份比較:兩個變量名引用的是否為同一對象价捧;
            3丑念、類型比較:兩個對象的類型是否相同
            
    type()用于返回一個對象的類型
    對象類型本身也是一個對象,稱為對象的類
        該對象的定義是唯一的结蟋,且對于某些類型的所有實例都是相同的
        所有類型對象都有一個指定的名稱渠欺,可用于執(zhí)行類型檢查,如list椎眯、dict
if a is b:
    statements

if a == b:
    statemens

if type(a) is type(b):
    statemens

Python核心數(shù)據(jù)類型

數(shù)字:int,long胳岂,float编整,complex,bool
字符:str乳丰,unicode
列表:list
字典:dict
元組:tuple
文件:file
其它類型:集合(set)掌测,frozenset,類類型产园,None

其它文件類工具:pipes汞斧,fifos,sockets

類型裝換:
    str(),repr()或format():將非字符類型數(shù)據(jù)轉換為字符什燕;
    int():轉換為整數(shù)粘勒;
    float():轉換為浮點型;
    list(str):把str轉換為列表屎即;
    tuple(s):將s轉換為元表庙睡;
    set(s):將字符串s裝換為集合事富;
    frozenset(s):將字符串s轉換為不可變集合;
    dict(d):創(chuàng)建字典乘陪;其d必須是(key,value)的元組序列统台;
    chr(x):將證書轉換為字符;
    ord(x):將字符裝換為整數(shù)值啡邑;
    hex(x):將字符裝換為16進制贱勃;
    bin(x):2進制;
    oct(x):8進制谤逼;

數(shù)字類型:
    Python的數(shù)字字面量:布爾型贵扰,整數(shù),浮點型森缠,負數(shù)拔鹰;
    True:1
    False:0
數(shù)字類型操作
數(shù)字類型操作
序列類型:
    字符類型:
        字符串字面量:把文本放入單引號、雙引號贵涵、或三引號中列肢;

如果要使用ubicode編碼,則在字符之前使用字符u進行表示
str無法支持國際字符集宾茂,如果想要支持瓷马,需要str = u"hello world"

    文檔字符串:(函數(shù)注釋)
        模塊、類或函數(shù)的第一條語句是一個字符的話跨晴,
        該字符串就成為文檔字符串欧聘,可以使用__doc__屬性引用;
    
    運算符:
        索引運算:[i]
        切片運算:[i:j]
        擴展切片:[i:j:stride]
序列字符串操作
序列操作

不可變序列操作

字符串操作
    支持運算:索引端盆、切片怀骤、min()、max()焕妙、len()等
    支持操作:對象的自有方法

    列表:
        容器類型
            任意對象的有序集合蒋伦,通過索引訪問其中的元素,可變對象焚鹊,
            異構痕届,任意嵌套
        支持在原處修改:
            1.修改指定的索引元素,
            2.或修改指定分片末患,
            3.刪除語句研叫,
            4.內(nèi)置方法。 
        l1 + l2:合并兩個列表璧针,返回一個新的列表嚷炉;不會修改原列表
        l1 * N:把l1重復N次,返回一個新列表陈莽;
        
        in:成員關系判斷字符渤昌,用法 item in container
        not in:obj not in container
    
        列表解析:[]

        列表復制方式:
            l1 = [1,2,3,4]
            l2 = l1
            
            import copy
            l2 = copy.deepcopy(11)

            l2 = l1[1:]
            
    元組:
        表達式符號:()
        
        容器類型
            任意對象的有序集合虽抄,通過索引訪問其中的元素,不可變對象独柑,長度固定
            異構迈窟,嵌套
        
        常見操作:
            定義空元素:t1 = ()
            定義多元素:(1,2),(1,)

            t1 + t2:
            t1 * N:

            in:  成員關系判斷
            not in: 
            
            雖然元組不可改變,但如果元組內(nèi)嵌套了可變類型的元素忌栅,那么此類元素的修改不會返回新元組车酣;

    字典:dict
        “靈活的內(nèi)置數(shù)據(jù)結構,無序集合索绪,鍵值組合(映射)湖员,類似關聯(lián)數(shù)組,在字典中索引速度非橙鹎快”

        字典在其它編程語言中有稱作關聯(lián)數(shù)組或散列表:

        通過鍵實現(xiàn)元素存饶锼ぁ;
        無序集合唤反;
        可變類型容器凳寺;
        長度可變;
        支持異構彤侍,嵌套肠缨;
        
        {key1:value1,key2:value2,}
        
        {} :空字典
        {'x':32,'y':[1,2,3]}

        字典復制:d2=d1.copy()
        
        d1.iteritems()  返回一個迭代器對象
    
        >>> dict(zip('zxc','123'))
        >>> {'c': '3', 'x': '2', 'z': '1'}


    類:數(shù)據(jù)+方法
        實例:
        3 + 5
        3.__add__(5)
    
    列表和字典:

    變量名在一個位置,對象在一個位置盏阶,變量名是指向對象的引用
    變量名沒有類型晒奕,對象才有類型,

    點號運算符:
        屬性:數(shù)據(jù)
            返回一個數(shù)據(jù)名斟,顯示則要使用print語句
        方法:操作  ()
            調(diào)用:執(zhí)行一段代碼脑慧,代碼就是函數(shù)對象或者方法對象內(nèi)部的一段代碼
                
    可調(diào)用對象:callable()  函數(shù),類砰盐,方法
    
    定義:
        字串:'',"",''' ''',""" """,
        列表:[]
        元組:()
        字典:{}
        數(shù)值:

    HELP:
        想獲取某一對象支持使用的屬性和方法:dir()
        某方法的具體使用幫助:help()
        獲取可調(diào)用的對象的文檔字串:print obj.__doc__
集合類型詳解
集合:一組無序排列的可哈希的值:
    支持集合關系測試
    成員關系測試:
        in 
        not in
        迭代
    不支持:索引漾橙、元素獲取、切片

集合的類型:set(),frozenset()

沒有特定的語法格式楞卡,只能通過工廠函數(shù)創(chuàng)建
集合類型的方法和操作
容器、類型脾歇、對象 特性總結
1.列表元素和字典字面量蒋腮,可以在不使用續(xù)行符的情況下,直接寫在多行上藕各,最后一個元素后面可以使用逗號池摧,空元素不能使用逗號;

2.所有對象都有引用計數(shù)激况,將某對象放進一個新容器中作彤,引用對象會增加膘魄,使用del語句使用刪除操作或某次引用的修改超出當前對象的作用域時,對象的計數(shù)會減少竭讳,sys.getrefcount(s) 檢測引用計數(shù)创葡;

3.列表和字典都支持兩種復制操作,淺復制绢慢、深復制灿渴,深復制可使用copy模塊中的deepcopy()實現(xiàn);

4.Python中的所有對象都是“第一類”胰舆,這意味著使用標識符命名的所有對象都具有相同狀態(tài)骚露,于是,能夠命名的對象都可以直接當數(shù)據(jù)進行處理

5.所有序列都支持迭代缚窿,

6.所有序列都支持的操作和方法:
    s[i]
    s[i:j]
    s[i:j:stride]
    len(s)
    min(s)
    max(s)
    sum(s)
    all(s)
    any(s)
    s1 + s2:連接
    s1 * N :重復
    obj in s1 :成員關系判斷
    obj not in s1:

7.可變序列操作:
    s1[index] = value :元素賦值
    s1[i:j] = t :切片賦值
    del s1[index]
    del s1[i:j]
    del s1[i:j:stride]

Python的表達式和語句:

表達式叫某事棘幸,語句叫做某事

表達式:

語句:

Python中常用的表達式操作符:
    
    x + y,x - y 
    x * y,x / y,x // y, x % y

    邏輯運算:
    x or y, x and y,not x

    成員關系運算:
    x in y, x not in y

    對象實例測試:
    x is y , x not is y

    比較運算:
    x < y, x > y, x <= y, x >= y, x == y, x != y,
    
    位運算:
    x | y, x & y, x ^ y, x << y, x >> y

    一元運算:
    -x, +x, ~x 
    
    冪運算:
    x ** y

    索引和分片:
    x[i], x[i:j], x[i:j:stride]
    
    調(diào)用:
    x(...)

    取屬性:
    x.attribute
    
    元組:(...)
    序列:[...]
    字典:{...}

    三元選擇表達式:x if y else z

    匿名函數(shù):lambda args: expression

    生成器函數(shù)發(fā)送協(xié)議:yield x

運算優(yōu)先級:
    (...), [...], {...}
    s[i], s[i:j]
    s.attribute
    s(...)
    +x, -x, ~x
    x ** y
    *, /, //, %
    +, -
    <<, >>
    &
    ^
    |
    <, <=, >, >=, ==, !=
    is, not is
    in, not in
    not
    and
    or
    lambda

語句:
    賦值語句
    調(diào)用
    print:打印對象
    if/elif/else:條件判斷
    for/else:序列迭代
    while/else:普通循環(huán)
    pass:占位符
    break:
    continue
    def:定義函數(shù)
    return:返回值
    yield:生成器函數(shù)
    global:命名空間
    raise:觸發(fā)異常
    import:
    from:模塊屬性訪問
    class:類
    try/except/finally:撲捉異常
    del:刪除應用
    assert:調(diào)試檢查
    with/as:環(huán)境管理器

賦值語句:
    隱式賦值:import, from, def, class, for, 函數(shù)參數(shù)
    
    元組和列表分解賦值:當賦值符號(=)的左側為元組或者列表時倦零,Python會按照位置把右邊的對象和左邊的目標自左而右逐一進行配對误续;個數(shù)不同時會觸發(fā)異常,此時可以切片的方式進行光绕;

    多重目標復制: 
        num1 = num2 = num3 = 100

    增強賦值:+=, -=, *=, /=, //=, &=,

Python流程控制

條件測試

if 條件測試表達式

Python中真和假的含義
    1.任何非0數(shù)字和非空對象都為真女嘲;
    2.數(shù)字0、空對象和特殊對象None均為假诞帐;
    3.比較和相等策測試會遞歸的應用與數(shù)據(jù)結構中欣尼;
    4.返回值為Ture或False;

if

    In [47]: x = 1

    In [48]: y = 2

    In [49]: if x > y:
        ...:     print "the max number is %d." % x
        ...: else:
        ...:     print "the max number is %d." % y
        ...:
    the max number is 2.

elif

    In [51]: name = "jerry"

    In [53]: if name == "Tom":
        ...:     print "It is %s." % name
        ...: elif name == "hanmeimei":
        ...:     print "It is %s." % name
        ...: else:
        ...:     print "alien."
        ...:
    alien.



組合條件測試:
    X and Y: 與運算
    X or Y: 或運算
    not X: 非運算


A = X if Y else Z
    if Y:
        A = X
    else
        A = Z

expression1 if boolean_expression else expression2
    如果滿足boolean_expression則顯示expression1停蕉,否則顯示expression2

    (三元表達式)
    In [55]: A = 7

    In [56]: B = 9
    
    In [57]: max = A if A > B else B
    
    In [58]: print max
    9

while:

    while bool_expression愕鼓;
        while_suite
    else:
        else_suite

    break:跳出最內(nèi)層循環(huán);
    continue:跳到所處的最近層循環(huán)的開始處慧起;
    pass:占位語句
    else代碼塊:循環(huán)正常終止才會執(zhí)行菇晃;如果循環(huán)終止是由break跳出導致的,則else不會執(zhí)行蚓挤;

語法格式擴展:
    while bool_expression:
        while_suite
        if boolean_expression2:break
        if boolean_expression3:continue
    else:
        else_suite

for:

for expression1 in iterable:
    for_suite
else:
    else_sutie

1.通常磺送,expression是一個單獨的變量,或是一個變量序列灿意,一般以元組的形式給出
2.如果以元組或列表用于expression估灿,則其中的每個數(shù)據(jù)都會拆分到表達式的項,例如
    T=[(1,2),(3,4),(5,6),(7,8)]
    for (a,b) in T:
        print a,b

擴展形式:
    
    for expression in inerable:
        for_suite
        if boolean_expression2:break
        if boolean_expression3:continue
    else:
        else_suite

編寫循環(huán)到的技巧
    for循環(huán)比while循環(huán)執(zhí)行速度快
    python提供了兩個內(nèi)置函數(shù)缤剧,用于在for循環(huán)中制定特殊的循環(huán)
    range:一次性的返回連續(xù)的整數(shù)列表
    xrange:一次產(chǎn)生一個數(shù)據(jù)元素馅袁,相較于range更節(jié)約空間
    zip:返回并行的元素元組的列表,長用于在for循環(huán)中遍歷數(shù)個序列

range函數(shù)

非完備遍歷

        用于每隔一定的個數(shù)元素挑選一個元素
            >>>S= ‘www.knownsec.com’
            >>>range(0,len(S),2)
            [0, 2, 4, 6, 8, 10, 12, 14]
            
            >>>for i in range(1,len(S),2):
            >>>    print S[i],
            w . n w s c c m

    修改元表
        >>>L = [1,2,3,4,5]
        >>>for i in range(len(L)):L[i]+=1
        
        >>>print L
        [2,3,4,5,6]

并行遍歷

并行遍歷

回顧

1.動態(tài)語言
    sys.getrefcount() 查看引用次數(shù)
    
    增加對象的引用計數(shù)場景
        對象創(chuàng)建時
        將對象添加進容器時:類似list.append()
        當對象被當做參數(shù)傳遞給函數(shù)時
        為對象創(chuàng)建另外變量名

    減少引用技數(shù):
        引用次對象的變量名被顯示銷毀:del x
        給引用次對象的某變量名重新賦值
        從容器中移除對象時荒辕,類似list.pop()
        容器本身被銷毀
2.if
    if boolean_expression:
        ...
    elif boolean_expresssion:
        ...
    else:
        ...

2.while
    while boolean_expression:
        while_suite
        if boolean_expression2: contiune
        if boolean_expression3: break
    else:
        else_suite

4.for
    for expression in object:
        for_suite
        """if boolean_expression2: contiune
        if boolean_expression3: break
    else:
        else_suite"""可省

Python迭代

迭代:重復做一件事
iterable(可迭代)對象
    支持每次返回自己所包含的一個成員對象
    對象實現(xiàn)了__iter__方法
        序列類型如:list汗销,str犹褒,tuple
        非序列類型:dict,file
        用戶自定義的一些包含了__iter__()或__getitem__()方法的類
最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末弛针,一起剝皮案震驚了整個濱河市叠骑,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌钦奋,老刑警劉巖座云,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異付材,居然都是意外死亡朦拖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門厌衔,熙熙樓的掌柜王于貴愁眉苦臉地迎上來璧帝,“玉大人,你說我怎么就攤上這事富寿〔橇ィ” “怎么了?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵页徐,是天一觀的道長苏潜。 經(jīng)常有香客問我,道長变勇,這世上最難降的妖魔是什么恤左? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮搀绣,結果婚禮上飞袋,老公的妹妹穿的比我還像新娘。我一直安慰自己链患,他們只是感情好巧鸭,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著麻捻,像睡著了一般纲仍。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上贸毕,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天巷折,我揣著相機與錄音,去河邊找鬼崖咨。 笑死,一個胖子當著我的面吹牛油吭,可吹牛的內(nèi)容都是我干的击蹲。 我是一名探鬼主播署拟,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼歌豺!你這毒婦竟也來了推穷?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤类咧,失蹤者是張志新(化名)和其女友劉穎馒铃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體痕惋,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡区宇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了值戳。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片议谷。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖堕虹,靈堂內(nèi)的尸體忽然破棺而出卧晓,到底是詐尸還是另有隱情,我是刑警寧澤赴捞,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布逼裆,位于F島的核電站,受9級特大地震影響赦政,放射性物質發(fā)生泄漏胜宇。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一昼钻、第九天 我趴在偏房一處隱蔽的房頂上張望掸屡。 院中可真熱鬧,春花似錦然评、人聲如沸仅财。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盏求。三九已至,卻和暖如春亿眠,著一層夾襖步出監(jiān)牢的瞬間碎罚,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工纳像, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留荆烈,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓,卻偏偏與公主長得像憔购,于是被迫代替她去往敵國和親宫峦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

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