本文目錄一覽:
python怎麼引入別的包的類
用 from import 啊,例如:
有一個模塊 a.py ,在a.py中有一個names 的類
# a.py
class names(object):
def __init__(self):
self.name = “zhangsan”
# b.py 在b.py中實例化a.py中的 names 類
from a import names
names() # 直接調用就好了
# 或者使用 import a
a.names() # 這樣調用
python 怎麼引用其他文件的類
在導入文件的時候,Python只搜索當前腳本所在的目錄,載入(entry-point)入口腳本運行目錄和sys.path中包含的路徑例如包的安裝地址。所以如果要在當前腳本引用其他文件,除了將文件放在和腳本同一目錄下,還有以下幾種方法,
1. 將文件所在位置添加到sys.path中
import sys
sys.path.insert(0, ‘/path/to/application/app/folder’) # or sys.path.append(‘/path/to/application/app/folder’)
import file
2. 在文件目錄下新建__init__.py文件然後調用文件
from application.app.folder.file import func_name
init.py文件
a).init.py文件的作用
該文件的主要作用使初始化Python包。如果目錄下面包含了該文件,Python解釋器就會將該目錄當做一個包,下一步就可以使用import語句在別的.py腳本中引用該目錄下的文件。一個標準Python模塊的結構如下所示:
package/
__init__.py
file.py
file2.py
subpackage/
__init__.py
submodule1.py
submodule2.py
b). __init__文件可以為空但可以用來建立對包的需求。一般來說會在該文件中寫那些類,函數等需要被導入到包水平,從而可以被方便的引用。比如:如果file.py文件中有一個File類,在init.py文件中啥都沒寫時引用File類需要這樣操作:
from package.file import File
如果在__init__.py文件中將file導入包,那就在包水平可以直接引用File類:
# in your __init__.py
from file import File
# in your script
from package import File
此外,還需要注意的一點是__init__.py文件中的all變數。如果解釋器在__init__.py文件中觀察到了__all__變數,那麼在運行from package import *時就只會引入__all__變數中列出的那些模塊。例如:如果想在上述結構的只引入submodule1模塊,那麼可以在subpackage/__init__.py文件中定義__all__ = [‘submodule1’],當引用subpackage時from subpackage import *就只引入了submodule1模塊。
3. 將文件所在目錄添加到python的環境變數
export PYTHONPATH=$HOME/pathToYourScripts/:$PYTHONPATH
在vs上怎麼用python將一個程序引入另一個程序
python中調用另一個程序有多種不同方式,一種是調用本文件下的某個函數來實現調用,另一種是調用模塊或包文件下的函數實現調用,還有一種是通過類方法的方式調用類定義的某段程序。
自身函數的調用時相當方便的,在定義好了函數以後直接按定義的格式調用即可,出現的錯誤為參數數量不匹配。通過包或模塊調用相對自身函數調用比較複雜,需要提前導入包或模塊,常用的方法為import或者fromimport,導入成功的前提是對應的包或模塊在python路徑之下,可以通過sys.path(sys為系統內置模塊可以直接使用importsys導入)來查看python路徑。以導入第三方包文件requests為例。通過類方法的調用需要在調用之前,實例化一個類對象,通過這個類對象來調用類方法,注意第三個方法為私有方法,不允許類外部訪問。
python外部包使用說明方式導入?
除了讓包內導入更加顯式,這個功能的一部分設計初衷是,為了幫助腳本解決同名文件出現在模塊搜索路徑上多個不同位置時的二義性。考慮包目錄,這定義了一個名為mypkg 的包,其中含有名為mypkg.main和mypkg.string 的模塊。現在,假設模塊main試圖導入名為string的模塊。在 Python 2.X和更早版本中,Python會先尋找mypkg目錄以執行相對導入。這會找到並導入位於該處的string.py文件,將其賦值給mypkg.main模塊命名空間內的名稱string。不過,這一導入的本意可能是要導入Python標準庫的string模塊。可惜的是,在這些Python版本中,無法直接忽略mypkg.string 去尋找位於模塊搜索路徑更右側的標準庫中的string模塊。此外,我們無法使用完整包導入路徑來解決這個問題,因為我們無法依賴在每台機器上的標準鏈接庫路徑。換句話說,包中的簡單導入可能具有二義性而且容易出錯。在包內,我們無法確定imports pam語句指的是包內的模塊還是包外的模塊。一種可能的後果是,一個局部的模塊或包會在不經意間隱藏了sys.path 上的另一個模塊。在實踐中,Python使用者可以避免為他們自己的模塊重複使用標準庫模塊的名稱(如果需要標準string庫,就不要把新的模塊命名為string)。但是,一個包還是有可能意外地隱藏標準庫模塊。再者,Python 以後可能新增標準庫模塊,而其名稱可能剛好就和自己的一個模塊同名。而依賴於沒有點號開頭相對導入的程序代碼同樣也不容易理解,因為讀者可能對希望使用哪個模塊而感到困惑。所以我們最好能在代碼中顯式地指出導入的解析過程。
原創文章,作者:PMCI,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/147381.html