Python知识总结(二)
一、import和reload和__import__
import是一個(gè)關(guān)鍵字,只引入一次
reload是一個(gè)函數(shù),參數(shù)為一個(gè)字符串,它總是會(huì)重新引入
__import__是一個(gè)函數(shù),與import關(guān)鍵字作用一樣,它的好處就是可以動(dòng)態(tài)引入包。因?yàn)閕mport關(guān)鍵字后面只能跟確定的包名,而不能跟字符串參數(shù),__import__可以在程序運(yùn)行時(shí)確定引入哪一個(gè)包
要使用reload函數(shù),需要引入imp包。在python2中,reload是一個(gè)內(nèi)置函數(shù),在python3中移動(dòng)到了imp模塊中
from imp import reload
二、doc string
以下代碼意在告知如下知識(shí)點(diǎn):
- __all__跟dir(模塊名)是一對
- 在模塊開頭、類開頭、函數(shù)開頭,添加注釋,即可使用help(module),help(className),help(functionName)查看doc string,也可以使用module.__doc__,fun.__doc__查看注釋
三、vars 、locals是內(nèi)置函數(shù),用于查看當(dāng)前作用域內(nèi)包含哪些東西
四、類中定義變量是n+1份
class A:cnt = 0def __init__(self):A.cnt += 1self.cnt = A.cnt a = A() print(a.cnt,A.cnt) #1,2 b = A() print(a.cnt,b.cnt,A.cnt) #1,2,2 a.cnt = 10 print(a.cnt,b.cnt,A.cnt) #10,2,2上例中,類A、對象a、對象b中各維持一份cnt
五、staticmethod和classmethod
python中類有三種方法:實(shí)例方法、staticmethod、classmethod
實(shí)例方法第一個(gè)參數(shù)必須是self參數(shù),classmethod第一個(gè)參數(shù)必須是cls參數(shù),staticmethod就跟普通的類外面的函數(shù)沒啥區(qū)別
三種函數(shù)有兩個(gè)調(diào)用主體:類和對象
類和對象都可以隨便調(diào)用這三種方法。
六、異常
try:pass except ZeroDivisionError: # 捕捉一個(gè)錯(cuò)誤pass except (ArithmeticError, FloatingPointError) as e: # 捕捉多個(gè)錯(cuò)誤,as e有沒有都可以pass except: # 捕捉全部異常,也可以寫成except Exception as e以獲取參數(shù)pass else: # 如果沒有異常拋出pass finally: # 不管有沒有異常pass七、動(dòng)態(tài)函數(shù)參數(shù)
Python庫中常見的一種結(jié)構(gòu)是def f(*args, **kargs),運(yùn)行一個(gè)小例子立馬就明白了
""" 用*args,**kargs可以代表一切參數(shù) """def f(*args, **kargs):print(args, kargs)f("one", 1, 2, 3, one=1, two=2)- *args表示全部的不知名字的參數(shù),**kargs表示全部的知道名字的參數(shù)。
- 有名字的參數(shù)后面不能出現(xiàn)沒名字的參數(shù)
- *args會(huì)吃掉全部的沒名字的參數(shù)
- def f(usr,*args,**kargs)這種定義是合法的,usr只會(huì)吃掉第一個(gè)形參,args會(huì)吃掉它遇見的一切沒名字的形參。
總結(jié)
以上是生活随笔為你收集整理的Python知识总结(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ★36句经典英文格言
- 下一篇: 在 C# 中,(int) ,Int32.