Python中import主要作用和使用場(chǎng)景
一、前言
寫過 Python 的猿猿肯定對(duì) import 不陌生。但 Python 在 import module 時(shí)會(huì)執(zhí)行相關(guān)的代碼,你知道嗎? Python import 還有其他的什么特性呢?通過這一篇文章,徹底掌握 Python import
二、Python import 詳解
2.1 Python import 介紹
在Python中,import
是用于導(dǎo)入模塊和模塊中定義的變量、函數(shù)、類等內(nèi)容的關(guān)鍵字。import
的作用是擴(kuò)展Python的功能,并允許在代碼中使用其他模塊提供的功能。
2.2 Python import 例子
下面是import
的主要作用和使用場(chǎng)景,并給出相應(yīng)的例子:
- 導(dǎo)入模塊:使用
import
可以導(dǎo)入一個(gè)完整的模塊,以便在代碼中使用該模塊中定義的功能。例如:
import math print(math.pi) # 使用math模塊中的常數(shù)pi
- 導(dǎo)入模塊中的特定內(nèi)容:使用
from module import name
語法可以導(dǎo)入模塊中的特定函數(shù)、變量或類,以便直接在代碼中使用,而不需要使用模塊名稱作為前綴。例如:
from math import sqrt print(sqrt(16)) # 直接使用sqrt函數(shù),無需使用math.sqrt
- 給導(dǎo)入的模塊或內(nèi)容起別名:使用
import module as alias
或from module import name as alias
語法可以為導(dǎo)入的模塊或內(nèi)容指定一個(gè)別名,以便在代碼中使用更短的名稱。例如:
import numpy as np print(np.array([1, 2, 3])) # 使用別名np代替numpy
- 導(dǎo)入模塊中的所有內(nèi)容:使用
from module import *
語法可以導(dǎo)入模塊中的所有內(nèi)容,使其在代碼中直接可用。但這種做法通常不被推薦,因?yàn)樗鼤?huì)導(dǎo)致命名沖突和可讀性問題。例如:
from math import * print(sin(pi/2)) # 直接使用導(dǎo)入的sin和pi,但不推薦這種寫法
這些是import
的主要作用和使用場(chǎng)景。通過導(dǎo)入其他模塊,可以擴(kuò)展Python的功能,并重用已有的代碼。使用合適的導(dǎo)入方式和別名,可以使代碼更加簡潔和可讀。
2.3 Python import 進(jìn)一步解釋
2.3.1 Python import module
在Python中,當(dāng)一個(gè)模塊被導(dǎo)入時(shí),模塊中的代碼會(huì)被執(zhí)行。然而,模塊中的代碼只會(huì)在第一次導(dǎo)入時(shí)執(zhí)行一次。之后,如果再次導(dǎo)入同一個(gè)模塊,Python解釋器會(huì)直接使用已經(jīng)加載的模塊,而不會(huì)再次執(zhí)行模塊中的代碼。
這種行為是為了確保**模塊中的代碼只會(huì)被執(zhí)行一次****,以避免重復(fù)執(zhí)行相同的操作。通過導(dǎo)入模塊,我們可以在需要時(shí)使用其中定義的函數(shù)、類和變量,而不必重新執(zhí)行模塊中的代碼。
值得注意的是,如果在模塊中存在全局級(jí)別的可執(zhí)行語句(例如函數(shù)定義以外的代碼),則在導(dǎo)入時(shí)會(huì)執(zhí)行這些語句。因此,模塊的導(dǎo)入可能會(huì)觸發(fā)一些副作用操作,例如打印輸出或初始化全局變量。
比如:創(chuàng)建test1.py
print("我是 test1,我被執(zhí)行了") def say_hello(): print("hello world test1")
再創(chuàng)建 test2.py
def say_hello(): from test import test1 test1.say_hello() if __name__ == '__main__': for i in range(10): say_hello()
執(zhí)行 test2.py 輸出
我是 test1,我被執(zhí)行了
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
hello world test1
2.3.2 Python import package
在Python中,當(dāng)導(dǎo)入一個(gè)包(package)時(shí),包本身不會(huì)被執(zhí)行。只有在使用該包中的模塊或?qū)ο髸r(shí),才會(huì)執(zhí)行相應(yīng)的代碼。
當(dāng)導(dǎo)入一個(gè)包時(shí),Python解釋器會(huì)查找并執(zhí)行該包下的__init__.py
文件。__init__.py
文件可以包含一些初始化代碼,用于設(shè)置包的環(huán)境、導(dǎo)入子模塊或執(zhí)行其他需要在導(dǎo)入時(shí)執(zhí)行的操作。但這些代碼只會(huì)在首次導(dǎo)入包時(shí)執(zhí)行一次。
例如,假設(shè)我們有一個(gè)名為my_package
的包,它的結(jié)構(gòu)如下:
my_package/ __init__.py module1.py module2.py
在__init__.py
文件中,我們可以放置一些初始化代碼:
print("Executing initialization code in my_package") # 導(dǎo)入子模塊 from . import module1 from . import module2
然后,我們可以在另一個(gè)腳本中導(dǎo)入my_package
包:
import my_package print("Import completed")
運(yùn)行上述腳本,輸出如下:
Executing initialization code in my_package
Import completed
從輸出結(jié)果可以看出,在導(dǎo)入my_package
包時(shí),__init__.py
中的初始化代碼被執(zhí)行了一次。然后,Import completed
被打印出來,表示導(dǎo)入完成。
但注意,這里的執(zhí)行是指__init__.py
中的代碼被執(zhí)行,并不是包中的所有模塊都被導(dǎo)入和執(zhí)行。只有在使用my_package
中的具體模塊或?qū)ο髸r(shí),才會(huì)執(zhí)行相應(yīng)的代碼。
總結(jié)起來,當(dāng)導(dǎo)入一個(gè)Python包時(shí),包本身的代碼不會(huì)被執(zhí)行,只有在使用包內(nèi)的模塊或?qū)ο髸r(shí)才會(huì)執(zhí)行相應(yīng)的代碼。 __init__.py
文件中的初始化代碼會(huì)在首次導(dǎo)入包時(shí)執(zhí)行一次,可用于設(shè)置包的環(huán)境和導(dǎo)入子模塊。
三、總結(jié)
介紹了 Python 中 import 關(guān)鍵字的使用方法和工作原理。通過 import ,可以導(dǎo)入模塊和模塊中定義的內(nèi)容,擴(kuò)展 Python 的功能。文章提供了導(dǎo)入模塊、導(dǎo)入模塊中的特定內(nèi)容、給導(dǎo)入的模塊或內(nèi)容起別名以及導(dǎo)入模塊中的所有內(nèi)容的例子,展示了 import 的多種用法。
此外,文章解釋了模塊的代碼只會(huì)在第一次導(dǎo)入時(shí)執(zhí)行一次的特性,以及導(dǎo)入包時(shí)執(zhí)行__init__.py
文件的初始化代碼。最后,總結(jié)了導(dǎo)入包時(shí)只有在使用包內(nèi)的模塊或?qū)ο髸r(shí)才執(zhí)行相應(yīng)代碼,而__init__.py
文件中的初始化代碼只會(huì)在首次導(dǎo)入包時(shí)執(zhí)行一次。
到此這篇關(guān)于Python中import主要作用和使用場(chǎng)景的文章就介紹到這了,更多相關(guān)Python import內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
利用tkinter改變下拉列表(Combobox)的選項(xiàng)值
這篇文章主要介紹了利用tkinter改變下拉列表(Combobox)的選項(xiàng)值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-01-01python中的與時(shí)間相關(guān)的模塊應(yīng)用場(chǎng)景分析
本文介紹了Python中與時(shí)間相關(guān)的幾個(gè)重要模塊:`time`、`datetime`、`calendar`、`timeit`、`pytz`和`dateutil`,并詳細(xì)闡述了每個(gè)模塊的主要功能和使用方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧2024-12-12python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn)
這篇文章主要介紹了python BlockingScheduler定時(shí)任務(wù)及其他方式的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-09-09python3實(shí)現(xiàn)網(wǎng)頁版raspberry pi(樹莓派)小車控制
這篇文章主要為大家詳細(xì)介紹了python3實(shí)現(xiàn)網(wǎng)頁版raspberry pi(樹莓派)小車控制,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-02-02利用Python讀取Excel表內(nèi)容的詳細(xì)過程
python有多種方式可以去讀取excel文檔的內(nèi)容,下面這篇文章主要給大家介紹了利用Python讀取Excel表內(nèi)容的詳細(xì)過程,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-10-10Python簡單格式化時(shí)間的方法【strftime函數(shù)】
這篇文章主要介紹了Python簡單格式化時(shí)間的方法,結(jié)合實(shí)例形式分析了Python使用strftime函數(shù)進(jìn)行時(shí)間格式化的操作技巧,需要的朋友可以參考下2016-09-09