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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

Python-技巧

發布時間:2023/12/4 python 48 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python-技巧 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

0.推薦的擴展

  requests urilib的替代品

  BeautifulSoup4 解析HTML代碼

  rq 任務隊列

  selenium 自動化測試工具,模擬瀏覽器

1.sys.modules, 根據已加載的模塊創建對象, 其中 page 為類名

if hasattr(sys.modules[__name__], page):setattr(self, page, getattr(sys.modules[__name__], page)(self))

2.hasattr, setattr, locals(), globals() 動態創建變量

3.綁定、未綁定

  未綁定的類方法: 沒有self

    通過類來引用方法返回一個未綁定方法對象, 要調用它, 你必須顯示地提供一個實例作為第一個參數

  綁定的實例方法: 有self

    通過實例訪問方法返回一個綁定的方法對象, Python自動地給方法綁定一個實例, 所以我們調用它時不用再傳一個實例參數

class Test:def func(self,message):print messageobject1 = Test() x = object1.func x('綁定方法對象,實例是隱含的')t=Test.func t(object1,'未綁定的方法對象,需要傳遞一個實例') #t('未綁定的方法對象,需要傳遞一個實例') #錯誤的調用

  object1 = Test()生成一個實例, object1.func返回一個綁定的方法, 把實例object1和方法func綁定, 而Test.func是用類去引用方法, 我們得到一個未綁定的方法對象, 要調用它就得傳一個實例參數, 如t(object1,'未綁定的方法對象,需要傳遞一個實例')

class A(object): def f(self): print "f"def ff(): print "ff" a = A() a.f() xf = a.f #xf為綁定的方法, 故不用傳入第一個值 xf() a.f = ff a.f()

4.MRO(method resolution order, 多繼承時判斷調的屬性的類)

  MRO要先確定一個線性序列, 然后查找路徑由由序列中類的順序決定, 所以MRO的算法就是生成一個線性序列

  Python先后有三種不同的MRO: 經典方式、Python2.2 新式算法、Python2.3 新式算法(C3), Python 3中只保留了最后一種, 即C3算法

  經典方式: 非常簡單, 深度優先, 按定義從左到右

  新式算法: 還是經典方式, 但出現重復的, 只保留最后一個

  C3算法: 最早被提出是用于Lisp的, 應用在Python中是為了解決原來基于深度優先搜索算法不滿足本地優先級, 和單調性的問題:

    本地優先級: 指聲明時父類的順序, 比如C(A, B), 如果訪問C類對象屬性時, 應該根據聲明順序, 優先查找A類, 然后再查找B類

    單調性: 如果在C的解析順序中, A排在B的前面, 那么在C的所有子類里, 也必須滿足這個順序

    class B(A) 這時B的mro序列為[B,A]

    class B(A1,A2,A3 ...)?這時B的mro序列 mro(B) = [B] + merge(mro(A1), mro(A2), mro(A3) ..., [A1,A2,A3])

    merge操作就是C3算法的核心, 遍歷執行merge操作的序列, 如果一個序列的第一個元素, 是其他序列中的第一個元素, 或不在其他序列出現, 則從所有執行merge操作序列中刪除這個元素, 合并到當前的mro中, merge操作后的序列, 繼續執行merge操作, 直到merge操作的序列為空, 如果merge操作的序列無法為空, 則說明不合法

class a:pass class b(a):pass class c(a):pass class d(b, c):pass

  比如此菱形繼承結構

    按經典方式, d類MRO為dbaca, 缺點是如果c類重寫了a類中得方法, c類的方法將不會被調用到(即本地優先順序問題)

    按新式算法, d類MRO為dbca, 缺點是單調性,?比如d繼承b、c, 且b在c的前面, 如果f繼承d, 那么f的MRO中也應該和d的一樣b在c的前面, 單調性即繼承時要保持順序, 現在e繼承c、b, 且c在b的前面, f繼承d, e時, bc的順序就沒法決定了, 無論怎樣排都違反了單調性

class A(O):pass class B(O):pass class C(O):pass class E(A,B):pass class F(B,C):pass class G(E,F):pass

    按C3算法,?A、B、C都繼承至一個基類, 所以mro序列依次為[A,O]、[B,O]、[C,O]
      mro(E) = [E] + merge(mro(A), mro(B), [A,B])
??????         = [E] + merge([A,O], [B,O], [A,B])
      此時需要執行merge操作的序列為[A,O]、[B,O]、[A,B]
      A是序列[A,O]中的第一個元素, 在序列[B,O]中不出現, 在序列[A,B]中也是第一個元素, 所以從執行merge操作的序列([A,O]、[B,O]、[A,B])中刪除A, 合并到當前mro, [E]中
        mro(E) = [E,A] + merge([O], [B,O], [B])
      再執行merge操作, O是序列[O]中的第一個元素, 但O在序列[B,O]中出現并且不是其中第一個元素, 繼續查看[B,O]的第一個元素B, B滿足條件, 所以從執行merge操作的序列中刪除B, 合并到[E, A]中
        mro(E) = [E,A,B] + merge([O], [O])
??????           = [E,A,B,O]

  實現C3算法的代碼:

#-*- encoding:GBK -*-# def mro_C3(*cls): if len(cls)==1: if not cls[0].__bases__: return cls else: return cls+ mro_C3(*cls[0].__bases__) else: seqs = [list(mro_C3(C)) for C in cls ] +[list(cls)] res = [] while True: non_empty = list(filter(None, seqs)) if not non_empty: return tuple(res) for seq in non_empty: candidate = seq[0] not_head = [s for s in non_empty if candidate in s[1:]] if not_head: candidate = None else: break if not candidate: raise TypeError("inconsistent hierarchy, no C3 MRO is possible") res.append(candidate) for seq in non_empty: if seq[0] == candidate: del seq[0]

  查看一個類的MRO列表, 可以使用 classname.__mro__

5.super 避免多次調用基類

# -*- coding:utf-8 -*- class D(object): def foo(self): print "class D" class B(D): pass class C(D): def foo(self): print "class C" class A(B, C): pass f = A() f.foo() #A的實例對象f在調用foo函數的時候, 根據廣度優先搜索原則, 調用的是C類里面的foo函數, 上面的代碼輸出class C; 如果定義D類的時候直接class D, 而不是class D(object), 那么上述代碼就該輸出class D了

  1). super并不是一個函數, 是一個類名, 形如super(B, self)事實上調用了super類的初始化函數產生了一個super對象;

  2). super類的初始化函數并沒有做什么特殊的操作, 只是簡單記錄了類類型和具體實例;

  3). super(B, self).func的調用并不是用于調用當前類的父類的func函數;

  4). Python的多繼承類是通過mro的方式來保證各個父類的函數被逐一調用, 而且保證每個父類函數只調用一次(如果每個類都使用super);

  5). 混用super類和非綁定的函數是一個危險行為, 這可能導致應該調用的父類函數沒有調用或者一個父類函數被調用多次

  6).super并不是像我們想象中一樣直接找到當前類的父類, 而是沿著mro順藤摸瓜

  參考:http://blog.csdn.net/johnsonguo/article/details/585193

6.模塊即模塊對象

7.利用 __new__ 實現單例

class Singleton(object):def __new__(cls, *args, **kwargs):# 關鍵在于這,每一次實例化的時候,我們都只會返回這同一個instance對象if not hasattr(cls, "instance"):cls.instance = super(Singleton, cls).__new__(cls, *args, **kwargs)return cls.instance

8.__new__ 執行順序

class A(object):def __new__(cls):Object = super(A, cls).__new__(cls)print "in New"return Object #如果把此行注釋掉, 則不會執行 __init__ 方法def __init__(self):print "in init"class B(A):def __init__(self):print "in B's init"B()

9.判斷一個變量是否存在

  1).

'var' in locals().keys()

  2).

try:print var except NameError:print 'var not defined'

  3).

'var' in dir()

10.根據類名創建實例, 主要是獲得類的 class 對象

  1).類名cls為class類型, 直接 cls() 即可

  2).類名cls為str類型

m = __import__(clsstr所在模塊名) cls = getattr(m, clsstr) cls()

  如果myclass并不在mymodule的自動導出列表中(__all__), 則必須顯式地導入, __import__('mymodule', globals(), locals(), ['myclass'])

11.獲取當前模塊名

  locals()/globals().get("__name__")

12.import, reload, __import__

  del sys.modules[modulename] 即可實現 unimport

  import 調用的 __import__, 比如 import sys => sys = __import__("sys")

  reload 對已經加載的模塊進行重新加載, 一般用于原模塊有變化等特殊情況, reload前該模塊必須已經import過, 但原來已經使用的實例還是會使用舊的模塊, 新生產的實例會使用新的模塊

import sys #引用sys模塊進來,并不是進行sys的第一次加載 reload(sys) #重新加載sys sys.setdefaultencoding('utf8') ##調用setdefaultencoding函數 #如果去掉reload(sys), 會執行失敗, 因為這里的import語句其實并不是sys的第一次導入語句, 也就是說這里其實可能是第二、三次進行sys模塊的import, 這里只是一個對sys的引用, 只能reload才能進行重新加載; 那么為什么要重新加載, 而直接引用過來則不能調用該函數呢?因為setdefaultencoding函數在被系統調用后被刪除了, 所以通過import引用進來時其實已經沒有了, 所以必須reload一次sys模塊, 這樣setdefaultencoding才會為可用, 才能在代碼里修改解釋器當前的字符編碼

  __import__, 返回模塊實例

__import__(module_name[, globals[, locals[, fromlist]]]) #可選參數默認為globals(),locals(),[] __import__('os') __import__('os',globals(),locals(),['path','pip']) #等價于from os import path, pip

13.迭代器

  基本原理:

    實現了__iter__方法的對象是可迭代的, 實現了next()方法的對象是迭代器(迭代器就是一個有next()方法的對象), 所以iter(實現了__iter__方法的對象)會調用此對象的__iter__方法, 返回一個實現了next()方法的迭代器對象, 不斷調用此迭代器對象的next()方法, 實現遍歷,?直到遇到StopIteration異常, 使用迭代器一個顯而易見的好處就是每次只從對象中讀取一條數據, 不會造成內存的過大開銷

  序列、字典、文件中當使用for x in y的結構時, 其實質就是迭代器, 迭代器是和實際對象綁定在一起的, 所以在使用迭代器時或者上述3者時不能修改可變對象的值, 這會產生錯誤

  迭代器不要求你事先準備好整個迭代過程中所有的元素, 迭代器僅僅在迭代至某個元素時才計算該元素, 而在這之前或之后, 元素可以不存在或者被銷毀, 這個特點使得它特別適合用于遍歷一些巨大的或是無限的集合, 比如幾個G的文件, 或是斐波那契數列等等, 這個特點被稱為延遲計算或惰性求值(Lazy evaluation)

  創建迭代器的方法: iter(object)和iter(func, sentinel)兩種, 一種使用的是序列, 另一種使用類來創建, 迭代器更大的功勞是提供了一個統一的訪問集合的接口, 只要是實現了__iter__()方法的對象, 就可以使用迭代器進行訪問,?返回一個對象, 這個對象擁有一個next()方法, 這個方法能在恰當的時候拋出StopIteration異常即可

for i in seq: do_something_to(i)

  實際為:

fetch = iter(seq) while True: try: i = fetch.next() except StopIteration: break do_something_to(i)

  字典中, iterkeys(), itervalues(), iteritems() 比 keys(), values(), items() 更省內存

  open("test.txt").readlines() 返回的是列表,?open("test.txt") 返回的是迭代器

14.生成器

  如果一個函數返回的列表非常大, 僅僅創建這個列表就會用完系統所有內存, 因為在我們的觀念中函數只有一次返回結果的機會, 因而必須一次返回所有的結果, 此類問題可以用生成器解決

  生成器是特定的函數, 允許你返回一個值, 然后“暫?!贝a的執行, 稍后恢復, 生成器使用了“延遲計算”, 所以在內存上面更加有效, 生成器函數不能有返回值, 因為 yield 的值就是返回值, 生成器就是一類特殊的迭代器

  1).調用生成器函數將返回一個生成器

>>> generator = get_0_1_2() >>> generator <generator object get_0_1_2 at 0x00B1C7D8>

  2).第一次調用生成器的next方法時, 生成器才開始執行生成器函數(而不是構建生成器時), 直到遇到yield時暫停執行(掛起), 并且yield的參數將作為此次next方法的返回值

>>> generator.next() 0

  3).之后每次調用生成器的next方法, 生成器將從上次暫停執行的位置恢復執行生成器函數, 直到再次遇到yield時暫停, 并且同樣的, yield的參數將作為next方法的返回值

>>> generator.next() 1 >>> generator.next() 2

  4).如果當調用next方法時生成器函數結束(遇到空的return語句或是到達函數體末尾), 則這次next方法的調用將拋出StopIteration異常(即for循環的終止條件)

>>> generator.next() Traceback (most recent call last):File "<stdin>", line 1, in <module> StopIteration

  5).生成器函數在每次暫停執行時, 函數體內的所有變量都將被封存(freeze)在生成器中, 并將在恢復執行時還原, 并且類似于閉包, 即使是同一個生成器函數返回的生成器, 封存的變量也是互相獨立的, 我們的小例子中并沒有用到變量, 所以這里另外定義一個生成器來展示這個特點

>>> def fibonacci(): ... a = b = 1 ... yield a ... yield b ... while True: ... a, b = b, a+b ... yield b ... >>> for num in fibonacci(): ... if num > 100: break ... print num, ... 1 1 2 3 5 8 13 21 34 55 89

  看到while True可別太吃驚, 因為生成器可以掛起, 所以是延遲計算的, 無限循環并沒有關系, 這個例子中我們定義了一個生成器用于獲取斐波那契數列

  如果生成器函數調用了return, 或者執行到函數的末尾, 會出現一個StopIteration異常

  有一篇好文章:點擊進入

15.列表解析器

  也可以直接生成 dict

{x: 1 for x in ["name", "sex"]} #返回 {"name": 1, "sex" 1}

  列表解析一次生成一個列表, 所占內存較大

(x+1 for x in lst) #生成器表達式,返回迭代器。外部的括號可在用于參數時省略。 [x+1 for x in lst] #列表解析,返回list

  由于返回迭代器時, 并不是在一開始就計算所有的元素, 這樣能得到更多的靈活性并且可以避開很多不必要的計算, 所以除非你明確希望返回列表, 否則應該始終使用生成器表達式

  可以在Python Shell中試一下一下兩個語句的執行時間

(for x in range(1000000)) #返回生成器 [for x in range(1000000)] #返回整個列表

  或者提供多條for子句進行嵌套循環, 嵌套次序就是for子句的順序:

((x, y) for x in range(3) for y in range(x))

  同樣外部也可以使用 if

(x for x in (y.doSomething() for y in lst) if x>0)

16.在Python里, 函數的默認值實在函數定義的時候實例化的, 而不是在調用的時候, 如果在調用函數的時候重寫了默認值, 那么這個存儲的值就不會被使用, 當你不重寫默認值的時候, 那么Python就會讓默認值引用存儲的值(這個例子里的numbers)

def abc(numbers = []):numbers.append(9)print numbers

  abc(): [9] #第一次執行

  abc(): [9, 9] #第二次執行

  abc([1, 2]): [1, 2, 9] #第三次執行

  abc(): [9, 9, 9] #第四次執行

def print_now(now = time.time()):print now #如果不加參數, 則每次都會返回相同的時間

  默認參數最好指向不變對象

17.當def這個聲明執行的時候, Python會靜態地從函數的局部作用域里獲取信息,?當來到 xxx = yyy 這行的時候(不是執行到這行代碼, 而是當Python解釋器讀到這行代碼的時候), 它會把xxx這個變量加入到函數的局部變量列表里

18.__builtin__模塊, 在Python啟動后、且沒有執行程序員所寫的任何代碼前, Python會首先加載該內建模塊到內存, 另外, 該內建模塊中的功能可以直接使用, 不用在其前添加內建模塊前綴, 導入僅僅是讓__builitin__標識符在該作用域內可見

19.from __future__ import xxx, 必須是模塊或程序的第一個語句, 此外,'__ future__' 模塊中存在的特性最終將成為Python語言標準的一部分, 到那時, 將不再需要使用 '__future__' 模塊

20.序列解包

a, b, c = 1, 2, 3 #賦值 a, b = b, a #轉換a, b的值 a = 1, #聲明元組

21.最好了解下二進制文件和文本文件的區別以及編碼問題, ASCII(固定一個字節)->Unicode(固定兩個字節)->UTF-8(變長), 在計算機內存中, 統一使用Unicode編碼, 當需要保存到硬盤或者需要傳輸的時候, 就轉換為UTF-8編碼, 用記事本編輯的時候, 從文件讀取的UTF-8字符被轉換為Unicode字符到內存里, 編輯完成后, 保存的時候再把Unicode轉換為UTF-8保存到文件, len()函數計算的是str(Unicode編碼)的字符數, 如果換成bytes(UTF-8等編碼), len()函數就計算字節數:

參考自:廖雪峰Python

22.dict的key必須是不可變對象

23.Python函數參數順序

  定義: (arg, kwarg = <value>, *args, **kwargs)

  調用:

    第一, 按順序把"arg"這種形式的實參給對應的形參
    第二, 把"arg=<value>"這種形式的實參賦值給形式kwarg
    第三, 把多出來的"arg"這種形式的實參組成一個tuple給帶一個星號的形參args
    第四, 把多出來的"key=value"這種形式的實參轉為一個dictionary給帶兩個星號的形參kwargs

def test(x, y = 5, *a, **b):print x, y, a, b   test(1) ===> 1 5 () {}
  test(1,2) ===> 1 2 () {}
  test(1,2,3)? ===> 1 2 (3,) {}
  test(1,2,3,4) ===> 1 2 (3,4)
  test(x=1)?? ===> 1 5 () {}
  test(x=1,y=1)? ===> 1 1 () {}
  test(x=1,y=1,a=1)?? ===> 1 1 () {'a':1}
  test(x=1,y=1,a=1,b=1)?? ===> 1 1 () {'a':1,'b':1}
  test(1,y=1) ===> 1 1 () {}
  test(1,2,y=1) ===> 出錯, 說y給賦了多個值
  test(1, y = 2, 3, a = 4) ===> 出錯, non-keyword arg after keyword arg
  test(1,2,3,4,a=1) ===> 1 2 (3,4) {'a':1}

24.限制 **kwargs 參數個數

#只接收city和job作為關鍵字參數 def person(name, age, *, city, job):print(name, age, city, job)

25.functools 模塊

  wraps: 用來裝飾返回func的函數, 以同步func與被裝飾的函數的屬性, 比如__name__等 @functools.wraps(func)

  partial: 變化函數的參數創建偏函數, 固定住原函數的部分參數, 比如 int2 = functools.partial(x, base = 2), 此時 int2 是一個把二進制字符串轉為十進制數字的函數, int2('10010')

26.一個.py文件稱為一個模塊, 為了避免模塊名沖突, Python按目錄來組織模塊的方法, 稱為包(Package), 包內必須有__init__.py, 因為__init__.py本身就是一個模塊, 它的模塊名就是包名(目錄名)

27.第三方庫都會在 Python 官方的 pypi.python.org 網站注冊, 要安裝一個第三方庫, 必須先知道該庫的名稱, 可以在官網或者 pypi 上搜索

28.各種包管理工具區別:

  distribute是setuptools的取代, pip是easy_install的取代

  distribute被創建是因為setuptools包不再維護了

29.Python的實例屬性必須在__init__(self) 方法中定義, 直接跟在類名后邊定義的屬性都默認是類屬性(類似于c++的static變量), 類的屬性一改, 只要沒有覆蓋此屬性的對象的此屬性都會改

  main.py

#-*- coding: utf-8 -*-class Model():model_path = "online_model"model_dict = {}def __init__(self, path = None):self.reload(path)def reload(self, path = None):if not path:returnself.model_dict.clear()fp = file(path, "r")for line in fp:cols = line.split()self.model_dict[cols[0]] = cols[1]self.model_path = pathdef main():m1 = Model()m2 = Model()m1.reload("aa_model")m2.reload("bb_model")print m1.model_pathprint m2.model_pathprint m1.model_dictprint m2.model_dictreturn 0if __name__ == "__main__":main()

  aa_model

1 a
2 b

  bb_model

x 1 y 2 z 3

  結果如圖:

  aa_model, bb_model: 由于reload方法中self.model_path = path, 實例重寫了類的model_path屬性(第一次賦值視為變量的定義), 故輸出本實例的model_path

  {‘y': 2, 'x': '1', 'z': '3'},?{‘y': 2, 'x': '1', 'z': '3'}: 由于self.model_dict.clear(), 第一次使用此變量非賦值而是直接使用(類似PHP), 類似函數中表示使用已有的值, 根據MRO, 搜索到Model.model_dict, 故兩次會覆蓋同一個變量

30.類的特殊屬性

  C.__name__: 類的名字

  C.__doc__: 類的文檔描述

  C.__bases__: 類的基類組成的元組

  C.__dict__: 類的屬性

  C.__module__: 類所在模塊

  C.__class__: 類的類名

  __getattribute__: 不管屬性是否存在都會調用

  __getattr__: 如果屬性不存在則調用, 如果__getattribute__被定義會先被調用, 然后調用此方法, 也可以返回函數

class A(object):def __getattr__(self, attr):if attr == "age":return lambda : 25a = A() a.age()

?

  __setattr__

  __delattr__

  __slots__: 限制實例可以添加到屬性

  hasattr(), getattr(), setattr(), delattr()

31.實例的特殊屬性

  i.__class__: 實例的類名

  i.__dict__: 實例的屬性, __dict__分層存儲屬性, 每一層的__dict__只存儲該層新增的屬性, 子類不需要重復存儲父類中的屬性

32.property()可以即時生成屬性

33.類中私有屬性__xx, 實現為Python自動為__xx改變變量名

34.當我們定義一個class的時候, 我們實際上就定義了一種數據類型, 我們定義的數據類型和Python自帶的數據類型, 比如str、list、dict沒什么兩樣, type(instance), 返回instance對應的Class類型, 比如

class A(object):passa = A() b = type(a)() #此時b為A的實例print type(A) #<type 'type'> print type(a) #<class '__main__.A'> print isinstance(b, A) #True

  type()函數可以查看一個類型或變量的類型, A是一個class(類對象), 它的類型就是type, 而h是一個實例, 它的類型就是class A

  class的定義是運行時動態創建的, 而創建class的方法就是使用type()函數,?type()函數既可以返回一個對象的類型, 又可以創建出新的類型, 比如, 我們可以通過type()函數創建出A類, 而無需通過class A(object)...的定義,?

def fn(self, name = "John"):self.name = nameA = type('A', (object,), dict(hello=fn)) a = A() print type(A) #<type 'type'> print type(a) #<class '__main__.A'>

  type() 創建類對象的參數如下: 

    class的名稱

    繼承的父類集合, 注意Python支持多重繼承, 如果只有一個父類, 別忘了tuple的單元素寫法

    class的方法名稱與函數綁定, 這里我們把函數fn綁定到方法名hello上

  通過type()函數創建的類和直接寫class是完全一樣的, 因為Python解釋器遇到class定義時, 僅僅是掃描一下class定義的語法, 然后調用type()函數創建出class

  除了使用type()動態創建類對象, 還可以使用元類, 即 metaclass, 流程為先定義metaclass, 就可以創建類, 最后創建實例

# metaclass是創建類,所以必須從`type`類型派生: class ListMetaclass(type):def __new__(cls, name, bases, attrs):attrs['add'] = lambda self, value: self.append(value)return type.__new__(cls, name, bases, attrs)class MyList(list):__metaclass__ = ListMetaclass # 指示使用ListMetaclass來定制類, 表示創建MyList時要通過ListMetaclass.__new__()來創建, 在此, 我們可以修改類的定義, 比如, 加上新的方法, 然后, 返回修改后的定義

  __new__()方法接收到的參數依次是:當前準備創建的類的對象, 類的名字, 類繼承的父類集合, 類的方法集合

35.types模塊, 可以查看所有的type, type(abs) == types.BuiltinFunctionType

36.把方法變成屬性 @property

class Student(object):#@property 會創建一個另外一個裝飾器 @score.setter, 負責把一個方法編程屬性賦值 @propertydef score(self):return self._score@score.setterdef score(self, value):if not isinstance(value, int):raise ValueError('score must be an integer!')if value < 0 or value > 100:raise ValueError('score must between 0 ~ 100!')self._score = values = Student() s.score = 60 s.score = 101 #ValueError: Score must between 0 ~ 100!

37.Linux下用Python實現多進程(此處不是講線程), Unix/Linux操作系統提供了一個fork()系統調用, 它返回兩次, 因為操作系統自動把當前進程(稱為父進程)復制了一份(稱為子進程), 然后, 分別在父進程和子進程內返回, 子進程永遠返回0, 而父進程返回子進程的ID, 這樣做的理由是, 一個父進程可以fork出很多子進程, 所以, 父進程要記下每個子進程的ID, 而子進程只需要調用getppid()就可以拿到父進程的ID; Windows系統不支持fork()函數; 有了fork調用, 一個進程在接到新任務時就可以復制出一個子進程來處理新任務, 常見的Apache服務器就是由父進程監聽端口, 每當有新的http請求時, 就fork出子進程來處理新的http請求

import osprint('Process (%s) start...' % os.getpid()) # Only works on Unix/Linux/Mac: pid = os.fork() if pid == 0:print('I am child process (%s) and my parent is %s.' % (os.getpid(), os.getppid())) else:print('I (%s) just created a child process (%s).' % (os.getpid(), pid))

38.multiprocessing模塊是跨平臺的多進程模塊

  創建一個進程運行某個函數

from multiprocessing import Process import os# 子進程要執行的代碼 def run_proc(name):print('Run child process %s (%s)...' % (name, os.getpid()))if __name__=='__main__':print('Parent process %s.' % os.getpid())p = Process(target=run_proc, args=('test',))print('Child process will start.')p.start()p.join()print('Child process end.')

  結果為:

Parent process 67416. Child process will start. Run child process test (70388)... Child process end.

  join()方法可以等待子進程結束后再繼續往下運行, 通常用于進程間的同步

39.占位

40.timestamp與時區毫無關系, timestamp一旦確定, 其UTC時間就確定了, 轉換到任意時區的時間也是完全確定的, 全球各地的計算機在任意時刻的timestamp都是完全相同的, datetime是有時區的, 會在timestamp與本地時間之間做轉換

>>> from datetime import datetime >>> t = 1429417200.0 >>> print(datetime.fromtimestamp(t)) # 本地時間 2015-04-19 12:20:00 >>> print(datetime.utcfromtimestamp(t)) # UTC時間 2015-04-19 04:20:00

41.struct模塊, 了解c語言的人, 一定會知道struct結構體在c語言中的作用, 它定義了一種結構, 里面包含不同類型的數據(int, char, bool等等), 方便對某一結構對象進行處理, 而在網絡通信當中, 大多傳遞的數據是以二進制流(binary data)存在的, 當傳遞字符串時, 不必擔心太多的問題, 而當傳遞諸如int、char之類的基本數據的時候, 就需要有一種機制將某些特定的結構體類型打包成二進制流的字符串然后再網絡傳輸, 而接收端也應該可以通過某種機制進行解包還原出原始的結構體數據, python中的struct模塊就提供了這樣的機制, 該模塊的主要作用就是對python基本類型值與用python字符串格式表示的C struct類型間的轉化.

>>>import struct >>>ss = struct.pack("!H4s2I", 20, "abcd", 6, 7) >>>ss "\x00\x14abcd\x00\x00\x00\x06\x00\x00\x00\x07" #ss是一個字符串 類似c結構體的字節流(二進制)的字符串表示 >>>struct.unpack("!H4s2I", ss) (20, 'abcd', 6, 7)

  H表示 一個unsigned short的id, 4s表示4字節長的字符串, 2I表示有兩個unsigned int類型的數據

  struct中支持的格式如下表

FormatC TypePython字節數
xpad byteno value1
ccharstring of length 11
bsigned charinteger1
Bunsigned charinteger1
?_Boolbool1
hshortinteger2
Hunsigned shortinteger2
iintinteger4
Iunsigned intinteger or long4
llonginteger4
Lunsigned longlong4
qlong longlong8
Qunsigned long longlong8
ffloatfloat4
ddoublefloat8
schar[]string1
pchar[]string1
Pvoid *long

  另一方面, 打包的后的字節順序默認上是由操作系統的決定的, 當然struct模塊也提供了自定義字節順序的功能, 可以指定大端存儲、小端存儲等特定的字節順序, 對于底層通信的字節順序是十分重要的, 不同的字節順序和存儲方式也會導致字節大小的不同; 在format字符串前面加上特定的符號即可以表示不同的字節順序存儲方式, 例如采用小端存儲 s = struct.Struct(‘<I3sf’)就可以了, 官方api library 也提供了相應的對照列表:

CharacterByte orderSize and alignment
@nativenative??????????? 湊夠4個字節
=nativestandard??????? 按原字節數
<little-endianstandard??????? 按原字節數
>big-endianstandard?????? 按原字節數
!network (= big-endian)

standard?????? 按原字節數

  利用struct解析BMP文件頭, 首先找一個bmp文件, 沒有的話用“畫圖”畫一個, 讀入前30個字節來分析:

>>> s = b'\x42\x4d\x38\x8c\x0a\x00\x00\x00\x00\x00\x36\x00\x00\x00\x28\x00\x00\x00\x80\x02\x00\x00\x68\x01\x00\x00\x01\x00\x18\x00'

  BMP格式采用小端方式存儲數據,文件頭的結構按順序如下:? 兩個字節:'BM'表示Windows位圖,'BA'表示OS/2位圖; 一個4字節整數:表示位圖大小; 一個4字節整數:保留位,始終為0; 一個4字節整數:實際圖像的偏移量; 一個4字節整數:Header的字節數; 一個4字節整數:圖像寬度; 一個4字節整數:圖像高度; 一個2字節整數:始終為1; 一個2字節整數:顏色數。? 所以,組合起來用unpack讀取:

>>> struct.unpack('<ccIIIIIIHH', s) (b'B', b'M', 691256, 0, 54, 40, 640, 360, 1, 24)

  結果顯示,b'B'、b'M'說明是Windows位圖,位圖大小為640x360,顏色數為24。

42.快速創建字典

  {}.from_keys(list, defaultValue)

  dict((key1, value1), (key2, value2), (key3, value3)...)

  zip([key1, key2, key3...], [value1, value2, value3...])

  dict(name = "John", "age" = 26)

43.判斷字典中鍵名是否存在的兩種方法

#第一種 d.has_key()#第二種 "" in d.keys()

44.判斷對象中屬性/方法是否存在

hasattr(object, attr)
attr in dir(object)

45.動態調用方法

def _execute(self, sql, params, isMany):func = "executemany" if isMany else "execute"func = getattr(self._db["cur"], func)return func(sql, params)

46.False, 0, '', (), [], {}都可以視為假

47.列表內數據唯一(類似PHP中array_unique)

set([1, 2, 1]) -- set([1, 2])

48.根據一個對象創建另一個對象

obj.__class__(...)

49.collections模塊

  collections.namedtuple 創建可命名的tuple

import collections as cs Point = cs.namedtuple("Point", ["x", "y", "z"]) p = Point(1, 2, 3)print p.x, p.y, p.z

  collections.deque 為了高效實現插入和刪除操作的雙向列表,增刪效率高于 list,也可以使用 deque(maxlen = 10) 來限制列表長度,超出時添加會把頭尾的元素擠出。

import collections as cs q = cs.deque(['a', 'b', 'c']) q.append('x') q.appendleft('y') print q>>>deque(['y', 'a', 'b', 'c', 'x'])

  collections.defaultdict 使用dict時,如果引用的Key不存在,就會拋出KeyError。如果希望key不存在時,返回一個默認值,就可以用defaultdict,也可以直接創建多維字典。

import collections as cstree = lambda: collections.defaultdict(tree)d = tree() d["names"]["John"] = "ABC"

  collections.OrderedDict 創建按key值遍歷時有序的dict(普通dict無序排列) 使用

50.禁止創建對象屬性字典。每個類都有實例屬性,默認用一個字典保存一個對象的實例屬性,允許我們設置任意屬性,但是可能會浪費很多內存。使用__slots__高速Python不要使用字典,而且只給一個固定集合的屬性分配空間。

class MyClass(obj ect) : __slots__ = [ ' name' , ' identifier' ] def __init__(self, name, identifier) : self. name = name self. identifier = identifier self. set_up()

51.文件遍歷

with open("foo.txt", "r") as f:for line in f:# do_something(line)for line in open("foo.txt", "r"):# do_something(line)

52.打印格式化的json

import json print json.dumps({"name": "John"}, indent = 2)

53.格式化輸出字典

print("I'm %(name)s. I'm %(age)d year old" % {'name':'Vamei', 'age':99})
print("I'm {name}.I'm {age} year old").format(name = "John", age = 26)

54.字典和集合也有列表推導式,都使用{}包圍,分別返回字典和集合

#快速兌換字典鍵—值 mca={"a":1, "b":2, "c":3, "d":4} dicts={v:k for k,v in mca.items()} #{1: 'a', 2: 'b', 3: 'c', 4: 'd'}

55.字面量,即 {}, [] 等直接表示。

56.從標準輸入獲取數據,除了 input、raw_input 也可以使用如下方式

import sys sys.stdin.readline().strip()

57.數據庫 IN 查詢的正確姿勢不是如下

id_list = [1, 2, 3] arg_list = ','.join(['%s'] * len(id_list)) cursor.execute('SELECT col1, col2 FROM table1 WHERE id IN (%s)' % arg_list, id_list)

  而是如下(參考資料:http://ju.outofmemory.cn/entry/51481):

id_list = [1, 2, 3] cursor.execute('SELECT col1, col2 FROM table1 WHERE id IN %s', (id_list,))

58.

總結

以上是生活随笔為你收集整理的Python-技巧的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

亚洲日本欧美在线 | 国产明星视频三级a三级点| 四虎影视成人永久免费观看亚洲欧美 | 久久精品视频免费播放 | 一区二区视频网站 | 久久久黄视频 | 激情五月五月婷婷 | 中文字幕黄色网址 | 伊人小视频 | 久久综合九色欧美综合狠狠 | 999毛片| 麻豆 91 在线| 91香蕉视频好色先生 | 91麻豆精品国产91久久久无需广告 | 成全在线视频免费观看 | 欧美一级免费高清 | 亚洲成人精品av | 亚洲精品毛片一级91精品 | 在线a亚洲视频播放在线观看 | 久久观看免费视频 | 视频91 | 亚洲精品小视频 | 91视频这里只有精品 | 成人三级视频 | 精品久久在线 | 国内精品久久久久久久久久清纯 | 国产精品免费观看国产网曝瓜 | 国产精品久久久久久一二三四五 | 免费观看全黄做爰大片国产 | 91黄色小视频 | 欧美色综合久久 | 欧美孕妇与黑人孕交 | 99久久视频| 亚洲精品国产自产拍在线观看 | 在线观看视频中文字幕 | 成人国产一区二区 | 日本久久成人中文字幕电影 | 久久久久久久久久久电影 | 亚洲激情av | 性日韩欧美在线视频 | 久久国产精品成人免费浪潮 | 欧美一区二区在线刺激视频 | 国产一级电影在线 | 国产在线观看免费观看 | 中文字幕黄色 | 亚洲国产精品视频在线观看 | 久久久久伦理电影 | 久久天天躁夜夜躁狠狠躁2022 | 天天爽天天爽天天爽 | 国内精品久久久久久久久 | 深爱开心激情 | 精品字幕 | 天天操天天拍 | 欧美激情在线网站 | 黄色免费观看视频 | 免费麻豆网站 | 玖玖在线视频观看 | 精品国模一区二区三区 | 特黄免费av| 2021av在线 | 在线导航av | 日本黄色免费电影网站 | 99免费在线视频 | 伊人久久在线观看 | 国产一级黄色电影 | 欧美成人xxxxxxxx | 日韩免费视频在线观看 | 欧美一级免费在线 | 亚洲九九九 | 亚洲欧美日韩国产一区二区三区 | 黄网在线免费观看 | 射射色 | 日韩av美女 | 国产精品国产亚洲精品看不卡 | 大型av综合网站 | 中文字幕在线观看免费高清电影 | 亚洲国产精品500在线观看 | 国产xxxx| 久草在线费播放视频 | 久久91网 | 人人射人人插 | 日韩成人在线免费观看 | 国产精品欧美激情在线观看 | 久久深夜福利免费观看 | 国产成人亚洲在线观看 | 国产精品毛片一区二区 | 国产精品日韩欧美一区二区 | 天天色天| 国产在线精品区 | 久久激情影院 | 国内成人精品2018免费看 | 成人夜晚看av | 91探花在线视频 | 国产中文字幕久久 | 麻豆91在线播放 | 日韩欧美大片免费观看 | 久久精品波多野结衣 | 精品国产自在精品国产精野外直播 | 成人国产一区 | av丝袜美腿| 久久久久久久久久久久久久免费看 | 玖玖视频免费在线 | 成人h视频在线播放 | 天天操天天操天天操天天操天天操天天操 | 中文字幕高清在线播放 | 国产精品99久久久久 | 色综合久久综合网 | 国产精品视频内 | av丁香花| 国产精品久久久久久麻豆一区 | 97手机电影网 | 人人澡人 | 欧美国产日韩中文 | 日韩大片在线免费观看 | 久久ww | 日日爽夜夜操 | 视频在线91 | 天天透天天插 | 久久婷亚洲五月一区天天躁 | 亚洲免费a | 叶爱av在线 | av福利在线导航 | 成人久久毛片 | www.色婷婷 | 99精品国产视频 | 久久综合久久综合这里只有精品 | 成人动漫一区二区三区 | 婷五月天激情 | 国内精品久久久久久久久久久久 | 中文字幕在线影院 | 精品成人a区在线观看 | 日韩欧美在线不卡 | 午夜精品福利在线 | 免费看av片网站 | 激情欧美一区二区三区 | 97超碰资源总站 | 免费三级a | 91色在线观看视频 | 在线久热 | 久久国产精品久久久 | 国产破处精品 | 亚洲成人中文在线 | 国产97在线观看 | 中文字幕精品一区二区精品 | 国产午夜精品一区二区三区在线观看 | 国产只有精品 | 97人人射| 一级黄色片网站 | 麻豆成人精品 | 亚洲欧美怡红院 | 在线观看一区二区视频 | 久久亚洲综合色 | 亚洲 欧洲 国产 日本 综合 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 韩国三级av在线 | 亚洲一级黄色大片 | 天天色综合1 | 亚洲国产视频网站 | 日本在线中文在线 | 国产精品久久久久四虎 | 国产在线黄 | 国产精品久久久 | 亚洲精品综合欧美二区变态 | 91精品一区国产高清在线gif | 在线观看完整版 | 日韩av免费一区二区 | 免费观看性生交大片3 | 波多野结衣电影一区二区三区 | 92国产精品久久久久首页 | 成人在线观看资源 | 日韩久久网站 | 五月婷婷久久丁香 | 九九涩涩av台湾日本热热 | 久久成人18免费网站 | 91人人网 | 久久成人国产精品免费软件 | 国产视频黄 | 久久久久久久久久久国产精品 | 日韩r级在线 | 成年人免费电影在线观看 | 欧美性色xo影院 | 久久综合色一综合色88 | 精品亚洲视频在线观看 | va视频在线观看 | 国产白浆视频 | 久久久免费观看 | 国产精品热视频 | 成人在线观看资源 | 麻豆视屏 | 国产日本三级 | 国产精品1区2区3区在线观看 | 波多野结衣在线视频免费观看 | 国产午夜在线 | 岛国大片免费视频 | 日本久久久久久 | 亚洲国产三级 | 国产很黄很色的视频 | 一区二区三区四区久久 | 韩国av一区二区三区在线观看 | 天天爽夜夜爽人人爽一区二区 | 欧美日韩一区二区免费在线观看 | 国产精品久久久久永久免费看 | 嫩嫩影院理论片 | 99精品国产aⅴ | 天天操夜夜操 | 亚洲天堂网在线播放 | 精品影院 | 亚洲婷婷综合色高清在线 | 6080yy精品一区二区三区 | 就要干b | 精品久久久免费视频 | 免费一级片在线 | 日韩国产欧美在线播放 | 在线看不卡av | 成人免费在线播放 | 午夜国产福利在线 | 97视频在线免费观看 | 91成版人在线观看入口 | 99久久精品无码一区二区毛片 | 国产精品久久久av久久久 | 欧美了一区在线观看 | 天堂网一区二区三区 | 91精品国产乱码久久 | av电影免费在线看 | 国产高清在线视频 | 在线观看精品一区 | 在线观看日韩av | 91丨九色丨蝌蚪丨老版 | www.日本色| 综合色站| 国产精品久久久久久久婷婷 | 91在线观看高清 | 最近最新中文字幕视频 | av网在线观看 | 99人成在线观看视频 | 久草在线手机视频 | 精品一区三区 | 亚洲男男gaygay无套同网址 | 久久伊人操 | 婷婷丁香视频 | 五月婷婷开心中文字幕 | 国产精品免费在线播放 | 日韩视频中文字幕 | 婷婷六月天丁香 | 国产精品欧美久久久久三级 | 亚洲精品视频在线免费 | 在线观看国产中文字幕 | 欧美日韩高清一区二区 国产亚洲免费看 | 美女国产精品 | 成人免费在线观看入口 | 缴情综合网五月天 | 日本黄色免费在线观看 | 免费黄色av | 国产精品福利视频 | 麻豆视频在线免费 | 99精品国产免费久久 | 看毛片的网址 | 日韩系列在线观看 | 五月婷婷中文字幕 | 国产精品美女免费视频 | 狠狠干天天色 | 日韩在线视频精品 | 国产精品美女久久久久aⅴ 干干夜夜 | 91免费版在线观看 | 99精品99| 欧美精品视| av888.com| 人人舔人人射 | 色狠狠久久av五月综合 | 日韩欧美久久 | 蜜桃传媒一区二区 | 99精品视频一区 | 日韩天天综合 | 欧美日一级片 | 日韩小视频 | 国产午夜影院 | 伊人久久一区 | 色香蕉在线 | 日韩在线三级 | 久操视频在线播放 | 亚洲精品成人网 | 中文字幕av一区二区三区四区 | 探花视频在线观看免费版 | 国产精品99久久久久久久久 | 久久国产精品久久w女人spa | 国产精品久久久久久久久久免费看 | av成年人电影| 日韩av资源在线观看 | 国产精品久久久久久久久久三级 | 久久手机免费观看 | 国产精品视频app | 香蕉视频在线观看免费 | 成年人在线观看视频免费 | 欧美最爽乱淫视频播放 | 日本中文字幕在线播放 | 四虎在线免费观看 | 成人精品亚洲 | 国产一级一片免费播放放a 一区二区三区国产欧美 | 久久黄色片子 | 色综合天天综合网国产成人网 | 欧美日本在线视频 | 国产精品99久久久精品免费观看 | 91激情视频在线 | 国产成人一区二区三区影院在线 | 999久久 | 国产xxxx| 99热99re6国产在线播放 | 伊人天天综合 | www.狠狠色 | 日韩欧美精品一区二区三区经典 | 日韩精品一区二区三区在线播放 | 欧美黑人巨大xxxxx | 久久成人精品电影 | 国产精品中文字幕在线 | 成人黄色影片在线 | 在线高清一区 | 日批视频在线 | 91自拍视频在线观看 | 亚洲成人黄色av | 中文字幕精品一区 | 国产日韩欧美精品在线观看 | 五月天丁香视频 | 久久成电影 | 97在线免费视频观看 | 99久久日韩精品视频免费在线观看 | 在线三级播放 | 国产精品黄色 | 亚洲国产精品久久久久婷婷884 | 国产日韩中文字幕在线 | 超级碰碰免费视频 | 久草干| 免费在线观看一级片 | 中文免费 | 国内久久视频 | 欧美一区二区三区在线播放 | 天天色天天色 | 国产精品久久久一区二区三区网站 | 久久字幕网 | 欧美亚洲另类在线视频 | 99精品视频免费全部在线 | 国产又粗又猛又黄又爽视频 | 色小说av| 97在线播放| 深夜视频久久 | 久久久久激情视频 | 久久综合中文色婷婷 | 国产精品理论视频 | 亚洲成人网av | 国产一级片一区二区三区 | 99久热在线精品视频成人一区 | 久久久亚洲影院 | 亚洲国产欧美在线看片xxoo | 97超碰色偷偷 | 最近中文字幕完整视频高清1 | 97热在线观看| 色五月成人 | 狠狠久久综合 | 中文字幕综合在线 | 91精品国自产拍天天拍 | 中文在线字幕观看电影 | 日韩视频一区二区三区在线播放免费观看 | 精品美女在线观看 | 亚洲精品国偷拍自产在线观看蜜桃 | 在线观看网站av | 国产精品每日更新 | 欧美精品一区在线 | 香蕉在线观看视频 | 亚洲专区一二三 | 激情开心| 欧美日韩免费网站 | 免费在线观看黄 | 日本性xxx| 欧美在线观看视频一区二区三区 | 日韩免费在线网站 | 波多野结衣视频一区二区三区 | 日本精品视频在线观看 | 免费激情在线电影 | 一级欧美一级日韩 | 国产色婷婷在线 | 国产麻豆果冻传媒在线观看 | 99视频在线播放 | 日韩在线理论 | 亚洲国产经典视频 | 婷婷在线网 | 久久伊人五月天 | 欧美成人aa| 国产精品18久久久久久vr | 91精品国产91久久久久 | 国产亚洲精品久久久网站好莱 | 大片网站久久 | 国产精品专区一 | 久久免费视频5 | 91经典在线 | 丁香视频全集免费观看 | a'aaa级片在线观看 | 久久er99热精品一区二区 | 三级黄色在线观看 | 99久久精品免费看国产免费软件 | 欧美在线1区 | 欧美一级特黄高清视频 | 日韩视频区| 中文字幕乱在线伦视频中文字幕乱码在线 | 91日韩在线播放 | 久久天天躁夜夜躁狠狠躁2022 | 精品美女久久久久久免费 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 亚洲天堂网在线视频观看 | 成人免费中文字幕 | 中文字幕免费观看视频 | 久热av | 欧美日韩二三区 | 亚洲成av人片一区二区梦乃 | 人人超碰人人 | 国产精品久久99综合免费观看尤物 | 一区二区三区四区不卡 | 97超碰人人澡人人爱学生 | 91亚洲精品乱码久久久久久蜜桃 | 伊人婷婷激情 | 欧美一二区视频 | 免费日韩电影 | 日韩欧美在线中文字幕 | 又爽又黄又刺激的视频 | 国产精品丝袜久久久久久久不卡 | 亚洲精品在线观看av | 国产精品日韩精品 | 国产蜜臀av | 99热这里只有精品国产首页 | 国产自产在线视频 | 97视频在线免费 | 国产精品一码二码三码在线 | 亚洲狠狠婷婷综合久久久 | 91麻豆免费视频 | 蜜臀av性久久久久蜜臀aⅴ四虎 | 国内精品视频久久 | 狠狠操狠狠插 | 中文字幕一区在线 | 天天拍天天干 | 国产在线看 | 日日夜夜av | 日韩av电影中文字幕在线观看 | 蜜臀久久99精品久久久久久网站 | 久久99精品国产99久久 | 岛国av在线免费 | 激情视频久久 | 久久久人| 九九爱免费视频 | 免费高清在线观看成人 | 美女视频永久黄网站免费观看国产 | 色婷婷色| 亚洲天堂网在线视频观看 | 免费视频黄色 | 观看免费av | 91精品少妇偷拍99 | 色视频网站在线观看一=区 a视频免费在线观看 | 国产精品一区专区欧美日韩 | 国产一二三四在线观看视频 | 一区二区三区高清不卡 | 69视频在线 | 夜夜骑日日操 | 久久精品一区二区三区中文字幕 | 国产一区二区在线播放视频 | 国产原创中文在线 | 日韩av影片在线观看 | 婷婷网五月天 | 国产精品久久久久久a | 色视频在线免费观看 | 国产成年人av | 亚洲免费成人 | 国产成人性色生活片 | 午夜18视频在线观看 | 久久久久久久久久久久久国产精品 | 操操操日日 | 欧美精品999 | 91av亚洲 | 天天干天天做 | 特级毛片爽www免费版 | 国产99在线播放 | 欧美激情一区不卡 | 久久免费精品一区二区三区 | 久久亚洲综合国产精品99麻豆的功能介绍 | 天天操人人要 | 成人超碰97 | 免费网站黄色 | 最近日韩中文字幕中文 | 免费在线观看视频a | 狠狠色噜噜狠狠狠 | 综合色中文 | 国产午夜一区二区 | 国产色妞影院wwwxxx | 精品久久久免费 | 成人一区不卡 | 国产色网 | 亚洲国产日韩欧美在线 | 特级西西444www高清大视频 | 日韩在线视频网站 | 午夜视频福利 | 激情综合色播五月 | 99视频一区二区 | 99久久超碰中文字幕伊人 | 麻豆传媒视频在线免费观看 | 91亚洲精品久久久 | 99精品免费久久久久久久久日本 | 成人禁用看黄a在线 | www激情久久 | 51精品国自产在线 | 中文字幕五区 | 日日碰狠狠添天天爽超碰97久久 | 国产亚洲精品成人av久久影院 | 一区二区三区免费网站 | 97超级碰 | 欧美日本不卡高清 | 99精品黄色片免费大全 | 日韩免费在线一区 | 一区二区三区精品在线视频 | 久久国产精品99久久久久久进口 | 色播五月激情五月 | 久久国产精品二国产精品中国洋人 | 99精品影视| 久久国产精品电影 | 久草在线手机视频 | 黄色大全在线观看 | 日狠狠| 亚洲精品日韩一区二区电影 | 91久久久久久久一区二区 | 亚洲日韩中文字幕在线播放 | 久久dvd| 成人高清在线 | 成年人电影免费看 | 啪啪凸凸 | 最近能播放的中文字幕 | 天天干天天干天天干天天干天天干天天干 | 国产传媒一区在线 | 2022国产精品视频 | 亚洲精品乱码久久久久 | 国产国产人免费人成免费视频 | 精品影院 | 一级片色播影院 | 天天干干 | 亚洲精品在线免费看 | 国产一区二区三区四区大秀 | 欧美日韩在线视频一区 | 91九色丨porny丨丰满6 | 国产香蕉av | 精品国产乱码久久久久久1区二区 | 91在线免费观看网站 | 成人教育av | 日日日日 | 777xxx欧美| 亚洲黄色在线免费观看 | 狠狠狠狠狠狠狠狠干 | 啪啪免费视频网站 | 美女免费黄视频网站 | 国产小视频免费在线观看 | 91看片在线 | 成人在线视频论坛 | 精品国产一区二区三区在线观看 | 天天亚洲 | 91av视频免费在线观看 | 国产xx视频 | 久草视频在线新免费 | 久久精品一区二区三区国产主播 | 色综合久久88色综合天天 | 国产精品专区在线观看 | 国产精品久久久久久久7电影 | www久| 欧美视频xxx | 有没有在线观看av | 午夜狠狠干 | 成人av手机在线 | 91精品国产一区二区在线观看 | 黄色软件大全网站 | 在线播放国产精品 | www.午夜 | 久久国产精品二国产精品中国洋人 | 国产91影院 | 制服丝袜一区二区 | 国产一级片久久 | 日韩中文字幕免费电影 | 午夜视频在线观看一区二区三区 | 亚洲成人av在线电影 | 免费日p视频 | 久久久精品久久 | 国产麻豆精品久久一二三 | 一区二区三区四区精品 | a v在线视频 | 99精品视频观看 | 五月婷婷亚洲 | 国产亚洲精品久久久久久移动网络 | 在线免费试看 | 天天射网站 | 五月天视频网 | 最近中文字幕视频网 | 99久久精品免费看国产免费软件 | 亚洲精品动漫成人3d无尽在线 | 日韩理论在线播放 | 国产精品va在线观看入 | 国产成人专区 | 97视频在线观看播放 | 最新中文字幕视频 | 亚洲精品国产视频 | 国产欧美精品一区aⅴ影院 99视频国产精品免费观看 | 91成人精品一区在线播放69 | www色网站| 日韩在线二区 | 欧美精品久久久久久久 | 成人资源网 | 日日天天av | 成人久久久精品国产乱码一区二区 | 中文字幕日韩电影 | 日韩精品五月天 | 久草久 | 久久久久久久久久久综合 | 五月天高清欧美mv | 久久久久看片 | 日本在线观看一区 | 国产理论一区二区三区 | 国产午夜在线观看视频 | 日韩欧美综合视频 | 欧美成人tv | 视频在线日韩 | 婷婷六月天天 | 免费网站v| 欧美日韩在线视频免费 | 九九热免费观看 | 久久精品久久精品久久精品 | 亚洲黄色在线免费观看 | 国产九九在线 | 天天综合视频在线观看 | 草久久精品 | 欧美精品在线观看免费 | 国产精品观看在线亚洲人成网 | 日韩精品综合在线 | 久久亚洲视频 | 天天色综合天天 | 91丨九色丨国产在线 | 超碰com | 日韩在线视频网 | 色婷婷狠 | 国产精品都在这里 | 日本成人免费在线观看 | 五月天激情视频在线观看 | 国内一级片在线观看 | 成人av片免费看 | 欧美精品一区在线发布 | 亚洲码国产日韩欧美高潮在线播放 | 天天操天天是 | 天天曰夜夜操 | 久久久久人人 | 国产精品入口传媒 | 波多野结衣在线视频一区 | 国产高清av免费在线观看 | 久久精品www人人爽人人 | 少妇bbw搡bbbb搡bbb | 中文字幕在线观看完整版电影 | 97av色| 在线观看视频国产 | 最近中文字幕高清字幕免费mv | 久久国产精品视频免费看 | 黄污在线观看 | 国产精品一区二区中文字幕 | 久久精品视频在线观看免费 | 久草视频中文在线 | av中文字幕在线免费观看 | 欧美天堂久久 | 中文字幕精品一区二区精品 | 久久天 | 久久99久久99精品 | 五月天伊人网 | 91chinese在线| 五月天色中色 | 91视频-88av| 国产精品福利午夜在线观看 | 天天爱天天色 | 国产999精品视频 | 亚洲a资源 | 日本资源中文字幕在线 | 国产成人精品一区二区三区在线观看 | 欧美成人aa | 麻豆视频一区 | 欧美大片在线看免费观看 | 国产精品视频 | 96精品高清视频在线观看软件特色 | 又大又硬又黄又爽视频在线观看 | 97在线视频观看 | 香蕉在线观看 | 亚洲资源视频 | 国产精品专区h在线观看 | 一级做a爱片性色毛片www | 黄色小说在线免费观看 | 一区二区三区av在线 | 综合久久五月天 | 日本中文字幕电影在线免费观看 | 久久免费电影网 | 99精品国产免费久久 | 狠狠狠色 | 国产精品成人自产拍在线观看 | 国产剧情在线一区 | 波多野结衣一区 | 99在线精品免费视频九九视 | av日韩不卡 | 91在线免费观看网站 | 久久久麻豆精品一区二区 | 狠狠操操操 | 狠狠操狠狠 | 国产中文字幕精品 | 狠狠色伊人亚洲综合成人 | 色天天中文| 久久成人一区二区 | 午夜在线国产 | 久久国产精品偷 | 亚洲电影图片小说 | 国产精品亚洲片在线播放 | 国产艹b视频 | 日韩动态视频 | 一区二区三区 中文字幕 | 亚洲精品字幕在线 | 国内揄拍国产精品 | 西西www4444大胆视频 | 九九精品在线观看 | 女人18片 | 国产精品亚州 | 国产91在线 | 美洲 | 国产精品美女久久久久久网站 | 免费一级片在线 | 在线成人观看 | 亚洲色图激情文学 | 天天爽网站 | 91九色自拍 | 精品视频国产 | 久久久久久久久久福利 | 成人三级网站在线观看 | 日日操操 | 性色xxxxhd| 日韩69视频 | 丁香婷婷激情五月 | 99久久夜色精品国产亚洲 | 91看片成人| 视频一区二区免费 | 国产精品久久久久久久婷婷 | 亚洲免费色 | 91福利区一区二区三区 | 在线观看成人 | 黄a网站| 久久国产精品99久久久久久进口 | 日本中文字幕电影在线免费观看 | 区一区二区三在线观看 | 青春草免费在线视频 | 午夜.dj高清免费观看视频 | 一级电影免费在线观看 | 色综合天天综合在线视频 | 日韩精品亚洲专区在线观看 | 97超碰免费在线观看 | 欧美精品中文在线免费观看 | 一级黄色片网站 | 色综合久久88色综合天天免费 | 男女激情免费网站 | 天天综合网天天综合色 | 免费看的黄网站软件 | 色婷婷导航 | 国产资源免费在线观看 | 久久精品老司机 | 国产亚洲视频中文字幕视频 | 99re在线视频观看 | 欧美日韩伦理在线 | 中国老女人日b | 国产五月 | 九九免费精品视频在线观看 | 国产精品自产拍在线观看中文 | 人人看黄色 | 狠狠色噜噜狠狠 | 97在线观看免费观看高清 | 欧美日韩调教 | 一级片黄色片网站 | 国产一二三区av | 久草在线精品观看 | 欧美视频国产视频 | 99麻豆视频| 伊人国产在线观看 | 99热官网 | 日韩欧美大片免费观看 | 亚洲一区二区三区四区精品 | 久久99视频精品 | 国产高清av | 正在播放国产一区 | 免费日韩电影 | 久草精品在线观看 | 色香蕉在线视频 | 国内精品久久久久久久影视麻豆 | 免费av影视 | 久久久久高清毛片一级 | 午夜在线免费视频 | 久久精品网站免费观看 | 久久97超碰 | 黄色一级大片免费看 | 亚洲国产免费av | 九九激情视频 | 99精品福利 | 99久久精品免费 | 色综合综合| 二区三区毛片 | a√资源在线 | 91人人揉日日捏人人看 | 碰超在线 | 亚洲天天 | 亚洲va欧美va人人爽春色影视 | 日韩精品免费专区 | 婷婷狠狠操| 91精品色 | 国产伦精品一区二区三区四区视频 | 懂色av一区二区在线播放 | 成人动漫一区二区 | 日韩黄色网络 | 免费在线观看av电影 | 久久黄色免费视频 | 五月天六月色 | 成年免费在线视频 | 色香网 | 在线观看一级 | 国产一区二区在线观看免费 | 精品国产一区二区三区四 | 97成人在线| 欧美视频日韩视频 | 久久国内视频 | 免费视频你懂得 | 中文字幕 国产视频 | 91精品亚洲影视在线观看 | 探花视频在线观看免费版 | 4438全国亚洲精品在线观看视频 | 久久久久久久久久久久久久电影 | 久久国语露脸国产精品电影 | 日韩精品久久一区二区 | 国产美女精品久久久 | 婷婷色中文网 | a成人在线| 国产一级做a | 久久dvd| 深爱婷婷久久综合 | 国产黄色片免费 | 91人人澡人人爽人人精品 | 中文字幕 国产精品 | 日韩艹 | 超碰av在线免费观看 | 日韩国产精品毛片 | 日批在线观看 | 天天干人人插 | 91福利在线导航 | 午夜精品视频免费在线观看 | 日韩三级精品 | 三上悠亚一区二区在线观看 | 久久久精品亚洲 | 久久免费高清视频 | 婷婷亚洲综合五月天小说 | 国产高清在线精品 | 国产一区在线观看视频 | 丁香花中文在线免费观看 | 久久免费的精品国产v∧ | 探花视频在线版播放免费观看 | 日韩午夜一级片 | 免费观看一区二区三区视频 | 国产精品1区2区 | 亚洲精品一区二区三区四区高清 | 国产精品观看在线亚洲人成网 | 久久久久亚洲精品成人网小说 | 日韩视频一区二区在线 | 国产成人av综合色 | 国产成人一区二区精品非洲 | 免费99精品国产自在在线 | 亚洲午夜av电影 | 精品一区二区精品 | 国产美腿白丝袜足在线av | 97色国产 | 8x成人免费视频 | 天天天色综合 | 成人黄大片视频在线观看 | 欧洲精品码一区二区三区免费看 | 久章草在线观看 | 国产成人三级在线观看 | 久久人人爽人人爽人人片av软件 | 人人澡人人干 | 久久精国产 | 色综合天天狠天天透天天伊人 | 亚洲精品456在线播放 | 男女啪啪免费网站 | 国产黄在线免费观看 | 久久久久久久免费 | 中文字幕频道 | 日韩黄色免费在线观看 | 国产精品美女久久久久久 | 丁香久久久 | 91伊人影院| 99精品在线免费在线观看 | 91秒拍国产福利一区 | 精品国产精品一区二区夜夜嗨 | 一区二区 精品 | 亚洲精品影视在线观看 | 天天爱av导航| 亚洲91中文字幕无线码三区 | 成年人视频免费在线播放 | 国内精品视频免费 | 久久久久久黄 | 欧美一级电影 | 色婷五月天 | 99视频精品全部免费 在线 | 看毛片的网址 | 97超级碰碰 | 亚洲精品视频免费在线观看 | 在线国产激情视频 | 日韩成人中文字幕 | 99精品免费在线 | 一区二区三区四区免费视频 | 久久国产精品一国产精品 | 成人在线观看网址 | av在线专区 | av高清免费| 久久伊人热 | 91看片成人| 亚洲精品免费观看视频 | 91黄在线看 | 日韩在线视频免费播放 | 色综合久久88色综合天天人守婷 | 国产裸体视频bbbbb | 欧美精品资源 | 亚洲精品久久久久中文字幕m男 | 国产精品aⅴ | 天天夜夜狠狠操 | 欧美男同视频网站 | 99综合视频 | 久久久久久久久久久久久影院 | 免费观看黄色av | 成人毛片在线视频 | 黄p网站在线观看 | 亚洲免费公开视频 | 欧美男女爱爱视频 | 国产日韩三级 | 视频一区二区在线 | 免费看亚洲毛片 | 国产成人性色生活片 | 亚洲h在线播放在线观看h | 中文字幕日韩在线播放 | 96亚洲精品久久久蜜桃 | 日韩一级成人av | 在线免费观看黄色大片 | 国产中文字幕网 | 免费色av | 国产视频在 | 在线播放精品一区二区三区 | 四川妇女搡bbbb搡bbbb搡 | 黄色片亚洲 | 久久99这里只有精品 | 成人黄性视频 | 狠狠色香婷婷久久亚洲精品 | 久久精品亚洲精品国产欧美 | 黄色片亚洲 | 精品一区二区影视 | 免费在线播放视频 | 毛片网站免费在线观看 | 日韩欧美一区二区三区黑寡妇 | 亚洲精品国产精品国自产 | 美女久久久 | 成人丁香花 | 日日日操操 | 四虎小视频| 黄色在线网站噜噜噜 | 在线播放 日韩专区 | 天天操操操操操操 | 免费看的黄色小视频 | 欧美日韩国产精品久久 | 欧美日韩一级久久久久久免费看 | 国产精品久久久区三区天天噜 | 中文字幕成人在线 | 精品视频中文字幕 | 日韩久久久久 | 久久精品xxx | 日本公妇在线观看高清 | 天天草天天干 | 激情综合网色播五月 | 综合久久久久久久久 | 久久99日韩 | 在线观看免费av网站 | 精品亚洲二区 | 香蕉一区| 亚洲精品啊啊啊 | 91视频国产免费 | 色综合夜色一区 | 日韩av影视在线观看 | 综合网天天 | 日韩.com | 四虎成人精品永久免费av | 亚洲国产中文字幕在线 | 九九热视频在线 | 日韩视频免费播放 | 97香蕉视频 | 永久免费毛片在线观看 | 日韩欧美网址 | 国产精品毛片一区视频播 | 国产日韩欧美在线看 | 日韩一区视频在线 | 四虎影视成人永久免费观看视频 |