摘要:有絕對(duì)路徑引入和相對(duì)路徑引入兩種方法。絕對(duì)路徑對(duì)于相對(duì)路徑來說優(yōu)勢(shì)為相對(duì)路徑取決于當(dāng)前的包,所以在哪里執(zhí)行就會(huì)有不一樣的難以預(yù)料的后果。相對(duì)引用的符號(hào)對(duì)應(yīng)的就是的值。如果在函數(shù)中執(zhí)行這個(gè)就是而不是上級(jí)包名。此時(shí)用就能解決。
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中。
有絕對(duì)路徑引入和相對(duì)路徑引入兩種方法。相對(duì)路徑對(duì)于絕對(duì)路徑來說優(yōu)勢(shì)為: 當(dāng)調(diào)整模塊和包的時(shí)候如果是絕對(duì)路徑那么需要一個(gè)個(gè)挨著改。絕對(duì)路徑對(duì)于相對(duì)路徑來說優(yōu)勢(shì)為:相對(duì)路徑取決于當(dāng)前的包,所以在哪里執(zhí)行就會(huì)有不一樣的難以預(yù)料的后果(from . import module error: main is not a package。相對(duì)引用的" . "符號(hào)對(duì)應(yīng)的就是__name__的值。如果在main函數(shù)中執(zhí)行這個(gè)" . "就是__main__而不是上級(jí)包名。此時(shí)用from baoming import module就能解決)。 下面來導(dǎo)入一些包:[A]表示絕對(duì)路徑 | [B]表示相對(duì)路徑。
導(dǎo)入同一個(gè)子包下的 moduleY
[A] from package.subpackage1 import moduleY
[B] from . import moduleY
導(dǎo)入同一個(gè)子包下的 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
引用中有一個(gè)最常見的錯(cuò)誤就是:循環(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()
此時(shí)會(huì)有引用錯(cuò)誤:ImportError: cannot import name "A_greet_back"
[解決辦法]
1.可以引用整個(gè)包而不是指定引用包里的函數(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)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/43996.html
引言據(jù)信通院《2022云計(jì)算白皮書》報(bào)告,國(guó)內(nèi)云計(jì)算市場(chǎng)達(dá)3000億規(guī)模,云計(jì)算成為企業(yè)數(shù)字化轉(zhuǎn)型的基礎(chǔ)設(shè)施已是大勢(shì)所趨。隨著企業(yè)數(shù)字化轉(zhuǎn)型的逐步深入,業(yè)務(wù)發(fā)展與IT基礎(chǔ)架構(gòu)演進(jìn)密不可分,如何保障數(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ù)性;同時(shí)...
摘要:坑爹呢,看了一大堆,結(jié)果告訴我不要使用這也只是個(gè)建議,因?yàn)榈拇_會(huì)帶來一些問題,所以網(wǎng)絡(luò)上會(huì)有各種抵制的文章,既然設(shè)計(jì)了,總有它的有用之處,不能過于絕對(duì)。 我們知道,css文件引入方式有兩種: 1. HTML中使用link標(biāo)簽 CSS中@import @import style.css; 第一種方式最為常見最為主流,第二種方式則很少見到有人這么寫,因而也常被開發(fā)工程師所...
摘要:坑爹呢,看了一大堆,結(jié)果告訴我不要使用這也只是個(gè)建議,因?yàn)榈拇_會(huì)帶來一些問題,所以網(wǎng)絡(luò)上會(huì)有各種抵制的文章,既然設(shè)計(jì)了,總有它的有用之處,不能過于絕對(duì)。 我們知道,css文件引入方式有兩種: 1. HTML中使用link標(biāo)簽 CSS中@import @import style.css; 第一種方式最為常見最為主流,第二種方式則很少見到有人這么寫,因而也常被開發(fā)工程師所...
引言據(jù)信通院《2022云計(jì)算白皮書》報(bào)告,國(guó)內(nèi)云計(jì)算市場(chǎng)達(dá)3000億規(guī)模,云計(jì)算成為企業(yè)數(shù)字化轉(zhuǎn)型的基礎(chǔ)設(shè)施已是大勢(shì)所趨。隨著企業(yè)數(shù)字化轉(zhuǎn)型的逐步深入,業(yè)務(wù)發(fā)展與IT基礎(chǔ)架構(gòu)演進(jìn)密不可分,如何保障數(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ù)性;同時(shí)...
摘要:主要介紹各接口和注解的使用方法。創(chuàng)建請(qǐng)求命令命令就是我們之前所說的,他用來封裝具體的依賴服務(wù)調(diào)用邏輯。通過調(diào)用和可以返回對(duì)象,如下前者返回的是一個(gè),該命令會(huì)在調(diào)用的時(shí)候立即執(zhí)行,當(dāng)每次被訂閱的時(shí)候都會(huì)重放它的行為。表示使用執(zhí)行方式。 主要介紹Hystrix各接口和注解的使用方法。 創(chuàng)建請(qǐng)求命令 Hystrix命令就是我們之前所說的HystrixCommand,他用來封裝具體的依賴服務(wù)調(diào)...
閱讀 1425·2021-11-15 11:38
閱讀 3574·2021-11-09 09:47
閱讀 1972·2021-09-27 13:36
閱讀 3217·2021-09-22 15:17
閱讀 2554·2021-09-13 10:27
閱讀 2868·2019-08-30 15:44
閱讀 1171·2019-08-27 10:53
閱讀 2708·2019-08-26 14:00