Python:import详解
Python中import機制
Python語言中import的使用很簡單,直接使用import module_name語句導(dǎo)入即可。這里我主要寫一下”import”的本質(zhì)。
Python官方定義:Python code in one module gains access to the code in another module by the process of importing it.
1.定義:
模塊(module):用來從邏輯(實現(xiàn)一個功能)上組織Python代碼(變量、函數(shù)、類),本質(zhì)就是*.py文件。文件是物理上組織方式”module_name.py”,模塊是邏輯上組織方式”module_name”。
包(package):定義了一個由模塊和子包組成的Python應(yīng)用程序執(zhí)行環(huán)境,本質(zhì)就是一個有層次的文件目錄結(jié)構(gòu)(必須帶有一個_init_.py文件)。
2.導(dǎo)入方法
方法使用別名時,使用”new_name()”調(diào)用函數(shù),文件中可以再定義”module_element()”函數(shù)。
3.import本質(zhì)(路徑搜索和搜索路徑)
module_test01.py
# -*- coding:utf-8 -*- import module_nameprint("This is module_test01.py") print(type(module_name)) print(module_name) 運行結(jié)果: E:\PythonImport>python module_test01.py This is module_name.py This is module_test01.py <class 'module'> <module 'module_name' from 'E:\\PythonImport\\module_name.py'>在導(dǎo)入模塊的時候,模塊所在文件夾會自動生成一個pycache\module_name.cpython-35.pyc文件。
“import module_name” 的本質(zhì)是將”module_name.py”中的全部代碼加載到內(nèi)存并賦值給與模塊同名的變量寫在當前文件中,這個變量的類型是’module’;
module_test02.py# -*- coding:utf-8 -*- from module_name import nameprint(name)運行結(jié)果;
E:\PythonImport>python module_test02.py This is module_name.py Hello“from module_name import name” 的本質(zhì)是導(dǎo)入指定的變量或方法到當前文件中。
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")運行結(jié)果:
E:\PythonImport>python module_test03.py This is package_name.__init__.py This is module_test03.py"import package_name"導(dǎo)入包的本質(zhì)就是執(zhí)行該包下的__init__.py文件,在執(zhí)行文件后,會在"package_name"目錄下生成一個"__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 hello print("This is package_name.__init__.py") 運行結(jié)果: E:\PythonImport>python module_test03.py Hello World This is package_name.__init__.py This is module_test03.py在模塊導(dǎo)入的時候,默認現(xiàn)在當前目錄下查找,然后再在系統(tǒng)中查找。系統(tǒng)查找的范圍是:sys.path下的所有路徑,按順序查找。
4.導(dǎo)入優(yōu)化
多個函數(shù)需要重復(fù)調(diào)用同一個模塊的同一個方法,每次調(diào)用需要重復(fù)查找模塊。所以可以做以下優(yōu)化:
module_test05.py # -*- coding:utf-8 -*- from module_name import hello def a():hello()print("fun a")def b():hello()print("fun b")a() b() 運行結(jié)果: E:\PythonImport>python module_test04.py This is module_name.py Hello fun a Hello fun b可以使用”from module_name import hello”進行優(yōu)化,減少了查找的過程。
5.模塊的分類
內(nèi)建模塊
非內(nèi)建函數(shù)需要使用”import”導(dǎo)入。Python中的模塊文件在”安裝路徑\Python\Python35\Lib”目錄下。
第三方模塊
通過”pip install “命令安裝的模塊,以及自己在網(wǎng)站上下載的模塊。一般第三方模塊在”安裝路徑\Python\Python35\Lib\site-packages”目錄下。
自定義模塊
總結(jié)
以上是生活随笔為你收集整理的Python:import详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python学习笔记:Day 6 配置文
- 下一篇: Python学习笔记:Day 7 编写M