面的部分描述一些常見的python約定,在django中貫穿始終,在任何大一些的python庫都的確存在。
callable
python允許**可以有許多途徑被執行,任何東西都能像典型的函式標識可呼叫的一樣,按相同的方式執行。所有函式,類,方法都是自動可呼叫的,像期望的一樣,但是任意物件類例項也能被標識為可呼叫,只要提供乙個單一方法。
__calll__(self[, ...])
當例項化物件像函式一樣呼叫時,這個方法就開始執行。它和其他的成員函式很象,不同的地方就是被呼叫的方式。
>>> class multiplier(object):
... def __init__(self, factor):
... self.factor = factor
... def __call__(self, value):
... return value * self.factor
...
>>> times2 = multiplier(2)
>>> times2(5)
10>>> times2(10)
20>>> times3 = multiplier(3)
>>> times3(10)
30python也提供了乙個內建函式來判定可呼叫(callable)的物件。 callable()函式只有乙個引數,返回true或false。判斷物件是否像函式一樣可呼叫。
>>> class basic(object):
... pass
...
>>> class callable(object):
... def __call__(self):
... return "executed!"
...
>>> b = basic()
>>> callable(b)
false
>>> c = callable()
>>> callable(c)
true
字典字 典是單一物件中的鍵值對映。大多數程式語言都有相同形式的字典型別,其他語言稱之為「hashes", "maps"或"associative arrays(關聯陣列)",除了簡單通過指定鍵來訪問值,python的字典提供了許多方法,一邊更好的操作底層的對映。為了像乙個真正的字典的表現行 為,乙個物件需要提供一些方法,文件參見python library reference。
__contains__(self, key)
通過使用in操作符, 如果指定的鍵存在於底層的對映中,則返回true,否則返回false。它從不返回異常。
__getitem__(self, key)
如果存在的華,則返回被指定鍵引用的值。如果鍵不在底層的對映中,則丟擲乙個異常keyerror。
__setitem__(self, key, value)
通過指定的鍵來儲存指定的值,儲存之後準備引用它。如果有乙個對映存在,可用相同的鍵覆蓋已經存在的值。
>>> class caseinsensitivedict(dict):
... def __init__(self, **kwargs):
... for key, value in kwargs.items():
... self[key.lower()] = value
... def __contains__(self, key):
... return super(caseinsensitivedict, self).__contains__(key.lower())
... def __getitem__(self, key):
... return super(caseinsensitivedict, self).__getitem__(key.lower())
... def __setitem__(self, key, value):
... super(caseinsensitivedict, self).__setitem__(key.lower(), value)
...
>>> d = caseinsensitivedict(spam='eggs')
>>> 'spam' in d
true
>>> d['spam']
'eggs'
>>> d['spam'] = 'burger'
>>> d['spam']
'burger
字典也可以用作迭代使用,當**迴圈字典的內容時,鍵用作列表。更多資訊參見即將介紹的"iterables"(迭代)。
C 常用的呼叫約定 cdecl
函式呼叫約定 當乙個函式被呼叫時,函式的引數會被傳遞給被呼叫的函式和返回值會被返回給呼叫函式。函式的呼叫約定就是描述引數是怎麼傳遞和由誰平衡堆疊的,當然還有返回值。函式呼叫約定的主要約束事件 引數傳遞順序 1.從右到左依次入棧 stdcall,cdecl,thiscall 2.從左到右依次入棧 pa...
了解常用的C C 函式呼叫約定
呼叫約定 calling convention 決定以下內容 關於 c c 函式呼叫約定,大多數時候並不會影響程式邏輯,但遇到跨語言程式設計時,了解一下還是有好處的。vc 中預設呼叫是 cdecl 方式,windows api 使用 stdcall 呼叫方式,在 dll 匯出函式中,為了跟 wind...
蒲公英的約定
考試時以為是一道高次同餘方程題,然後只打了乙個暴力。最後db發現只需要通過輸入中的最後一行倒推回去就行了。首先根據題目我們知道,輸入中的最後一行中b等於0。那麼就是 c lastans 0。根據異或的性質我們知道c lastans。於是最後乙個答案一定是c。那麼就可以知道倒數第二行中的x c,即 i...