簡體   English   中英

導入模塊,導入另一個模塊。蟒蛇

[英]Import module, that import another module. Python

我很好奇當我們導入一個模塊然后導入另一個模塊時會發生什么。 所以我創建了兩個模塊:module1和module2。

模塊1:

import random
print(random.randint(0,10))
print("module1 work")

模塊2:

import module1
print("module2 work")

當我運行module2時,它給我這個輸出:

1
module1 work
module2 work

所以,當我導入module1時,我確定我確實導入了random 但是當我輸入Shell print(random.randint(0,10))它會拋出一個NameError: name 'random' is not defined 所以random未從module1導入。 但是在這種情況下為什么module2打印1 ,並沒有拋出與Shell相同的錯誤?

每個模塊都有自己的范圍(或命名空間,如果您更熟悉該術語)。 如果要從module2訪問random ,則需要在module2導入它。 解釋器共享您執行的模塊的范圍,因此只能訪問在該模塊的全局命名空間中聲明的變量。 如果要從僅導入了module2的解釋器中訪問random ,則需要指定module1.random

或者,您可以使用from module1 import *替換import module1 這將復制所有內容,包括random引用。 所以random可以全球訪問。

這是因為您實際上並未將隨機導入shell,而只是包含模塊的文件。

我們可以使用現有模塊作為示例,例如tkinter打開時:

import enum
import sys

它們會導入到Tkinter模塊中,但是當您導入Tkinter時,它們不會隨附它。

為了把它盡可能簡單的module1已經隨機進口的,但imporing module1不會也導入random

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM