Python語(yǔ)言中import的使用很簡(jiǎn)單,直接使用 import module_name 語(yǔ)句導(dǎo)入即可。這里我主要寫(xiě)一下"import"的本質(zhì)。
Python官方
定義:Python code in one module gains access to the code in another module by the process of importing it.
1.定義:
模塊(module):用來(lái)從邏輯(實(shí)現(xiàn)一個(gè)功能)上組織Python代碼(變量、函數(shù)、類),本質(zhì)就是*.py文件。文件是物理上組織方式"module_name.py",模塊是邏輯上組織方式"module_name"。
包(package):定義了一個(gè)由模塊和子包組成的Python應(yīng)用程序執(zhí)行環(huán)境,本質(zhì)就是一個(gè)有層次的文件目錄結(jié)構(gòu)(必須帶有一個(gè)__init__.py文件)。
2.導(dǎo)入方法
# 導(dǎo)入一個(gè)模塊import model_name# 導(dǎo)入多個(gè)模塊import module_name1,module_name2# 導(dǎo)入模塊中的指定的屬性、方法(不加括號(hào))、類from moudule_name import moudule_element [as new_name]
方法使用別名時(shí),使用"new_name()"調(diào)用函數(shù),文件中可以再定義"module_element()"函數(shù)。
3.import本質(zhì)(路徑搜索和搜索路徑)
moudel_name.py
# -*- coding:utf-8 -*-print("This is module_name.py")name = 'Hello'def hello(): print("Hello")module_test01.py# -*- coding:utf-8 -*-import module_nameprint("This is module_test01.py")print(type(module_name))print(module_name)運(yùn)行結(jié)果:
E:/PythonImport>python module_test01.pyThis is module_name.pyThis is module_test01.py<class 'module'><module 'module_name' from 'E://PythonImport//module_name.py'>
在導(dǎo)入模塊的時(shí)候,模塊所在文件夾會(huì)自動(dòng)生成一個(gè)__pycache__/module_name.cpython-35.pyc文件。
"import module_name" 的本質(zhì)是將"module_name.py"中的全部代碼加載到內(nèi)存并賦值給與模塊同名的變量寫(xiě)在當(dāng)前文件中,這個(gè)變量的類型是'module';<module 'module_name' from 'E://PythonImport//module_name.py'>
module_test02.py
# -*- coding:utf-8 -*-from module_name import nameprint(name)
運(yùn)行結(jié)果;
E:/PythonImport>python module_test02.py
This is module_name.py
Hello
"from module_name import name" 的本質(zhì)是導(dǎo)入指定的變量或方法到當(dāng)前文件中。
package_name / __init__.py
# -*- coding:utf-8 -*-print("This is package_name.__init__.py")module_test03.py# -*- coding:utf-8 -*-import package_nameprint("This is module_test03.py")運(yùn)行結(jié)果:
E:/PythonImport>python module_test03.pyThis is package_name.__init__.pyThis is module_test03.py
"import package_name"導(dǎo)入包的本質(zhì)就是執(zhí)行該包下的__init__.py文件,在執(zhí)行文件后,會(huì)在"package_name"目錄下生成一個(gè)"__pycache__ / __init__.cpython-35.pyc" 文件。
package_name / hello.py
# -*- coding:utf-8 -*-print("Hello World")package_name / __init__.py# -*- coding:utf-8 -*-# __init__.py文件導(dǎo)入"package_name"中的"hello"模塊from . import helloprint("This is package_name.__init__.py")
新聞熱點(diǎn)
疑難解答
圖片精選