Python变量和对象类型速记手册
變量和對象類型
Python中關(guān)于變量和對象類型有一些重要的概念:
| 變量不受類型約束 | 變量并不是一塊內(nèi)存空間的標(biāo)簽,只是對象的名字,是沒有類型的,相當(dāng)于一個可以指向任何對象void指針。類型屬于對象,而不是變量。 |
| 動態(tài)類型 | 它自動地跟蹤你的類型而不是要求聲明代碼;Python中沒有類型聲明,運行的表達(dá)式,決定了建立和使用的對象的類型 |
| 強類型 | 類型是不可變的,一旦發(fā)生強制類型轉(zhuǎn)換,則意味著新的對象的建立。你只能對一個對象進(jìn)行有效的操作。 |
| 多態(tài) | 由于類型不受約束,Python編寫的操作通常可以自動地適用于不同類型的對象,只要他們支持一種兼容的接口(類似C++里模板的概念),就像‘+’操作對于數(shù)字為加法,對于序列為合并。 |
| 對象頭部信息 | 對象的內(nèi)存空間,除了值外,還有 1 一個類型標(biāo)識符(標(biāo)識對象類型) 2 一個應(yīng)用計數(shù)器(用來決定是不是可以回收這個對象)sys.getrefcount(1) |
| 對象類型檢測 | 在Python中,我們編寫對象接口而不是類型。不關(guān)注與特定類型意味著代碼會自動地適應(yīng)于他們中的很多類型:任何具有兼容接口的對象均能工作。 1. type(L) == type([]) 2. type(L) == list 3. isinstance(L,list) 盡管支持類型檢測,但這并不是一個“Python式”的思維方式,破壞了代碼的靈活性。 |
| 賦值 | 基本賦值、元組賦值、列表賦值和多目標(biāo)賦值。在賦值語句中,即使沒有圓括號,也能識別出來這是一個元組。 序列賦值語句:支持右側(cè)任何可迭代對象(左右元素數(shù)目相同) [a,b,c] = (1,2,3)或 [a,b,c] = '123'或 red,green,blue = range(3) 交換值不需要中間變量 需要注意引用的陷阱: 對于支持原地修改的對象而言,增強賦值語句會執(zhí)行原地修改運算L.append(4) L.extend([7,8]),比合并(復(fù)制過程)L = L + [4] 執(zhí)行得更快. 隱式賦值語句:模塊導(dǎo)入import,from;函數(shù)和類的定義def,class;for循環(huán)變量;函數(shù)參數(shù) |
| 在函數(shù)中接收元組和列表 | 當(dāng)要使函數(shù)接收元組或字典形式的參數(shù)的時候,有一種特殊的方法,它分別使用*和**前綴。這種方法在函數(shù)需要獲取可變數(shù)量的參數(shù)的時候特別有用。
? |
| 引用傳遞 | 在 Python 中所有賦值操作都是“引用傳遞”。當(dāng)把一個對象賦給一個數(shù)據(jù)結(jié)構(gòu)元素或者變量名時,Python總是會存儲對象的引用,而不是對象的一個拷貝(除非明確要求拷貝)。 通過將一些基本數(shù)據(jù)類型(數(shù)值、字符串、元組)設(shè)為不可改變對象,可以模擬“值傳遞”,例如: userName = ‘tonyseek’?? #字符串對象為不可變對象,保護(hù)完整性 otherUserName = ‘It’s not tonyseek’? #改變的不是userName指向的內(nèi)容 |
| 存儲對象引用 | 列表和元組都被認(rèn)為是“對象引用”的數(shù)組(在標(biāo)準(zhǔn)Python解釋器內(nèi)部,就是C數(shù)組而不是鏈接結(jié)構(gòu),索引速度較快)。 |
| 淺拷貝和深拷貝 | 淺拷貝只拷貝頂層結(jié)構(gòu),深拷貝是遞歸的拷貝。 如果你想要復(fù)制一個列表或者類似的序列或者其他復(fù)雜的對象(不是如整數(shù)那樣的簡單對象 ),那么你可以使用切片操作符來取得拷貝。如果你只是想要使用另一個變量名,兩個名稱都 參考 同一個對象,那么如果你不小心的話,可能會引來各種麻煩。 X = [1,2,3] L1 = [X,X,X] L2 = [X[:],list(X),copy.copy()] #頂層復(fù)制 L.append(L) #無限循環(huán)對象,復(fù)合對象包含指向自身的引用· |
| 不變對象的緩存和復(fù)用 | 作為一種優(yōu)化,Python緩存了不變的對象并對其進(jìn)行復(fù)用,例如小的整數(shù)和字符串。因為不能改變數(shù)字和字符串,所以無論對同一個對象有多少個引用都沒有關(guān)系,從邏輯的角度看,這工作起來就像每一個表達(dá)式結(jié)果的值都是一個不同的對象,而每一個對象都是不同的內(nèi)存。 |
| 垃圾收集 | 當(dāng)最后一次引用對象后(例如,將這個變量用其他的值進(jìn)行賦值),這個對象所有占用的內(nèi)存空間將會自動清理掉 |
?
Python中有幾種主要的核心數(shù)據(jù)類型:
1 數(shù)值【不可變】
| 負(fù)數(shù) | -x |
| 正數(shù) | +x |
| 按位翻轉(zhuǎn) | ~x=-(x+1) |
| 絕對值 | abs(x) 若x位復(fù)數(shù),返回復(fù)數(shù)模 |
| 用x除以y,返回包含商和余數(shù)的tuple值(int(x/y),x%y) | divmod(x, y) |
| x的y次幕(x ** y ) x % modulo | pow(x ,y [,modulo]) 返回值類型與x同 |
| 復(fù)數(shù) | complex (x[,y]) 將x做實部,y做虛部創(chuàng)建復(fù)數(shù) |
| 整數(shù) | int(x) 將字符串和數(shù)字轉(zhuǎn)換為整數(shù),對浮點進(jìn)行舍位而非舍入 long(x) 將字符串和數(shù)字轉(zhuǎn)換為長整形 |
| 浮點數(shù) | float(x) 將str和num轉(zhuǎn)換為浮點對象 |
| 四舍五入,n為小數(shù)點位數(shù) | round(x[,n]) |
| 進(jìn)制轉(zhuǎn)換 | hex(x) 將整數(shù)或長整數(shù)轉(zhuǎn)換為十六進(jìn)制字符串 oct(x) 將整數(shù)或長整數(shù)轉(zhuǎn)換為八進(jìn)制字符串 |
| 平方根 | math.sqrt(math.pi*85) |
| >= x?的最小整數(shù) | math.ceil(x) |
| <= x的最大整數(shù) | math.floor(x) |
| 對?x?朝向 0 取整 | math.trunc(x) |
| 隨機:數(shù)字生成 | >>> random.random()?? #浮點數(shù),x in the interval [0, 1) >>> random.getrandbits(16) #a python?long?int with?k?random bits 9213L >>> random.uniform(1,1000) #浮點數(shù)in the range [a, b) or [a, b] 400.88489201157114 >>> random.randint(1,1000) #整數(shù)random integer in range [a, b] 不推薦使用 817 >>> random.randrange(0,1001,2) #整數(shù)from range([start,] stop[, step]) 推薦使用 822 |
| 隨機:序列操作sequences generate random permutation | >>> random.choice([0,1,2,3]) #a random element >>> random.sample(xrange(10000000), 3) #unique random elements >>> random.shuffle(list)? #洗牌,就地shuffle list,無返回值.可選參數(shù)random是一個返回[0.0, 1.0)間浮點數(shù)的無參函數(shù)名,默認(rèn)為random.random. |
| On the real line, there are functions to compute uniform, normal (Gaussian), lognormal, negative exponential, gamma, and beta distributions. For generating distributions of angles, the von Mises distribution is available. | ? |
- 整型int
- 長整型long(無限精度)
- 浮點數(shù)float(雙精度)
- 十進(jìn)制數(shù)/小數(shù)decimal(固定精度浮點數(shù))
- 復(fù)數(shù)complex
- 分?jǐn)?shù)fraction
2 序列【有序】【索引:偏移量】?
| 序列通用型操作 | 內(nèi)置函數(shù)或表達(dá)式 |
| 合并 | ‘+’ 不允許+表達(dá)式中混合數(shù)字和字符串,使用'123'+str(9)或者int('123')+9 |
| 重復(fù) | ‘*’ >>> print '----------------------------------------' >>> print '-'*40 |
| 索引(dictionary使用鍵) | seq[i]=seq[len(seq)-i],i是偏移量 |
| 切片 | seq[i:j:d](步長d=-1表示分片將會從右至左進(jìn)行,實際效果就是反轉(zhuǎn)序列) 將列表片段重新賦值 s[i :j ] = r? 刪除列表中一個片段 del s[i :j ] |
| 求長度(dictionary,set支持) | len(seq) |
| 單個最大/最小值 | max(seq),min(seq) |
| 每項最大/最小值組成的序列 | max(seq[,…]),min(seq[,…]) |
| 迭代協(xié)議 | 列表解析,in成員關(guān)系測試,map內(nèi)置函數(shù)以及sorted,sum,any,all調(diào)用等其他內(nèi)置函數(shù) |
| sum,any,all | sum返回可迭代對象中所有數(shù)字的和,可迭代對象中的任何/全部元素為True,any/all內(nèi)置函數(shù)返回True |
| 排序(dictionary返回鍵的列表,set支持,tuple不支持) | sorted(seq) t = tuple(sorted(list(t)))? 操作sorted(seq)返回對象;方法seq.sort()(tuple不支持)排序后不返回對象 |
| 從屬關(guān)系(dictionary,set支持) | x in seq, x not in seq |
| 迭代 | 遍歷訪問元素:for x in seq: 遍歷訪問元素和索引:for index, item in enumerate(sequence):? 使用range來產(chǎn)生索引:range(2,9,2) >>> range(0,10) 同時遍歷多個序列:zip(L1,L2)/map(None,L1,L2) zip函數(shù)轉(zhuǎn)置二維列表: >>> l = [[1, 2, 3], [4, 5, 6]] >>> zip(*l) [(1, 4), (2, 5), (3, 6)] |
| 列表解析(dictionary,set支持) | 列表解析替代嵌套循環(huán):for循環(huán)和列表解析(通常比對應(yīng)的for循環(huán)運行得更快)都是通用迭代工具,都能工作于遵守迭代協(xié)議的任意對象(可遍歷對象,包括可自逐行讀取的文件) >>> M = [[1,2,3],[4,5,6],[7,8,9]] >>> squares = [x**2 for x in [1,2,3,4,5]] >>> squares [1, 4, 9, 16, 25] 列表解析也可用于元組的轉(zhuǎn)換: >>> T = (1,2,3,4,5) >>> L = [x+20 for x in T] >>> L [21, 22, 23, 24, 25] >>> [line.upper() for line in open('script1.py')] |
| map調(diào)用 | >>> map(str.upper,open('script1.py')) #對可迭代對象每個元素都應(yīng)用一個函數(shù)調(diào)用 |
2.1 字符串string【同構(gòu)】【不可變】
| 字符的有序集合(雖然元素間沒有分隔符) | >>> set('abcde') |
| ‘\0’不會中斷字符串 | >>> s = "a\0b\tc\c"? |
| raw字符串 | r’\temp\spam’ |
| 類型方法 | find(s),isdigit(),isalpha() upper(),lower(),replace(s0,s1),split(‘’),rstrip() |
| 不可變:模擬改變元組 | 1 合并、分片、索引? 3 轉(zhuǎn)化為可變對象 |
| 字符串格式化 | s % type %[(name)][flags][width][.precision]code %[(鍵)][左對齊(-)正負(fù)號(+)補零(0)][整體寬度][.小數(shù)位數(shù)]code 基于元組的格式化:'%s is %d years old' % (name, age) 基于字典的格式化:'%s(age)d %(food)s' % vars() %s 任何對象的字符串表達(dá)(使用str) %r 任何對象的字符串表達(dá)(使用repr) %% 常量% |
| 正則表達(dá)式(使用模式定義字符串) 實現(xiàn)更多搜索,分割,替換 | >>> import re |
| 對象的字符串表達(dá) | str(o):string used by print(user-friendly) 打印(用戶友好) repr(o):as-code string used by echoes 交互式回顯 |
2.2 unicode字符串 【同構(gòu)】【不可變】 u’spam’
| 支持所有的字符串操作 | ? |
2.3 元組tuple【異構(gòu)】【不可變】??? t = (1,2,’3’)
| 不可變 | 元組的不可變性只適用于元組本身的頂層結(jié)構(gòu)而并非其內(nèi)容: >>>T = (1,[2,3],4) >>> T[1] = 'spam' >>> T[1][0] = ‘spam’ >>> T (1, ['spam', 3], 4) |
| 類似“常數(shù)”聲明:提供完整性約束 | 如果在程序中以元組的形式傳遞一個對象的集合,可以確保元組在程序中不會被另一個引用修改,而列表就沒有這樣的保證了。(利于編寫大型程序) 與其他語言中的const概念不同,在Python中其是與對象相結(jié)合的(元組對象本身的不可變性),而不是變量。 |
2.4 列表list【異構(gòu)】【可變】????????? l = [1,2,’3’]
| 可變 | 禁止獲取一個不存在的元素 禁止邊界外的賦值 |
| 陷阱:遍歷并修改列表 | 簡單的for循環(huán)并不能修改列表,和C++中的迭代器用法不一樣 C++(for語句+迭代器)遍歷并修改列表(輸出222) vector<int> vint; vector<int>::iterator i; vint.resize(3,1); for(i = vint.begin(); i != vint.end();++i) *i += 1; for(i = vint.begin(); i != vint.end();++i) cout << *i; Python的for語句(這種foreach概念在C++中是沒有的)不行: |
| 類型方法 | count(x),index(x) append(x),insert(i,x),extend(list) pop(i),remove(x),del L[i],del L[i:j] sort(),reverse() index(x)和remove(x)對匹配對象x的第一個元素進(jìn)行操作,無匹配時異常 |
3 映射【無序】【索引:鍵】
3.1 字典dictionary【異構(gòu)】【可變】 d = {1:’I’,2:’Love’,’3’:'Python’}
| 可變 | 對新的字典的鍵賦值,會創(chuàng)建該鍵?x[key] = value 可以刪除一個鍵值對? 禁止獲取一個不存在的鍵值?x[key] |
| 鍵 | Python的dict實現(xiàn),其實就是一個hash map,因此要求Key是hashable的 鍵為不可變對象:數(shù)字和字符串,只包括(像數(shù)字和字符串這樣的)不可變參數(shù)的元組,才可以作為字典中有效的鍵。大多數(shù)Python對象可以作為鍵;但它們必須是可哈希的對象。 像列表和字典這樣的可變類型,由于它們不是可哈希的,所以不能作為鍵。 也有一些可變對象(很少)是可哈希的。 |
| 唯一 | 一鍵對應(yīng)多個值是不允許的 |
| 獲取元素列表 | keys()返回鍵的列表,values()返回值的列表,items()返回tuples的列表 |
| 獲取元素迭代器 | iteritems(), iterkeys(), 和itervalues()這些函數(shù)與返回列表的對應(yīng)方法相似,只是它們返回惰性賦值的迭代器,所以節(jié)省內(nèi)存。 |
| ? | for k in d: 等價于 for k in d.keys(): |
| '+'有序合并操作失效 | update(x2) 用字典x2中的鍵/值對添加到原字典。重復(fù)鍵所對應(yīng)的原有條目的值將被新鍵所對應(yīng)的值所覆蓋。 |
| 其他類型方法 | get(x[,y]) 返回鍵x對應(yīng)的值。若未找到返回default的值(注意,參數(shù)default的默認(rèn)值為None)。get()方法和鍵查找(key-lookup)操作符( [ ] )相似,不同的是它允許你為不存在的鍵提供默認(rèn)值。如果該鍵不存在,也未給出它的默認(rèn)值,則返回None。此方法比采用鍵查找(key-lookup)更靈活,因為你不必?fù)?dān)心因鍵不存在而引發(fā)異常。 pop(key) ,del d[key] clear() 刪除詞典的所有條目。 |
| 構(gòu)造 | D0 = {'name' = 'Bob', 'age' = 42} D1 = dict(name = 'Bob', age = 42) D2 = dict.fromkeys(seq, val=None) 創(chuàng)建并返回一個新字典,以seq中的元素做該字典的鍵,val做該字典中所有鍵對應(yīng)的初始值(如果不提供此值,則默認(rèn)為None) D3 = dict(zip(keylist,vallist)) |
| 拷貝 | copy() 淺拷貝:返回字典的高層結(jié)構(gòu)的拷貝,但不復(fù)制嵌入結(jié)構(gòu),而復(fù)制那些結(jié)構(gòu)的引用。 copy模塊:copy.copy(x)?copy.deepcopy(x) |
| 避免獲取不存在的字典鍵錯誤 | if d.has_keys(k)(最好使用if k in d)測試 get方法為不存在的鍵提供默認(rèn)值 d.get(key,defaultval) D. get ( "Newton" , "unknown" ) # = ' unknown ' try:XXX except KeyError:XXX 語句捕獲修復(fù)異常等 |
4 擴展
4.1 集合set【無序】【異構(gòu)】【可變】s = set([1,2,’3’]) <=set(t|l|d)
| 差集 | ‘-’ |
| 并集 | ‘|’ |
| 交集 | ‘&’ |
4.2 文件file f = open(‘examples/data.txt’,’w’)
| open參數(shù) | open(name[, mode[, buffering]]) -> file object 文件名: 在Python中,斜杠’/’永遠(yuǎn)都是正確的,即使是在Windows環(huán)境下。所有現(xiàn)代的操作系統(tǒng)(甚至Windows!)使用Unicode編碼方式來存儲文件名和目錄名。 處理模式字符串: 'r', 'w' or 'a' for reading (default),writing or appending. 寫或追加模式下若文件不存在則創(chuàng)建它。 字符串尾部加’b’可以進(jìn)行二進(jìn)制數(shù)據(jù)處理(行末轉(zhuǎn)換關(guān)閉);加‘+’同時為輸入輸出打開;加‘U’實現(xiàn)input file的universal newline support(不能與'w' or '+'同時使用)? 控制輸出緩存,0 代表無緩存(寫入方法調(diào)用時立即傳給外部文件)0 means unbuffered, 1 means line buffered, and larger numbers specify the buffer size. | ||||||
| 文件迭代器 | 從文本文件中讀取文字行的最佳方式是根本不用讀取文件:使用迭代器逐行讀取(讓for循環(huán)在每輪自動調(diào)用next從而前進(jìn)到下一行) for line in open('test.txt'):print line | ||||||
| 常用文件讀操作 |
返回空字符串:文件底部; 返回包含新行符的字符串:空行 | ||||||
| 常用文件寫操作 |
寫入方法不添加行終止符 | ||||||
| 重定向輸出流 | import sys 暫時重定向 log = open('log.txt', 'a') # 2.6 print >> sys.stderr, 'Bad'*8 | ||||||
| ? |
| ||||||
| 字節(jié)字符串 | 從文件讀取的數(shù)據(jù)回到腳本時是一個字符串 寫文件時使用轉(zhuǎn)換工具把對象轉(zhuǎn)化為字符串(print不用) 1 eval能夠吧字符串當(dāng)做可執(zhí)行代碼 >>>eval['[1,2,3]'] [1,2,3] 2 pickle模塊處理一般對象的存儲 >>>import pickle >>>pickle.dump(D,ofie) >>>ofile.close() >>>E = pickle.load(ifile)? 3 struct模塊處理文件中的二進(jìn)制數(shù)據(jù) |
4.3 字節(jié)Byte
4.4 布爾型bool
| 0,'',(),[],{},None | false |
| 'string',>1,<-1 | true |
4.5 其他
關(guān)于內(nèi)置數(shù)據(jù)類型,<<深入 Python 3>>?Chapter 2 內(nèi)置數(shù)據(jù)類型??Chapter 4 字符串?Chapter 11 文件講的很到位,可供拾遺。此外,映射和集合類型也講得很好。
記住,尋求幫助最好的辦法是dir(object)和help(object.method)。
?
5.補充介紹
集合set,十進(jìn)制數(shù)decimal,布爾值bool,占位符None
5.1集合set
set(集合)是非常有用的數(shù)據(jù)類型,可以用來處理集合類型的數(shù)據(jù)。最開始在Python 2.3引入,從Python 2.4開始變?yōu)閮?nèi)置類型(不需導(dǎo)入模塊)。
什么是集合?無序、唯一。如果你想要檢測一個值是否在集合中,sets在這一點非常的高效,比list快多了。
和之前所見的數(shù)據(jù)類型不一樣(和file一樣),沒有特定的常量語法創(chuàng)建set對象,需要使用set的構(gòu)造函數(shù),生成一個set可以從序列(string、list、tuple)甚至映射(dictionary)直接生成。
set支持一般的數(shù)學(xué)集合操作,處理較大的數(shù)據(jù)集合時是很方便的。
>>>X = set("spam") #make 2 sets out of sequences >>>Y = set(['h','a']) ? >>>Y.add('m') #元素唯一性 >>>Y.add('m') >>>X,Y (set(['a','p','s','m']),set(['h','a','m'])) ? >>>X & Y #Intersection 并集 set(['a','m']) ? >>>X | Y #Union 交集 set(['a','p','s','h','m']) ? >>>X - Y #Difference 差集 set(['p','s'])如果直接使用dictionary構(gòu)造,則會取出鍵值作為集合的元素,如果想將字典的值生成集合怎么辦呢?
>>> a = {3:'c',2:'b',1:'a'} >>> print a {1: 'a', 2: 'b', 3: 'c'} >>> print sorted(a) [1, 2, 3] ? >>> b = set(a) >>> print b set([1, 2, 3]) >>> print sorted(b) [1, 2, 3] ? >>> c = set(a.values()) >>> print c set(['a', 'c', 'b']) >>> print sorted(c) ['a', 'b', 'c']?
5.2 布爾型bool
Python2.3引入了明確的布爾數(shù)據(jù)類型bool,其值為True和False,而且True和False是預(yù)先定義的內(nèi)置變量名。在內(nèi)部,內(nèi)置變量名True和False是bool的實例,實際上僅僅是內(nèi)置的int的子類。
True和False的行為和整數(shù)1和0是一樣的,除了他們有特定的邏輯打印形式(bool重新定義了str和repr的字符串格式),也就是說,True僅僅是定制了顯示格式的整數(shù)1,在Python中True+3=4!
?
?
5.3 占位符None
Python長期以為一直支持特殊的占位符對象None:
>>> X = None #None placeholder >>> X >>> print X None ? >>> L = [None]*10 >>> L [None, None, None, None, None, None, None, None, None, None] ? >>> type(L) #Types <type 'list'> >>> type(type(L)) #Even types are objects <type 'type'>?
5.4 十進(jìn)制數(shù)decimal(固定精度浮點數(shù))
首先需要
>>> import decimal?
和普通浮點數(shù)的區(qū)別:
? >>> d = 3.141 >>> d + 1 4.141 >>> d + 1.111111 4.252111 >>> d + 1.1111111 4.2521111000000005 ? >>> d = decimal.Decimal('3.141') >>> d + 1 Decimal('4.141') >>> d + 1.111111 Traceback (most recent call last): File "<console>", line 1, in <module> TypeError: unsupported operand type(s) for +: 'Decimal' and 'float' >>> d + decimal.Decimal('1.1111111') Decimal('4.2521111')更多數(shù)據(jù)結(jié)構(gòu),請查閱官方文檔
http://docs.python.org/2/tutorial/datastructures.html
其他的Python要點
?
| 性能優(yōu)化 | Python中一個主要的原則是:首先為了簡單和可讀性去編寫代碼,在程序運行后,并證明了確實有必要考慮性能后,再考慮該問題(time,timeit,profile模塊)。更多情況是代碼本身就已經(jīng)足夠快了。 |
| 面向?qū)ο?/p> | 基本概念一樣,this由代替self, 而且這個名字不一定要寫成self,任何名字都可以,這也帶來了一個缺點,你必須在形參里面指定,調(diào)用函數(shù)時不用傳遞該參數(shù)。 |
| 存儲器 | cPickle和pickle是叫做存儲器的重要模塊,可以非常方便地將一個對象存儲到一個文件,然后再取存儲從文件中取出來pickle.dump(object, file object),構(gòu)造對象時,pickle.load(file object) [儲存、取存儲] |
| 異常 | raise,except,try...finally |
| 系統(tǒng)庫 | sys模塊和os模塊有很多強大功能,比如說os.system(命令)可用于執(zhí)行shell命令 |
| lambda形式 | lambda語句被用來創(chuàng)建新的函數(shù)對象,并且在運行時返回它們。lambda語句用>來創(chuàng)建函數(shù)對象。本質(zhì)上,lambda需要一個參數(shù),后面僅跟單個表達(dá)式作為函數(shù)體,而表達(dá)式的值被這個新建的函數(shù)返回。 注意,即便是print語句也不能用在lambda形式中,只能使用表達(dá)式。 |
?
Python語句
?
?
?
?
?
?
?
?
?
?
?
random模塊高級用法:
| distributions on the real line: | uniform(self, a, b) |????? Get a random number in the range [a, b) or [a, b]. triangular(self, low=0.0, high=1.0, mode=None) gauss(self, mu, sigma) normalvariate(self, mu, sigma) lognormvariate(self, mu, sigma) expovariate(self, lambd) gammavariate(self, alpha, beta) betavariate(self, alpha, beta) paretovariate(self, alpha) weibullvariate(self, alpha, beta) vonmisesvariate(self, mu, kappa) |
| internal state | seed(self, a=None) setstate(self, state) getstate(self) jumpahead(self, n) |
from: http://www.cnblogs.com/wei-li/archive/2012/04/18/2454647.html 《新程序員》:云原生和全面數(shù)字化實踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀
總結(jié)
以上是生活随笔為你收集整理的Python变量和对象类型速记手册的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: The python debugger调
- 下一篇: Hadoop MapReduce程序的模