(1).對是不是模塊,框架,函數等進行類型檢查。html
(2).獲取源碼python
(3).獲取類或函數的參數的信息windows
(4).解析堆棧併發
七、python標準庫:http://python.usyiyi.cn/python_278/library/index.htmlapp
L[ : ] = [min(x, 100) for x in L] 此時的L並無從新綁定一個新的列表,而是修改了原來列表的內容。
multilist = [[0 for col in range(5)] for row in range(3)] multilist2 = [[0] * 5] * 3 雖然上面這個很簡潔,不過會出現共享引用問題,即multilist2[0] == multilist2[1]
2四、 循環import模塊會怎樣?框架
python中循環導入不會怎麼樣,由於每一個模塊被import的時候只會執行一次,而且該模塊的引用會存放在sys.modules中,後面若是再import該模塊時,虛擬機會查看sys.modules是否存在該模塊,若是存在則不導入。看看下面一個例子就一目瞭然了:dom
test.py:函數
1 import sys 2 print 'test module' 3 print 'before import test2', sys.modules.keys() 4 import test2 5 print 'after import test2', sys.modules.keys() 6 if __name__ == 'main': 7 import test
test2.pyui
1 import sys 2 print 'test2 module' 3 print 'before import test', sys.modules.keys() 4 import test 5 print 'after import test', sys.modules.keys()
運行結果:this
1 test module 2 before import test2 ['copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'encodings.gbk', 'abc', '_weakrefset', 'encodings._codecs_cn', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'encodings._multibytecodec', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', '_multibytecodec', 'sys', 'codecs', 'os.path', '_functools', '_codecs_cn', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] 3 test2 module 4 before import test ['test2', 'copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'encodings.gbk', 'abc', '_weakrefset', 'encodings._codecs_cn', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'encodings._multibytecodec', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', '_multibytecodec', 'sys', 'codecs', 'os.path', '_functools', '_codecs_cn', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] 5 test module 6 before import test2 ['test2', 'copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'encodings.gbk', 'abc', '_weakrefset', 'encodings._codecs_cn', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'test', 'encodings._multibytecodec', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', '_multibytecodec', 'sys', 'codecs', 'os.path', '_functools', '_codecs_cn', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] 7 after import test2 ['test2', 'copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'encodings.gbk', 'abc', '_weakrefset', 'encodings._codecs_cn', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'test', 'encodings._multibytecodec', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', '_multibytecodec', 'sys', 'codecs', 'os.path', '_functools', '_codecs_cn', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] 8 after import test ['test2', 'copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'encodings.gbk', 'abc', '_weakrefset', 'encodings._codecs_cn', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'test', 'encodings._multibytecodec', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', '_multibytecodec', 'sys', 'codecs', 'os.path', '_functools', '_codecs_cn', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] 9 after import test2 ['test2', 'copy_reg', 'sre_compile', 'locale', '_sre', 'functools', 'encodings', 'site', '__builtin__', 'sysconfig', 'operator', '__main__', 'types', 'encodings.encodings', 'encodings.gbk', 'abc', '_weakrefset', 'encodings._codecs_cn', 'errno', 'encodings.codecs', 'sre_constants', 're', '_abcoll', 'ntpath', '_codecs', 'test', 'encodings._multibytecodec', 'nt', '_warnings', 'genericpath', 'stat', 'zipimport', 'encodings.__builtin__', 'warnings', 'UserDict', '_multibytecodec', 'sys', 'codecs', 'os.path', '_functools', '_codecs_cn', '_locale', 'signal', 'traceback', 'linecache', 'encodings.aliases', 'exceptions', 'sre_parse', 'os', '_weakref'] 10 [Finished in 0.2s]
從執行結果來看,test先import test2,因爲sys.modules中沒有test2,因此執行test2,並將test2加入sys.modules中;在test2中,import test1,因爲sys.modules中沒有test1,因此執行test1,並將test1加入sys.modules中;執行到import test2時,因爲此時sys.modules中存在了test2,因此不執行test2,等到test1執行完成後回到test2繼續執行;test2繼續執行完成後回到最早的test執行。
2五、pickle對象持久化
pickle用法很簡單,將一個python對象經過dumps序列化爲字符串,若是經過loads將一個str轉化爲一個python對象。具體例子以下:
1 >>> t1 = ('this string', 42, [1, 2, 3]) 2 >>> import pickle 3 >>> p1 = pickle.dumps(t1) 4 >>> p1 5 "(S'this string'\np0\nI42\n(lp1\nI1\naI2\naI3\natp2\n." 6 >>> t2 = pickle.loads(p1) 7 >>> t2 8 ('this string', 42, [1, 2, 3]) 9 >>>
2六、 自定義迭代器
在class中定義__iter__和next函數便可,具體以下:
1 class Iter(object): 2 def __init__(self, owner, start, stop): 3 self.owner = owner 4 self.value = start - 1 5 self.stop = stop 6 def next(self): 7 if self.value == self.stop: 8 raise StopIteration 9 self.value += 1 10 return self.value ** 2 11 12 class Squares(object): 13 14 def __init__(self, start, stop): 15 self.start = start 16 self.stop = stop 17 def __iter__(self): 18 return Iter(self, self.start, self.stop) 19 20 x = Squares(1, 5) 21 for i in x: 22 for j in x: 23 print i, ' ', j
2七、內置函數locals和globals
主要是語句執行的上下文環境。