python的交換元素的方法非常簡單,一般的程式設計語言中需要使用temporary variables,但是python中不需要
>>> a = 1
>>> b =2
>>> c =3
>>> a,b,c = c ,b,a
>>> a
3
>>> b
2
>>> c
1
>>>
- construct a dictionary without excessive quoting
>>> def makedic(**dic):
return dic
>>> data = makedic(red = 1, black = 2, blue = 3)
編寫了一個module check.py用來檢查一個字典中是否有某個索引。檔案如下:
check.py
def check(key, **dic):
if dic.has_key(key):
print dic[key]
else:
print 'not found'
現在我想調用這個函數了,先定義了一個字典:
>>> def makedic(**k):
return k
>>> data = makedic(red=1,green=2,blue=3)
>>> data
{'blue': 3, 'green': 2, 'red': 1}
然後import check這個module,運行check函數:
>>> import check
>>> check('green',**data)
Traceback (most recent call last):
File "<pyshell#89>", line 1, in <module>
check('green',**data)
TypeError: 'module' object is not callable
報錯,提示module object is not callable,要解決這個問題記住匯入的module不想直接在檔案中定義的函數一樣可以直接使用,需要在module object中使用:
>>> check.check('green',**data)
2
>>> check.check('black',**data)
not found
這樣就可以得到正確的運行結果了。
或者直接將check匯入,使用語句 from check import *(*表示將check中的所有函數,variable匯入)
通過if __name__ == '__main__': 可以判斷一個module是自己在運行 還是被import了運行
另外值得一提的是,python有一種更加簡單的方法檢查索引是否在字典中:
print data.get(‘green’,’not found ’) 即可
有個檔案a.txt,裡麵包含了發散的數字,中間至少有空格,也有空行。如何提取這些數字呢?python用兩句話可以解決這個問題
>>> f = open('a.txt','r')
>>> n = f.read().split()
>>> n
['123', '345', '123', '456', '123', '33', '1', '12', '12', '23', '456']
- how to run python module in command window?
script.py是這樣一個檔案,如何在cmd中運行?
import sys, math # load system and math module
r = float(sys.argv[1]) # extract the 1st command-line argument
s = math.sin(r)
print "Hello, World! sin(" + str(r) + ")=" + str(s)
方法是:開啟script.py所在目錄,輸入 script.py 1.4
輸出是:Hello, World! sin(1.4)=0.985449729988
type(…)
dir(…)
help(…)
在python中複製list時,一定要注意複製方法。如果僅僅將一個list的name賦給另外一個list,那麼得到的list和原list指向同一塊記憶體。會造成無法預料的後果。
例如:
>>> a = [1,2,3]
>>> b = a
>>> del a[0]
>>> a
[2, 3]
>>> b
[2, 3]
>>> a=[1,2,3]
>>> b=a[:] ##推薦用這種方法進行複製
>>> del a[0]
>>> a
[2, 3]
>>> b
[1, 2, 3]