1.把range全部換成xrange
讓客戶滿意是我們工作的目標,不斷超越客戶的期望值來自于我們對這個行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價值的長期合作伙伴,公司提供的服務項目有:域名申請、網(wǎng)頁空間、營銷軟件、網(wǎng)站建設、樂東黎族網(wǎng)站維護、網(wǎng)站推廣。
2.生成器,如 list=(item for item in fp)
3.利用psyco庫,提高函數(shù)和類的運行效率。
4.字符串拼接:盡量少用“+”的方式,而采用''.join ,還有"%s"%i這樣賦值的手段
5.函數(shù)的開銷很大。盡量把循環(huán)放在函數(shù)內(nèi)進行。而不要讓每次迭代都調(diào)用函數(shù)。
6.“前提工作”先做好,比如該賦值,該拼接的,然后再引入到函數(shù)中,或者進行下面的循環(huán)。
7.盡量使用內(nèi)置方法,因為內(nèi)置的是C寫的,效率肯定高很多
8.每當要對序列中的內(nèi)容進行循環(huán)處理時,就應當嘗試用列表解析來代替它,如:[i for i in xrang(10) if i%2==0]
9.學會使用itertools模塊。當python中添加了迭代器后,就為常見模式提供了一個新的模塊,因為它是以C語言編寫,所以提供了最高效的迭代器。
--多記錄一些。列表,字符串,字典,xrange,類文件對象,這些都是可迭代對象,換句話說,都可以直接用在for循環(huán)中進行迭代,如for item in open('1.txt')
--直接使用速度會快。另外,我對比了itertools里工具和xrange,比如都循環(huán)100000次打印數(shù)字,使用islice(count(),100000)均要比xrange(100000)快
--而xrange還要比range快。
10.用列表解析取代for循環(huán)。列表解析的效率等于或高于map。
11.垃圾回收機制,會對列表的操作有重大影響,如列表的append,或者列表解析。import gc,然后在數(shù)據(jù)載入模塊前gc.disable(),結(jié)束后再gc.enable()。
在python中,變量賦值的語法比較簡單,語法就是 “變量名 = 對象”,由于python屬于動態(tài)語音,所以不需要像c、 java那樣在變量賦值時需要聲明變量的類型。
c 變量賦值
int x = 1;
python 變量賦值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = {"foo": "bar"}
python 變量賦值中,所涉及到的變量命名是有一定規(guī)則的:
1. 變量名只能包含字母、數(shù)字和下劃線。變量名可以字母或下劃線開頭,但不能以數(shù)字開頭,例如,可將變量命名為name_1,但不能將其命名為1_name
2.?變量名不能包含空格,但可使用下劃線來分隔其中的單詞。例如,變量名name_one可行,但變量名name one會引發(fā)錯誤。
3.?不要將Python關(guān)鍵字和函數(shù)名用作變量名,即不要使用Python保留用于特殊用途的單詞,如not、pass等。
4.?變量名應既簡短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 雖說簡短好,但是不能依照自己的意愿隨意簡寫,盡量使用大家約定俗成的簡寫,如果不是還不如寫全拼。
5. python 變量名中大小寫敏感,所以 NAME, Name, name 代表三個不同的表里名, 這里提一下就是慎用小寫字母l和大寫字母O,因給他們可能被人錯看成數(shù)字1和0;
再說變量賦值中賦予給變量的值,python中萬事皆對象,所以python中只要是對象就能給變量賦值。如:
x = 1 # x賦值為數(shù)字1;
x = sum # x賦值為內(nèi)建求和函數(shù)sum;
python的賦值真實上說應該不是賦值,而更像是“引用”,如何理解“引用”呢,python中一直對象的生成是會在內(nèi)存中分配給一個內(nèi)存地址,這個內(nèi)存地址可以使用id()方法去獲取,然后在變量賦值時,將變量直接引用該對象的內(nèi)存地址,進而完成變量賦值,如:
x = 1, 賦值時x直接引用1所在內(nèi)存的地址, y = x, 此時是y直接引用x的所指向的內(nèi)存地址
python中有判斷變量的方法如 is() 和 ==,二者在判斷變量時是有區(qū)別的,is函數(shù)是判斷變量的內(nèi)存地址是否相同,而 == 是判斷變量的值是否相同,舉例說明:
a = 1; b = 1.0
a is b? # False
a == b # True
小心python變量賦值的陷阱
看到上面的所述知道了python變量賦值實則是引用,引用的是對象的內(nèi)存地址。所賦的值可以分兩類,一類是可變的,如列表,字典,集合;一類是不可變的,如字符串、元組。所以當對象為可變類型時就會出現(xiàn)一種情景,我們舉例說明:
x = [1, 2, 3]
y = x
print x == y? ? # True
print x is y? ? # True
print x? ? ?# [1, 2, 3]
print y? ? ?# [1, 2, 3]
y.append(4)
print x? ? # [1, 2, 3, 4]
print y? ? # [1, 2, 3, 4]
可以看到y(tǒng)在進行調(diào)整時(添加了一個元素),x也跟著變動了,這進一步說明了,python中的變量賦值時引用,x,y 賦值時指向了同一處內(nèi)存地址,所以當y變動時,x同樣也發(fā)送了變化,解決這中現(xiàn)象的方法可以是x, y = [1,2,3], [1,2,3]這樣賦值,雖說此時 x==y 是True,但是確實是2個不同的內(nèi)存地址,所以 x is y 則是 False?;蛘呖梢允褂胏opy模塊,實質(zhì)是相同的,創(chuàng)建2個不同的內(nèi)存地址,使其分離。
1. 函數(shù)賦值只是把函數(shù)名賦值給變量,并不是執(zhí)行函數(shù),有無返回值都可以;
例如:a = function
2. 如果把調(diào)用函數(shù)賦值給變量,才是函數(shù)返回值賦值給變量;
如果沒有返回值,賦值變量的值為None;
例如 a = function( params )