代碼片段.md

[toc]

列表拼接

data 是個(gè)列表或者元組炒嘲,將里面內(nèi)容拼接成字符串顯示

s = "a-b-c-d-e-f"
new_s  = "".join(s.split("-"))

不同實(shí)例添加不同的屬性

kwargs = dict(zip([chr(i) for i in range(97, 102)], range(1, 5)))


class Book(object):
    def __init__(self, name, authors, price, **kwargs):
        self.name = name
        self.authors = authors
        self.price = price
        self.__dict__.update(kwargs)  # 更新屬性

b = Book("pythoncookbook", 'smone', 100, **kwargs)  # 反解包

默認(rèn)參數(shù)的隱藏寫法

def create_engine(user, passwd, db, host='127.0.0.1', port=3306, **kw):
    params = dict(user=user, passwd=passwd, db=db, host=host, port=port)
    defaults = dict(use_unicode=True, charset='utf8', collation='utf8_general_ci', autocommit=False)
    for k, v in defaults.iteritems():
        params[k] = kw.pop(k, v) #kw有值則用kw昌跌,沒有就用 default的

快速讀寫文件(gnenrator)

wwwlog = open("access-log")
bytecolumn = (line.rsplit(None,1)[1] for line in wwwlog)  ## 逐行讀入
bytes = (int(x) for x in bytecolumn if x != '-') # 處理
print "Total", sum(bytes)

iostream的打開

打開一個(gè)url文件

from io import StringIO
StringIO(unicode(my_file.read(), "utf-8"))

import io
from PIL import Image
response = urllib2.urlopen('http://images2015.cnblogs.com/blog/425762/201511/425762-20151120204617843-2002471507.png')
val = response.read()
i = Image.open(io.BytesIO(val))
i.save('test.png')

for 循環(huán)添加命令

commands = []
for cmd in "create", "rename", "delete", "search", "copy", "unknown":
   commands.append(cmd)

神奇的列表切片

'FizzBuzz'[100:-5:-1]
>>>zzuB

or and not 妙用

a or b 中只有a不為None,空,才會(huì)去求b的值
a and b 兩者皆為True 或有值 ,取后者

def fun_print(x):
    print x
    return 15165

print 0 or fun_print(123)
print not 1
>>>False

Counter計(jì)數(shù)器

print Counter([1,3,3,3,4,5]) | Counter([3,3,4,5,6]) # 按計(jì)算多的算
list(c.elements())

帶屬性的字典

class Dict(dict):
    """
    字典對(duì)象
    實(shí)現(xiàn)一個(gè)簡單的可以通過屬性訪問的字典照雁,比如 x.key = value
    """
    def __getattr__(self, key):
        try:
            return self[key]
        except KeyError:
            raise AttributeError(r"'Dict' object has no attribute '%s'" % key)

    def __setattr__(self, key, value):
        self[key] = value

自定義字典類型的數(shù)據(jù)結(jié)構(gòu)

不建議從dict繼承 >http://www.kr41.net/2016/03-23-dont_inherit_python_builtin_dict_type.html
form UserDict import Dictmixin

class CaseInsensitiveDict(DictMixin):
    def __init__(self, *args, **kwargs):
        # super(CaseInsensitiveDict, self).__init__()
        self.data = dict(*args, **kwargs)
    def __repr__(self):
        return self.data.__repr__()
    def __getstate__(self):
        return self.data.copy()
    def __setstate__(self, d):
        self.data = d
    def _lower_keys(self):
        return map(str.lower, self.data.keys())
    def __contains__(self, key):
        return key.lower() in self._lower_keys()
    def __getitem__(self, key):
        if key.lower() in self:
            return self.items()[self._lower_keys().index(key.lower())][1]
    def __setitem__(self, key, value):
        return self.data.__setitem__(key, value)
    def __delitem__(self, key):
        return self.data.__delitem__(key)
    def __keys__(self):
        return self.data.__keys__()
    def __iter__(self):
        return self.data.__iter__()
    def iteritems(self):
        return self.data.iteritems()

代碼風(fēng)格

http://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/python_style_rules/

延遲實(shí)例化

class LazyProxy(object):  
    def __init__(self, cls, *params, **kwargs):  
        self.__dict__["_cls"]=cls  
        self.__dict__["_params"]=params  
        self.__dict__["_kwargs"]=kwargs  
  
        self.__dict__["_obj"]=None  
  
    def __getattr__(self, name):  
        if self.__dict__["_obj"] is None:  
            self.__init_obj()  
  
        return getattr(self.__dict__["_obj"], name)  
  
    def __setattr__(self, name, value):  
        if self.__dict__["_obj"] is None:  
            self.__init_obj()  
  
        setattr(self.__dict__["_obj"], name, value)  
  
    def __init_obj(self):  
        self.__dict__["_obj"]=object.__new__(self.__dict__["_cls"], *self.__dict__["_params"], **self.__dict__["_kwargs"])  
        self.__dict__["_obj"].__init__(*self.__dict__["_params"], **self.__dict__["_kwargs"])  
  
  
class LazyInit(object):  
    def __new__(cls, *params, **kwargs):  
        return LazyProxy(cls, *params, **kwargs)  
  
  
class A(LazyInit): # classes meant to be lazy loaded are derived from LazyInit  
    def __init__(self, x):  
        print("Init A")  
        self.x=14+x 

緩存實(shí)例

和django的cached_property不同蚕愤,可以分別賦值

class cached_property(object):
    """Property descriptor that caches the return value
    of the get function.

    *Examples*

    .. code-block:: python

        @cached_property
        def connection(self):
            return Connection()

        @connection.setter  # Prepares stored value
        def connection(self, value):
            if value is None:
                raise TypeError('Connection must be a connection')
            return value

        @connection.deleter
        def connection(self, value):
            # Additional action to do at del(self.attr)
            if value is not None:
                print('Connection {0!r} deleted'.format(value)

    """

    def __init__(self, fget=None, fset=None, fdel=None, doc=None):
        self.__get = fget
        self.__set = fset
        self.__del = fdel
        self.__doc__ = doc or fget.__doc__
        self.__name__ = fget.__name__
        self.__module__ = fget.__module__

    def __get__(self, obj, type=None):
        if obj is None:
            return self
        try:
            return obj.__dict__[self.__name__]
        except KeyError:
            value = obj.__dict__[self.__name__] = self.__get(obj)
            return value

    def __set__(self, obj, value):
        if obj is None:
            return self
        if self.__set is not None:
            value = self.__set(obj, value)
        obj.__dict__[self.__name__] = value

    def __delete__(self, obj):
        if obj is None:
            return self
        try:
            value = obj.__dict__.pop(self.__name__)
        except KeyError:
            pass
        else:
            if self.__del is not None:
                self.__del(obj, value)

    def setter(self, fset):
        return self.__class__(self.__get, fset, self.__del)

    def deleter(self, fdel):
        return self.__class__(self.__get, self.__set, fdel)

dict(kwargs, **other)

b = {"b": 3}
a = {"a": 1}
c = dict(a, **b)
print c
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子萍诱,更是在濱河造成了極大的恐慌悬嗓,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,378評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件裕坊,死亡現(xiàn)場(chǎng)離奇詭異包竹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)籍凝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,356評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門映企,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人静浴,你說我怎么就攤上這事〖方ィ” “怎么了苹享?”我有些...
    開封第一講書人閱讀 152,702評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵,是天一觀的道長浴麻。 經(jīng)常有香客問我得问,道長,這世上最難降的妖魔是什么软免? 我笑而不...
    開封第一講書人閱讀 55,259評(píng)論 1 279
  • 正文 為了忘掉前任宫纬,我火速辦了婚禮,結(jié)果婚禮上膏萧,老公的妹妹穿的比我還像新娘漓骚。我一直安慰自己,他們只是感情好榛泛,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,263評(píng)論 5 371
  • 文/花漫 我一把揭開白布蝌蹂。 她就那樣靜靜地躺著,像睡著了一般曹锨。 火紅的嫁衣襯著肌膚如雪孤个。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,036評(píng)論 1 285
  • 那天沛简,我揣著相機(jī)與錄音齐鲤,去河邊找鬼。 笑死椒楣,一個(gè)胖子當(dāng)著我的面吹牛给郊,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撒顿,決...
    沈念sama閱讀 38,349評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼丑罪,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起吩屹,我...
    開封第一講書人閱讀 36,979評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤跪另,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后煤搜,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體免绿,經(jīng)...
    沈念sama閱讀 43,469評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,938評(píng)論 2 323
  • 正文 我和宋清朗相戀三年擦盾,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了嘲驾。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,059評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡迹卢,死狀恐怖辽故,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情腐碱,我是刑警寧澤誊垢,帶...
    沈念sama閱讀 33,703評(píng)論 4 323
  • 正文 年R本政府宣布,位于F島的核電站症见,受9級(jí)特大地震影響喂走,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜谋作,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,257評(píng)論 3 307
  • 文/蒙蒙 一芋肠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧遵蚜,春花似錦帖池、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,262評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至攒钳,卻和暖如春帮孔,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背不撑。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工文兢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人焕檬。 一個(gè)月前我還...
    沈念sama閱讀 45,501評(píng)論 2 354
  • 正文 我出身青樓姆坚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親实愚。 傳聞我的和親對(duì)象是個(gè)殘疾皇子兼呵,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,792評(píng)論 2 345

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

  • Python簡介 Python歷史 Python 是由 Guido van Rossum 在八十年代末和九十年代初...
    莫名其妙的一生閱讀 1,040評(píng)論 0 2
  • 本節(jié)要介紹的是Python里面常用的幾種數(shù)據(jù)結(jié)構(gòu)介时。通常情況下,聲明一個(gè)變量只保存一個(gè)值是遠(yuǎn)遠(yuǎn)不夠的凌彬,我們需要將一組...
    小黑y99閱讀 65,190評(píng)論 0 9
  • 個(gè)人筆記沸柔,方便自己查閱使用 Py.LangSpec.Contents Refs Built-in Closure ...
    freenik閱讀 67,680評(píng)論 0 5
  • 30天第三篇 圓圓是一只呆萌的博美,嬌小的身子不盈一握铲敛,兩只眼睛總是我見猶憐地望著你褐澎,默默拉近你和它的距離...
    黃慶輝96閱讀 205評(píng)論 3 3
  • 1, 首先卸載MySQL2, 再根據(jù)這個(gè)目錄 C:\Documents and Settings\All User...
    lhl_012閱讀 196評(píng)論 0 0