python的import from 的一些理解

2021-10-05 08:34:22 字數 1901 閱讀 3029

我相信,當大多數人找尋這樣的解釋時,絕不是想簡單的看到為什麼使用import或者from。本文是個人對import和from在底層到底做了什麼的一些見解。

首先定義乙個模組 spam.py

a = 37

def foo():

print(" i'm foo and a is %s " % a)

class spam(object):

def testing(self):

print(" i'm spam.tesing")

然後定義乙個import1_1.py

import spam

print(spam)

print(globals()) #列印當前全域性變數的名稱

, '__builtins__': , '__file__': 'c:/..../import_from/import1.py', '__cached__': none, 'spam': }

import執行步驟:

1: 首先建立乙個新的命名空間,用以存放模板裡定義的所有物件。在spam(模組中)定義的函式和方法在使用global語句時將訪問該命名空間。

2: 其次在新建立的命名空間中執行模組(spam)中所包含的**

3: 最後呼叫函式中名稱來引用模組命名空間,這個名稱與模組的名稱相匹配。

print(spam.a) #呼叫spam模組內的a

print(spam.foo()) #呼叫spam模組內的函式foo()

print(a) #列印當前空間的a

print(globals())

###########

# 37

# i'm foo and a is 37

# 10

#import2.py

import spam

spam.a = 12

if __name__ =='__main__':

pass

main.py

import import2

import import1_2

if __name__ == '__main__':

pass

# 12 #在import2中修改了spam所引用的命名空間中的a的值(大家在嘗試一下修改spam.a = 12 為a = 12)

# i'm foo and a is 12 #在import1_2中呼叫spam所引用命名空間中的函式foo()

# 10 #import1_2中a的值

from1.py

from spam import a 

print(globals())

#

from語句用於將模組中的具體定義載入到當前命名空間。form語句相當於import,但它不會建立乙個名稱來引用新建立的模組命名空間,而是將對模組中定義的乙個或多個物件的引用放到當前命名空間中.

a = 10 #在本命名空間將a指向乙個新的引用

print(a)

# 10

另外還有as 別名的用法,自行探索。

python的包 python的包

1.把解決一類問題的模組放在同乙個資料夾裡,這個資料夾就是包 2.通過import或是from.import匯入時必須遵循乙個原則 a 凡是在匯入時帶點的,點的左邊都必須是乙個包,否則非法 b 匯入後,使用時點的左邊可以是包,模組,類,函式 它們都可以用點的方式調節用自己的屬性 c from.imp...

python的語句 Python的語句

python中的兩種語句 1 if條件控制語句 格式 if a int input 請輸入第乙個數 b int input 請輸入第二個數 if a b print a比b小 if else a int input 請輸入第乙個數 b int input 請輸入第二個數 if a b print a...

Python(四)python的注釋

一 python單行注釋符號 python中單行注釋採用 開頭二 批量 多行注釋符號 多行注釋是用三引號 包含的,例如 三 python中文注釋方法 如果檔案裡有非ascii字元,需要在第一行或第二行指定編碼宣告。把chinesetest.py檔案的編碼重新改為ansi,並加上編碼宣告 一定要在第一...