摘要:有絕對路徑引入和相對路徑引入兩種方法。絕對路徑對于相對路徑來說優(yōu)勢為相對路徑取決于當(dāng)前的包,所以在哪里執(zhí)行就會有不一樣的難以預(yù)料的后果。相對引用的符號對應(yīng)的就是的值。如果在函數(shù)中執(zhí)行這個就是而不是上級包名。此時用就能解決。
Import
下面是包的結(jié)構(gòu)
package ├── __init__.py ├── subpackage1 │ ├── __init__.py │ ├── moduleX.py │ └── moduleY.py ├── subpackage2 │ ├── __init__.py │ └── moduleZ.py └── moduleA.py
我們現(xiàn)在在moduleX.py中。
有絕對路徑引入和相對路徑引入兩種方法。相對路徑對于絕對路徑來說優(yōu)勢為: 當(dāng)調(diào)整模塊和包的時候如果是絕對路徑那么需要一個個挨著改。絕對路徑對于相對路徑來說優(yōu)勢為:相對路徑取決于當(dāng)前的包,所以在哪里執(zhí)行就會有不一樣的難以預(yù)料的后果(from . import module error: main is not a package。相對引用的" . "符號對應(yīng)的就是__name__的值。如果在main函數(shù)中執(zhí)行這個" . "就是__main__而不是上級包名。此時用from baoming import module就能解決)。 下面來導(dǎo)入一些包:[A]表示絕對路徑 | [B]表示相對路徑。
導(dǎo)入同一個子包下的 moduleY
[A] from package.subpackage1 import moduleY
[B] from . import moduleY
導(dǎo)入同一個子包下的 moduleY.py中的spam函數(shù)
[A] from package.subpackage1.moduleY import spam
[B] from .moduleY import spam
從兄弟子包下的moduleZ中導(dǎo)入func函數(shù)
[A] from package.subpackage2.moduleZ import func
[B] from ..moduleZ import func
導(dǎo)入父包下的moduleA
[A] from package import moduleA
[B] from .. import moduleA 或from ...package import moduleA
引用中有一個最常見的錯誤就是:循環(huán)引用
A.py from .B import B_greet_back def A_say_hello(): print("A says hello!") B_greet_back() def A_greet_back(): print("A says hello back!") if __name__ == "__main__": A_say_hello() B.py from .A import A_greet_back def B_say_hello(): print("B says hello!") A_greet_back() def B_greet_back(): print("B says hello back!") if __name__ == "__main__": B_say_hello()
此時會有引用錯誤:ImportError: cannot import name "A_greet_back"
[解決辦法]
1.可以引用整個包而不是指定引用包里的函數(shù)
更改 b.py from .A import A_greet_back 為 from . import A
2.延遲引用
B.py def B_say_hello(): from .A import A_greet_back print("B says hello!") A_greet_back() def B_greet_back(): print("B says hello back!") if __name__ == "__main__": B_say_hello()
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/43996.html
引言據(jù)信通院《2022云計算白皮書》報告,國內(nèi)云計算市場達3000億規(guī)模,云計算成為企業(yè)數(shù)字化轉(zhuǎn)型的基礎(chǔ)設(shè)施已是大勢所趨。隨著企業(yè)數(shù)字化轉(zhuǎn)型的逐步深入,業(yè)務(wù)發(fā)展與IT基礎(chǔ)架構(gòu)演進密不可分,如何保障數(shù)據(jù)隱私安全和業(yè)務(wù)連續(xù)性,是 IT 建設(shè)中必須關(guān)注的問題。出于數(shù)據(jù)隱私和安全性考量,私有云解決方案成為構(gòu)建數(shù)字化轉(zhuǎn)型的基礎(chǔ)底座,通過同城雙活及兩地三中心的高可用架構(gòu)保障生產(chǎn)環(huán)境穩(wěn)定性和業(yè)務(wù)過程連續(xù)性;同時...
摘要:坑爹呢,看了一大堆,結(jié)果告訴我不要使用這也只是個建議,因為的確會帶來一些問題,所以網(wǎng)絡(luò)上會有各種抵制的文章,既然設(shè)計了,總有它的有用之處,不能過于絕對。 我們知道,css文件引入方式有兩種: 1. HTML中使用link標(biāo)簽 CSS中@import @import style.css; 第一種方式最為常見最為主流,第二種方式則很少見到有人這么寫,因而也常被開發(fā)工程師所...
摘要:坑爹呢,看了一大堆,結(jié)果告訴我不要使用這也只是個建議,因為的確會帶來一些問題,所以網(wǎng)絡(luò)上會有各種抵制的文章,既然設(shè)計了,總有它的有用之處,不能過于絕對。 我們知道,css文件引入方式有兩種: 1. HTML中使用link標(biāo)簽 CSS中@import @import style.css; 第一種方式最為常見最為主流,第二種方式則很少見到有人這么寫,因而也常被開發(fā)工程師所...
引言據(jù)信通院《2022云計算白皮書》報告,國內(nèi)云計算市場達3000億規(guī)模,云計算成為企業(yè)數(shù)字化轉(zhuǎn)型的基礎(chǔ)設(shè)施已是大勢所趨。隨著企業(yè)數(shù)字化轉(zhuǎn)型的逐步深入,業(yè)務(wù)發(fā)展與IT基礎(chǔ)架構(gòu)演進密不可分,如何保障數(shù)據(jù)隱私安全和業(yè)務(wù)連續(xù)性,是 IT 建設(shè)中必須關(guān)注的問題。出于數(shù)據(jù)隱私和安全性考量,私有云解決方案成為構(gòu)建數(shù)字化轉(zhuǎn)型的基礎(chǔ)底座,通過同城雙活及兩地三中心的高可用架構(gòu)保障生產(chǎn)環(huán)境穩(wěn)定性和業(yè)務(wù)過程連續(xù)性;同時...
摘要:主要介紹各接口和注解的使用方法。創(chuàng)建請求命令命令就是我們之前所說的,他用來封裝具體的依賴服務(wù)調(diào)用邏輯。通過調(diào)用和可以返回對象,如下前者返回的是一個,該命令會在調(diào)用的時候立即執(zhí)行,當(dāng)每次被訂閱的時候都會重放它的行為。表示使用執(zhí)行方式。 主要介紹Hystrix各接口和注解的使用方法。 創(chuàng)建請求命令 Hystrix命令就是我們之前所說的HystrixCommand,他用來封裝具體的依賴服務(wù)調(diào)...
閱讀 1428·2021-11-15 11:38
閱讀 3577·2021-11-09 09:47
閱讀 1976·2021-09-27 13:36
閱讀 3222·2021-09-22 15:17
閱讀 2560·2021-09-13 10:27
閱讀 2871·2019-08-30 15:44
閱讀 1180·2019-08-27 10:53
閱讀 2712·2019-08-26 14:00