python 備忘


"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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM