import和from...import

import和from...import

通常使用jimport和form...import導入模塊函數

下面以spam.py爲列spa

#spam.py
print('from the spam.py')
money = 1000
def read1():
    print('spam模塊:',money)
def read2():
    print('spam模塊')
    read1()
def change():
    global money
    money = 1

1、import模塊名

# python當作一個手機,pip是應用管家,time就是應用管家裏的一個應用,要用它,import
import time
time.time()

用上面導入模塊time()爲列:code

import 發生的3件事情orm

  1. 在內存中生成一個叫作time的名稱空間.
  2. 運行time.py文件,而後把time.py文件內的名稱空間放入time的名稱空間內.
  3. 把time的名稱空間指向 import和from...impot.py(當前導入time模塊的文件) 的名稱空間中
  4. 使用import time導入的時候使用方法只能 time.方法名() ,不能直接方法名.

模塊的重複導入會直接飲用以前創造好的結果,不會重複執行模塊的文件,即重複導入會發生:spam=spam=模塊名稱空間的內存地址。ip

能夠同時導入多個模塊內存

import time,os,requests
#建議使用下面
import time
import os
import requests

2、form模塊名import具體的功能

from time import gmtime

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

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

導入文件內的全部功能:requests

__all__ = ['money', 'read1']  # 只容許導入'money'和'read1'
form spam import *  # 導入模塊內全部的功能,在函數調用的時候只能調用__all__內的函數和變量名,受到__all__的限制

3、import 和from...import的異同

  1. 相同點
    1. 二者都會執行模塊對應的文件,二者都會產生模塊的名稱空間。
    2. 二者調用功能時,都須要跑到定義時尋找做用域關係,與調用的位置無關。
  2. 不一樣點
    1. import須要加前綴,form...import...不須要加前綴
相關文章
相關標籤/搜索