模塊基礎-02import和from...import

通常使用import和from...import...導入模塊。
如下述spam.py內的文件代碼爲例。python

# spam.py
print('from the spam.py')

money = 1000

def read1():
    print('spam模塊:', money)

def read2():
    print('spam模塊')
    read1()

def change():
    global money
    money = 0

一丶import模塊名

# run.py
import spam  # from the spam.py
import spam

import首次導入模塊發生了3件事:spa

 1.以模塊爲準創造一個模塊的名稱空間
 2.執行模塊對應的文件,將執行過程當中產生的名字都丟到模塊的名稱空間
 3.在當前執行文件中拿到一個模塊名
模塊的重複導入會直接飲用以前創造好的結果,不會重複執行模塊的文件,即重複導入會發生:spam=spam=模塊名稱空間的內存地址code

能夠給導入模塊取別名orm

# run.py
import spam as sm

money = 111111

sm.money
sm.read1()  # 'spam模塊:1000'
sm.read2
sm.change()

print(money)  # 1000

導入多個模塊內存

import spam, time, os

# 推薦使用下述方式
import spam
import time
import os


二丶form模塊名import具體的功能

# run.py

from spam import money

money = 10

print(money)  # 10

from...import...首次導入模塊發生了3件事:作用域

 1.以模塊爲準創造一個模塊的名稱空間
 2.執行模塊對應的文件,將執行過程當中產生的名字都丟到模塊的名稱空間
 3.在當前執行文件的名稱空間中拿到一個名字,該名字直接指向模塊中的某一個名字,意味着能夠不用加任何前綴而直接使用
優勢:不用加前綴,代碼更加精簡
缺點:容易與當前執行文件中名稱空間中的名字衝突
導入文件內全部的功能:form

# spam.py

__all__ = ['money', 'read1']  # 只容許導入'money'和'read1'
# run.py
from spam import *  # 導入spam.py內的全部功能,但會受限制於__all__



三丶impot和from...import...的異同
相同點:class

 1.二者都會執行模塊對應的文件,二者都會產生模塊的名稱空間
 2.二者調用功能時,須要跑到定義時尋找做用域關係,與調用位置無關
不一樣點import

 1.import須要加前綴;from...import...不須要加前綴im

相關文章
相關標籤/搜索