"import sys" 和 "from sys import *"的區別
import sys
訪問sys包中的方法需要加前綴:
sys.exit()
from sys import *
訪問sys包中的方法不需要加前綴:
exit()
注意
from sys import *
看起來更加方便,但也有弊端,如果以同樣的方式導入了其他的包,而這個包中剛好有和sys包里同名的方法,那么就會有沖突、歧義。
這時候from pkg1 import sub_pkg1, sub_pkg2
就派上用場了。
像訪問包一樣訪問你的文件夾
一個文件夾中包含一個空的__init__.py文件,就可以用.
像訪問包一樣訪問里面的內容(python文件或其中的某一個方法)
例如:
import models.CNN.VGG # 導入VGG.py中的所有方法
from models.CNN.VGG import VGG_16 # 導入VGG.py中的VGG_16方法
理解*args,**kwargs
前綴操作符*
:unpack list or tuple
前綴操作符**
:unpack dictionary
args
:a list or tuple, positional arguments
kwargs
:a dictionary, keyword arguments
參考鏈接1
參考鏈接2
*args, **kwargs其中一個常見的應用(常在源碼中看到)
通過在函數中應用*args, **kwargs,就可以實現一個函數既可以通過關鍵字傳參,也可以直接按順序傳參不寫關鍵字。
例如,在keras函數式API的使用中,下列兩條語句等價:
model = Model(inputs=input_tensor_list, outputs=output_tensor_list)
model = Model(input_tensor_list, output_tensor_list)
yield
- yield(中文意思:產生)
- 通過yield可以讓函數變成一個生成器,每次運行到yield時就會“中斷一次”將yield的值返回出去,然后需要的話再進一步運行函數,生成下一個值。這樣做的好處就是可以減少內存的消耗,使得內存消耗維持在一個常數,特別是在讀取文件等消耗內存難以預料的場景,通過yield相當於可以每次讀取一個固定size的block。
- Python yield 使用淺析
self
- 相當於java里的this,類的實例
- 即,在python的類當中的方法如果有self參數即為實例方法,沒有即為類方法
- 一篇文章讓你徹底搞清楚Python中self的含義