# 1.模塊 ``` import 模塊名 ``` ## 1.1 模塊就是程式 任何python程式都可以作為模塊導入,並標明程式(模塊)的位置 ``` import sys sys.path.append('路徑') ``` ``` import hello // 在同一文件夾下 ``` 會在該文 ...
1.模塊
import 模塊名
1.1 模塊就是程式
任何python程式都可以作為模塊導入,並標明程式(模塊)的位置
import sys
sys.path.append('路徑')
import hello // 在同一文件夾下
會在該文件夾裡面自動生成一個__pycache__
文件夾,包含處理後的文件。(可刪除,無影響)
在hello.py裡面編寫函數
在t13.py裡面調用模塊函數
import hello
hello.hello1()
運行結果
hello
hello!
1.2 模塊屬性
1.2.1 name
檢查模塊是作為程式運行還是被導入到另一個程式
如:在t13文件中,查看name屬性
print(__name__)
> __main__
在t13文件中,查看hello文件的name屬性
print(hello.__name__)
> __hello__
1.2.2 dir
查明模塊包含哪些東西,列出對象的所有屬性(函數,類,變數)
print(dir(模塊名))
import box.shapes as sh
print(dir(sh))
['__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__']
1.2.3 變數__all__
用於指定一個模塊的所有公共介面(方法),只有被__all__
指定的介面,才可以被正確導入。
module.py
__all__ = ['foo', 'bar']
def foo():
print("This is foo!")
def bar():
print("This is bar!")
def baz():
print("This is baz!")
main.py
from module import *
foo()
bar()
baz()
運行main.py結果
This is a foo!
This is bar!
NameError: name 'bar' is not defined
1.2.4 文檔__doc__
查看模塊信息和函數信息
print(range.__doc__)
range(start, stop[, step]) -> range object
Return an object that produces a sequence of integers from start (inclusive)
to stop (exclusive) by step. range(i, j) produces i, i+1, i+2, ..., j-1.
start defaults to 0, and stop is omitted! range(4) produces 0, 1, 2, 3.
These are exactly the valid indices for a list of 4 elements.
When step is given, it specifies the increment (or decrement).
自定義文檔字元串
通過三引號的方式添加
def plus(a, b):
'''This is a plus'''
print(a + b)
print(plus.__doc__)
> This is a plus
1.2.4 獲取模塊路徑__file__
可以獲取當前模塊所在的目錄或文件的絕對路徑。
如main.py
print(__file__)
> d:\M\github\Python\Demo\main.py
還可以使用os.path
模塊的方法對路徑進行處理,例如獲取當前模塊所在目錄的絕對路徑:
import os
module_dir = os.path.dirname(os.path.abspath(__file__))
print(module_dir)
> d:\M\github\Python\Demo
2.包
包可以包含其他模塊,模塊存儲在擴展名為.py的文件中,包則是一個目錄。
包必須包含有__init__.py
文件
在與文件夾box的同級文件下可以導入
import box
import box.shapes
3.一些重要的模塊
3.1 sys
3.2 os
3.3 fileinput
3.4 集合,堆和雙端隊列
3.5 time
3.6 random
3.7 shelve和json
3.8 re
re,即正則表達式模塊