日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python import_Python中import机制

發布時間:2025/3/20 python 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python import_Python中import机制 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Python語言中import的使用很簡單,直接使用import module_name語句導入即可。這里我主要寫一下"import"的本質。

Python官方定義:Python code in one module gains access to the code in another module by the process of importing it.

1.定義:

模塊(module):用來從邏輯(實現一個功能)上組織Python代碼(變量、函數、類),本質就是*.py文件。文件是物理上組織方式"module_name.py",模塊是邏輯上組織方式"module_name"。

包(package):定義了一個由模塊和子包組成的Python應用程序執行環境,本質就是一個有層次的文件目錄結構(必須帶有一個__init__.py文件)。

2.導入方法

#導入一個模塊

importmodel_name#導入多個模塊

importmodule_name1,module_name2#導入模塊中的指定的屬性、方法(不加括號)、類

from moudule_name import moudule_element [as new_name]

方法使用別名時,使用"new_name()"調用函數,文件中可以再定義"module_element()"函數。

3.import本質(路徑搜索和搜索路徑)

moudel_name.py

#-*- coding:utf-8 -*-

print("This is module_name.py")

name= 'Hello'

defhello():print("Hello")

module_test01.py

#-*- coding:utf-8 -*-

importmodule_nameprint("This is module_test01.py")print(type(module_name))print(module_name)

運行結果:

E:\PythonImport>python module_test01.py

Thisismodule_name.py

Thisismodule_test01.py

在導入模塊的時候,模塊所在文件夾會自動生成一個__pycache__\module_name.cpython-35.pyc文件。

"import module_name" 的本質是將"module_name.py"中的全部代碼加載到內存并賦值給與模塊同名的變量寫在當前文件中,這個變量的類型是'module';

module_test02.py

#-*- coding:utf-8 -*-

from module_name importnameprint(name)

運行結果;

E:\PythonImport>python module_test02.py

Thisismodule_name.py

Hello

"from module_name import name" 的本質是導入指定的變量或方法到當前文件中。

package_name / __init__.py

#-*- coding:utf-8 -*-

print("This is package_name.__init__.py")

module_test03.py

#-*- coding:utf-8 -*-

importpackage_nameprint("This is module_test03.py")

運行結果:

E:\PythonImport>python module_test03.py

Thisis package_name.__init__.py

Thisis module_test03.py

"import package_name"導入包的本質就是執行該包下的__init__.py文件,在執行文件后,會在"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文件導入"package_name"中的"hello"模塊

from . importhelloprint("This is package_name.__init__.py")

運行結果:

E:\PythonImport>python module_test03.py

Hello World

Thisis package_name.__init__.py

Thisis module_test03.py

在模塊導入的時候,默認現在當前目錄下查找,然后再在系統中查找。系統查找的范圍是:sys.path下的所有路徑,按順序查找。

4.導入優化

module_test04.py

#-*- coding:utf-8 -*-

importmodule_namedefa():

module_name.hello()print("fun a")defb():

module_name.hello()print("fun b")

a()

b()

運行結果:

E:\PythonImport>python module_test04.py

Thisismodule_name.py

Hello

fun a

Hello

fun b

多個函數需要重復調用同一個模塊的同一個方法,每次調用需要重復查找模塊。所以可以做以下優化:

module_test05.py

#-*- coding:utf-8 -*-

from module_name importhellodefa():

hello()print("fun a")defb():

hello()print("fun b")

a()

b()

運行結果:

E:\PythonImport>python module_test04.py

Thisismodule_name.py

Hello

fun a

Hello

fun b

可以使用"from module_name import hello"進行優化,減少了查找的過程。

5.模塊的分類

內建模塊

可以通過 "dir(__builtins__)" 查看Python中的內建函數

>>> dir(__builtins__)

['ArithmeticError', 'AssertionError', 'AttributeError', 'BaseException', 'BlockingIOError', 'BrokenPipeError', 'BufferError','BytesWarning','ChildProcessError','ConnectionAbortedError','ConnectionError','ConnectionRefusedError','ConnectionResetError','DeprecationWarning','EOFError','Ellipsis','EnvironmentError','Exception','False','FileExistsError','FileNotFoundError','FloatingPointError','FutureWarning','GeneratorExit','IOError','ImportError','ImportWarning','IndentationError','IndexError','InterruptedError','IsADirectoryError','KeyError','KeyboardInterrupt','LookupError','MemoryError','NameError','None','NotADirectoryError','NotImplemented','NotImplementedError','OSError','OverflowError','PendingDeprecationWarning','PermissionError','ProcessLookupError','RecursionError','ReferenceError', 'ResourceWarning', 'RuntimeError', 'RuntimeWarning', 'StopAsyncIteration', 'StopIteration', 'SyntaxError', 'SyntaxWarning','SystemError','SystemExit','TabError','TimeoutError','True','TypeError','UnboundLocalError','UnicodeDecodeError','UnicodeEncodeError','UnicodeError','UnicodeTranslateError','UnicodeWarning','UserWarning','ValueError','Warning','WindowsError','ZeroDivisionError','_','__build_class__','__debug__','__doc__','__import__','__loader__','__name__', '__package__', '__spec__', 'abs', 'all', 'any', 'ascii', 'bin', 'bool', 'bytearray', 'bytes', 'callable', 'chr','classmethod','compile','complex','copyright','credits','delattr','dict','dir','divmod','enumerate','eval','exec','exit','filter','float','format','frozenset','getattr','globals','hasattr','hash','help','hex','id','input','int','isinstance','issubclass','iter','len','license','list','locals','map','max','memoryview','min','next','object','oct','open','ord','pow','print','property','quit','range','repr','reversed','round','set', 'setattr', 'slice', 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'vars', 'zip']

非內建函數需要使用"import"導入。Python中的模塊文件在"安裝路徑\Python\Python35\Lib"目錄下。

第三方模塊

通過"pip install "命令安裝的模塊,以及自己在網站上下載的模塊。一般第三方模塊在"安裝路徑\Python\Python35\Lib\site-packages"目錄下。

自定義模塊

總結

以上是生活随笔為你收集整理的python import_Python中import机制的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。