模塊是一個包含了定義函數和變量的文件, 后綴名是.py。
```
import sys
print('命令行參數')
for i in sys.argv:
print(i)
print('\n\n Python 路徑:\n\n',sys.path, '\n')
```
* import sys 引入標準庫中的sys.py 模塊
* sys.argv 是包含命令行參數的列表
* sys.path 包含了一個 Python 解釋器自動查找所需模塊的路徑的列表
## import 語句
語法:
```
import module1[,module2[, ....]]
```
* 搜索路徑是一個解釋器會先進行搜索的所有目錄的列表。如想要導入模塊 support,需要把命令放在腳本的頂端
* 一個模塊只會被導入一次,不管你執行了多少次import
* 搜索路徑是由一系列目錄名組成的,Python 解釋器就依次從這些目錄中去尋找所引入的模塊。
這看起來很像環境變量,事實上,也可以通過定義環境變量的方式來確定搜索路徑。搜索路徑是在 Python 編譯或安裝的時候確定的,安裝新的庫應該也會修改。搜索路徑被存儲在 sys 模塊中的 path 變量
sys.path 輸出是一個列表,其中第一項是空串 '',代表當前目錄(若是從一個腳本中打印出來的話,可以更清楚地看出是哪個目錄),亦即我們執行python解釋器的目錄(對于腳本的話就是運行的腳本所在的目錄)。
## 模塊定義
mymodule.py
```
def myfunc():
print('This is my function')
```
命令行切換到目錄
python
import mymodule
mymodule.myfunc()
## from ... import
直接把模塊內(函數,變量的)名稱導入到當前操作模塊
這種導入的方法不會把被導入的模塊的名稱放在當前的字符表中
* 從模塊中導入一個指定的部分到當前的命名空間
```
from modname import name1[,name2[,....]]
```
```
from mydodule import myfunc
```
接下來就可以如此執行了
```
myfunc
```
* from ... import *
把一個模塊的所有內容全部導入到當前的命名空間
這將把所有的名字都導入進來,但是那些由單一下劃線(\_)開頭的名字不在此例。大多數情況, Python程序員不使用這種方法,因為引入的其它來源的命名,很可能覆蓋了已有的定義。
## 模塊的導入
模塊除了方法定義,還可以包括可執行的代碼。這些代碼一般用來初始化這個模塊。這些代碼只有在第一次被導入時才會被執行。
每個模塊有各自獨立的符號表,在模塊內部為所有的函數當作全局符號表來使用。
所以,模塊的作者可以放心大膽的在模塊內部使用這些全局變量,而不用擔心把其他用戶的全局變量搞混。
從另一個方面,當你確實知道你在做什么的話,你也可以通過 modname.itemname 這樣的表示法來訪問模塊內的函數。
## 包
包是一種管理 Python 模塊命名空間的形式
比如一個模塊的名稱是 A.B, 那么他表示一個包 A中的子模塊 B 。
在導入一個包的時候,Python 會根據 sys.path 中的目錄來尋找這個包中包含的子目錄。
目錄只有包含一個叫做 __init__.py 的文件才會被認作是一個包,主要是為了避免一些濫俗的名字(比如叫做 string)不小心的影響搜索路徑中的有效模塊。
最簡單的情況,放一個空的 :file:__init__.py就可以了。當然這個文件中也可以包含一些初始化代碼或者為(將在后面介紹的) __all__變量賦值。
- 前言
- 1.入門篇
- Python介紹
- 安裝與使用
- Python開發利器之VS Code
- 模塊安裝
- 命令行
- 一次Python無法安裝模塊的問題探索與解決之旅
- 命令運行
- Conda
- 下載地址
- 2.基礎篇
- 基礎語法
- 輸入與輸出
- with as的用法
- 注釋
- Python命令行參數
- 編碼
- 變量類型
- 列表遍歷
- 運算符
- 表達式語句
- 條件
- 循環
- 日期和時間
- 函數
- 高級語法
- @符號-裝飾器
- 模塊和包
- name
- init.py
- 錯誤和異常
- 面向對象
- 3.專題篇
- 常用功能
- Python 字符串連接
- python web
- Python CGI編程
- Python OAuth2
- 認證 Flask-HTTPAuth
- 常用命令
- 內置函數
- dir()
- print(f)
- 標準模塊
- sys
- pickle-數據序列化
- os
- IO(輸入輸出)
- 鍵盤輸入
- 文件讀寫
- 測試
- Python測試框架之pytest快速入門
- pytest-bdd快速示例和問題解決
- 基于pytest-bdd的項目目錄結構和命名規范
- python BDD 的相關概念
- Behave介紹和快速示例
- Python BDD之Behave測試報告
- Python BDD 框架比較之 pytest-bdd vs behave
- pytest進階
- Flask + pytest測試
- 參考網址
- pytest-bdd進階
- hehave進階
- 測試路徑
- python + selunium
- HTML 根據多層CSS 查找元素
- 等待執行
- 使用text 查找 span
- pytest如何在控制臺輸出
- 4.問題篇
- pip pip3 及區別
- TypeError: can only concatenate str (not "NoneType") to str
- 5.實戰篇
- matplotlib-繪圖包
- 導入類
- 命名規范
- 模塊查找
- 6.進階篇
- Flask
- Flask介紹
- Flask擴展模塊
- Flask-Login
- 問題
- Jinja2
- Flask-RESTful
- Flask-JWT-Extended
- WSGI
- Flask-SQLAlchemy
- 部署
- Flask VS Django
- Flask Web
- Flask + Vue
- Flask實戰
- Flask 標準目錄結構
- Blueprints
- 參考
- FastAPI 測試
- https 證書 Caused by SSLError(SSLCertVerificationError(1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate