在編寫程序的過程中把所有代碼都寫到一個腳本中肯定不便于維護和使用。
python有一種方法可以把定義放在一個腳本里,并在其他腳本或解釋器的交互式實例中使用他們。
這樣的腳本被稱為模塊。
模塊中的定義可以導入到其他模塊中。
案例:
在當前目錄下創建一個名為`fibo.py`的文件,文件內容如下:
```python
# fibo.py
# 斐波那契數列 模塊
def fib(n): # 打印斐波那契數列到數n
a, b = 0, 1
while a < n:
print(a, end=' ')
a, b = b, a+b
print()
def fib2(n): # return Fibonacci series up to n
result = []
a, b = 0, 1
while a < n:
result.append(a)
a, b = b, a+b
return result
```
## 導入模塊
通過關鍵字`import`可以在代碼中導入寫好的模塊,語法如下:
```python
import 模塊名
```
現在,再在當前目錄下創建一個名為`main.py`的文件。然后編寫如下代碼:
```python
# main.py
import fibo
fibo.fib(10)
```
運行后輸出:
```python
0 1 1 2 3 5 8
```
語句`import fibo`會在當前腳本中導入變量`fibo`,它表示模塊`fibo`,然后通過`fibo.fib`就可以訪問模塊`fibo`中定義好的函數,然后執行。
`import`語句有一個變體,它可以把模塊中的名稱(函數,變量,類名)直接導入到當前模塊的變量表里,語法如下:
```python
from 模塊名 import 名稱
```
修改`main.py`文件里的代碼如下:
```python
# main.py
from fibo import fib, fib2
fib2(10)
```
運行后輸出:
```python
[0, 1, 1, 2, 3, 5, 8]
```
語句`from fibo import fib, fib2`,直接將模塊`fibo`中的函數`fib`,`fib2`導入到當前模塊中,所以在后面的代碼中就可以直接通過`fib`,`fib2`訪問模塊`fibo`中對應的函數。
還有一個變體可以導入定義的所有名稱,語法如下:
```python
from 模塊名 import *
```
這會導入模塊中所有非以下劃線開頭的名稱。通常不建議使用這個功能,因為它在解釋器中引入了一組未知的名稱,有可能會覆蓋你之前定義過的東西,也會導致代碼的可讀性差。不過在交互式運行時,為了節省打字可以這么用。
有時,需要導入的定義名稱可能和當前模塊中的定義重名,可以通過下面的變體自定義導入名稱:
```python
import 模塊名稱 as 新名稱
from 模塊名稱 import 名稱 as 新名稱
```
例如:
```python
>>> import fibo as fib
>>> fib.fib(10)
0 1 1 2 3 5 8
>>> from fibo import fib as fibonacci
>>> fibonacci(10)
0 1 1 2 3 5 8
```
- 第1章 編程基礎
- 零基礎能學Python嗎?
- 編程語言是什么
- 編譯型與解釋型編程語言的區別
- python是什么?
- 學python能干什么?
- 第2章 python開發環境搭建
- windows下安裝python
- cmd命令行工具
- 環境變量如何設置?
- 如何運行python程序?
- 學習神器Jupyter lab
- 第3章 基本數據類型
- 基本數據類型概述
- 變量的定義和使用
- 整數類型
- 浮點數類型
- 算術運算符
- 賦值運算符
- 字符串類型
- 字符串常用方法
- 字符串格式化
- 列表類型
- 元組類型
- 可變與不可變類型
- 深淺拷貝
- 集合類型
- 字典類型
- 布爾型
- NoneType
- 第4章 程序流程控制
- 程序結構
- if分支語句
- while條件循環
- for循環
- 循環控制關鍵字
- 異常處理
- 第5章函數與代碼復用
- 函數的定義和調用
- 函數的參數
- 函數的返回值
- lambda函數
- 變量作用域
- python內建函數
- 第6章 面向對象
- 類和對象
- 屬性
- 方法
- 繼承
- super()函數
- 多態
- 私有化
- 自省與反射機制
- 第7章 模塊和包
- 模塊
- 包
- 第三方庫
- 第8章 文件IO操作
- 文件概述
- 字符編碼
- 字節類型
- python讀取文件
- python寫文件
- 文件指針