當前位置:首頁 » 編程語言 » pythonimport執行

pythonimport執行

發布時間: 2023-01-25 01:19:46

python 執行import導入模塊,到底執行了什麼動作導入了文件嗎

我認為如果用import導入第三方庫的模塊,肯定是導入文件了的。但是你導入的math是內置模塊,已經鏈接到python解釋器內了。
可以被 import 語句導入的模塊共有以下四類:
•使用Python寫的程序( .py文件)
•C或C++擴展(已編譯為共享庫或DLL文件)
•包(包含多個模塊)
•內建模塊(使用C編寫並已鏈接到Python解釋器內)

㈡ python import 路徑問題 新手

以下為純手打,下面給幾個demos:


說明:

moles所在的目錄在python里叫package, 下面是一個名為 IsDir的package(實際上就是一個目錄), package下面有4個moles(A, B, C, D)和一個__init__.py文件,目錄結構如下:

IsDir/
A.pyB.pyC.pyD.py__init__.py

大體來講,有兩種方法可以調用某目錄下(包括遞歸目錄)的moles.


一. __init__.py為空時


1.1以下為調用moleA的代碼:

#!/usr/bin/envpython
fromIsDirimportA
A.say()

輸出:

ThisismoleA!

1.2 如果想調用moleA,B,C,D呢?

方法1.

#!/usr/bin/envpython
fromIsDirimportA
fromIsDirimportB
fromIsDirimportC
fromIsDirimportD
A.say()
B.say()
C.say()
D.say()

方法2.

#!/usr/bin/envpython
importIsDir.A
importIsDir.B
importIsDir.C
importIsDir.D
fromIsDirimport*
A.say()
B.say()
C.say()
D.say()

錯誤示例1:

#!/usr/bin/envpython
importIsDir.A
A.say()

錯誤示例2:

#!/usr/bin/envpython
fromIsDirimport*
A.say()

錯誤的原因:

IsDir/目錄下__init__.py為空時,直接importIsDir.A或者fromIsDirimport*是無效的.

從官方文檔里可以看到,__init__.py 里沒有__all__=[mole1,mole2,...]時,

fromIsDirimport* 只能保證IsDir被imported, 所以此時IsDir里的moles是無法被imported,
此時只有如我上面所寫的代碼所示才能正確執行,否則是錯誤的。官方解釋為:importIsDir.A並無任何意義,只有接著執行fromIsDirimport*後,importIsDir.A語句里的moleA才會被定義,所以完整的調用因改為: 1. import IsDir.A 2. from IsDir import *。

二. __init__.py用all=[...]指定該package下可以被imported進去的mole


__init__.py里寫入如下內容:

%catIsDir/__init__.py
__all__=["A","B"]

然後使用之:

#!/usr/bin/envpython
fromIsDirimport*
A.say()
B.say()

結果:

%pythontest.py
ThisismoleA!
ThisismoleB!

錯誤實例:

#!/usr/bin/envpython
fromIsDirimport*
C.say()

以上示例之所以錯誤,是因為C並沒有在__all__=["A","B"]里制定,由此可見,packageIsDir下面的__init__.py里,__all__=[...]具有隔離moles的作用。


補充:

mole A, B, C,D里我分別只定義了一個method, 例如,以下為mole A的code:

%catIsDir/A.py
defsay():
print"ThisismoleA!"

後記:

謝謝這位同學,回答你的問題感覺很有收獲,順便又把python溫習了一遍。回頭把這些總結貼到我的blog上以上為手寫,望採納,共勉。


=============================================================


老子寫了這么多居然採用了另一個簡陋的答案,mlgb的,枉我熬夜給你答題。這種白痴樓主就不配在這里問問題。

㈢ python 執行import導入模塊,到底執行了什麼動作導入了文件嗎

導入了模塊啊……
簡單說,調用了一些函數,這些函數不必你自己去寫,導入模塊後直接就可以用。

㈣ python裡面,import模塊後,代碼的執行順序

你好!
你這個是相互調用,在a裡面調用b,在b裡面調用a。在Python中是不允許的!

㈤ pythonimport直接被運行怎麼辦

pythonimport直接被運行怎麼辦回答:直接被Python解釋器運行的文件,稱之為程序的 入口文件 ,在Python中,入口文件有且僅有一個

我們經常使用以下語句:

# in main.pyif __name__=='__main__': run()
__name__=='__main__' 這個語句就是檢測當前腳本是否被當作入口文件使用,如果被當做入口文件使用,那麼就運行 if __name__=='__main__': 下面的代碼塊,如果只是當做模塊被其他的模塊 import 進去使用,那就不應該運行這部分代碼塊。

因此,判斷一個文件是否被python解釋器當做入口文件對待,是可以列印腳本的 __name__ 變數的。

# in main.pyprint(__main__)

㈥ 詳解Python中import方法引入模塊

在python用import或者from...import或者from...import...as...來導入相應的模塊,作用和使用方法與C語言的include頭文件類似。其實就是引入某些成熟的函數庫和成熟的方法,避免重復造輪子,提高開發速度。
python的import方法可以引入系統的模塊,也可以引入我們自己寫好的共用模塊,這點和php非常相似,但是它們的具體細節還不是很一樣。因為php是在引入的時候指明引入文件的具體路徑,而python中不能夠寫文件路徑進行引入。
下面總結一下import的幾種情況:
python包含子目錄中的模塊方法比較簡單,關鍵是能夠在sys.path裡面找到通向模塊文件的路徑。
下面將具體介紹幾種常用情況:
(1)主程序與模塊程序在同一目錄下:
如下面程序結構:
`-- src
|-- mod1.py
`-- test1.py
若在程序test1.py中導入模塊mod1, 則直接使用import mod1或from mod1 import *;
(2)主程序所在目錄是模塊所在目錄的父(或祖輩)目錄
如下面程序結構:
`-- src
|-- mod1.py
|-- mod2
| `-- mod2.py
`-- test1.py
若在程序test1.py中導入模塊mod2, 需要在mod2文件夾中建立空文件__init__.py文件(也可以在該文件中自定義輸出模塊介面); 然後使用 from mod2.mod2 import * 或import mod2.mod2.
(3)主程序導入上層目錄中模塊或其他目錄(平級)下的模塊
如下面程序結構:
`-- src
|-- mod1.py
|-- mod2
| `-- mod2.py
|-- sub
| `-- test2.py
`-- test1.py
若在程序test2.py中導入模塊mod1和mod2。首先需要在mod2下建立__init__.py文件(同(2)),src下不必建立該文件。然後調用方式如下:
下面程序執行方式均在程序文件所在目錄下執行,如test2.py是在cd sub;之後執行python test2.py
而test1.py是在cd src;之後執行python test1.py; 不保證在src目錄下執行python sub/test2.py成功。
import sys
sys.path.append("..")
import mod1
import mod2.mod2

㈦ Python 中的import 機制

解釋器 在執行語句時,遵循作用域原則。因為這和作用域有關系, 如果在頂層導入模塊,此時它的作用域是全局的;如果在函數內部導入了模塊,那它的作用域只是局部的 ,不能被其它函數使用。如果其它函數也要用到這個模塊,還需要再次導入比較麻煩。

在用import語句導入模塊時最好按照這樣的順序:

絕對路徑 就是文件的真正存在的路徑,是指從硬碟的根目錄(盤符)開始,進行一級級目錄指向文件。
相對路徑 就是以當前文件為基準進行一級級目錄指向被引用的資源文件。

以下是常用的表示當前目錄和當前目錄的父級目錄的標識符

形如from moleB import ClassB語句,根據Python內部import機制,執行細分步驟:

總結:from moleB import ClassB有兩個過程,先from mole,後import ClassB。

當然將moleA.py語句 from moleB import ClassB改為:import moleB,將在第二次執行moleB.py語句from moleA import ClassA時報錯:ImportError: cannot import name 『classA』

在一個文件下同時有 init .py文件、和其他模塊文件時,該文件夾即看作一個包(package)。包的導入 和模塊導入基本一致,只是導入包時,會執行這個 init .py,而不是模塊中的語句。
而且,如果只是單純地導入包【形如:import xxx】,而包的 init .py中有沒有明確地的其他初始化操作,則:此包下的模塊 是不會被自動導入的。當然該包是會成功導入的,並將包名稱放入當前.py的Local命名空間中。

參考文章:
Python中import機制
Python 3.x可能是史上最詳解的【導入(import)】
在Python中以絕對路徑或者相對路徑導入文件的方法
Python的模塊引用和查找路徑

㈧ "python import pandas

問題原因:import scapy後執行腳本調用scapy模塊中(默認自動加了.py後綴)優先找了當前目錄的man.py,因為兩文件不一樣(一個是我們引入別人寫好的庫文件,一個是我們自己創建的文件),所以就報錯了。

一、如果一個錯誤出現後沒有被捕獲(捕獲是什麼先不管,現在就理解為出現了一個錯誤),它就一直被往上拋,最終將被Python解釋器捕獲。然後就在本該輸出結果的地方列印一大串錯誤信息,然後程序退出。示例代碼如下:

㈨ python 執行import導入模塊,到底執行了什麼動作導入了文件嗎

相當於執行了允許操作,允許你調用那個模塊中的函數。並沒有導入文件。

熱點內容
幻境7腳本 發布:2025-07-20 22:51:25 瀏覽:435
怎麼配置vs2015的環境變數 發布:2025-07-20 22:48:49 瀏覽:56
為什麼開鎖人不建議安裝密碼鎖 發布:2025-07-20 22:41:56 瀏覽:254
phpsocketlisten 發布:2025-07-20 22:39:07 瀏覽:429
絕地求生未來之役要下什麼伺服器 發布:2025-07-20 22:34:26 瀏覽:67
linux對比工具 發布:2025-07-20 22:31:45 瀏覽:750
音樂緩存在什麼文件夾 發布:2025-07-20 22:31:40 瀏覽:818
ftp伺服器怎麼清理 發布:2025-07-20 22:08:26 瀏覽:4
點膠緩存機 發布:2025-07-20 22:06:45 瀏覽:738
手機存儲已損壞 發布:2025-07-20 21:51:00 瀏覽:54