Python-模塊


Python-模塊

image

1、前言

在python中,一個py文件就是一個模塊,可以作為模塊被導入和引用,在python中使用模塊會使得程序結構更加清晰,維護起來也更加方便。每次編程定義的變量,函數隨着py文件的關閉就會被內存釋放,現在通過把這些方法放在py文件中可以通過導入的方式調用,極大的提升了程序的效率!

2、模塊詳細

  • 定義:模塊就是一系列功能的結合體

  • 模塊的分類:

    • 內置模塊
    • 第三方模塊
    • 自定義模塊
  • 模塊的四種表現形式:

    • 使用python編寫的代碼(.py文件)
    • 已被編譯為共享庫或DLL的C或C++擴展
    • 包好一組模塊的包(文件夾)(包里面通常有一個雙下init.py文件)
    • 使用C編寫並鏈接到python解釋器的內置模塊

3、import句式

  • 想導入py文件,只需要使用import語句即可

  • 格式:import 模塊名


1、內置模塊

image

內置模塊導入示例

'''導入內置模塊'''
import time
time.sleep(1) # 一秒后執行print
print('累了,睡1秒')
# 結果
# 累了,睡1秒

2、自定義模塊

image

自定義模塊示例:

'''導入自定義模塊'''
'''test.py'''
print('聽說你想導入我?')
a = 1
b = 2
'''module.py'''
# 導入自定義模塊
import test
if test.a>test.b:
    print('用導入模塊的值來比較,a大')
else:
    print('用導入模塊的值來比較,b大')
    
# 結果
# 聽說你想導入我?
# 用導入模塊的值來比較,b大

'''module.py'''
# 導入自定義模塊
import test
import test
import test
import test

# 結果
# 聽說你想導入我?

注意:多次導入相同模塊,只會執行一次


3、第三方模塊

image

第三方模塊示例:

python內的第三方模塊,需要下載,只要找到想下載的模塊,通過pip即可安裝,在pycharm安裝也非常方便,另外給大家推薦Anaconda,下載好好多第三方模塊不需要下載。

  • pip安裝命令:pip install 包名/模塊名

  • pycharm安裝步驟:

    • Settings>>Project>>Python interpreter
    • image

因為我使用的是pycharm,給大家舉個栗子:

'''使用第三方模塊'''
'''使用第三方模塊'''
import requests
url = 'https://www.baidu.com/'
res = requests.get(url)
print(res.status_code)
print(res.text)
# 結果大家自己動動手叭~

4、import底層原理

  • import語句導入模塊之后,通過模塊點的方式就可以使用到模塊中所有的名字,並且肯定不會產生沖突!

示例如下:

image


image

  • 首次導入模塊發生的事:
    • 運行導入文件(import句式.py)產生該文件的全局名稱空
    • 運行test.py文件
    • 產生test.py全局名稱空間 運行test文件內代碼 將產生的名字全部存檔於test.py名稱空間
    • 在導入文件名稱空間產生一個test的名字指向test.py全局名稱空間
  • 圖示如下:
    image

4、from /import句式

image

  • from/import語句與import大致一樣,使用from/import句式可以直接引用被導入文件中的名字使用

test.py文件上面定義好了,實例如下:

'''module.py'''
# 導入自定義模塊
from test import a

print(a)
a = a+1
print(a)
# 結果
聽說你想導入我?
1
2
'''顯然module.py中沒有a,a被導入到當前名稱空間,可以直接使用,也可以對a進行修改'''
  • from/import語句支持將文件所有名字導入
  • 格式:from 模塊名(文件名)import *
'''module.py'''
# 導入自定義模塊
from test import *

print(a,b)

#結果
聽說你想導入我?
1 2

導入模塊的擴展用法

  1. 起名

    既可以給模塊名起別名也可以給模塊中某個名字起別名

    實例如下:

    import test as t
    print(t.a)
    
    from test import a as A
    print(A)
    # a的結果都為1
    
  2. 連續導入

    • 格式:import 模塊1,模塊2
    • 格式2:from 模塊名1 import 名字1,名字2,名字3
    • 可以連續導入多個模塊,但是只有當多個模塊功能相似或者屬於同一個系列
    • 如果功能不同並且不屬於一個系列 那么推薦分行導入
    • import 模塊名1
      import 模塊名2
  3. 通用導入

    格式:__ all __ = [‘名稱1’ , ‘名稱2’]

    實例如下:

    '''test.py'''
    print('聽說你想導入我?')
    a = 1
    b = 2
    
    # 只允許使用名稱a
    __all__ = ['a']
    
    
    # 如果導入所有名稱,只能使用a,使用其他名稱報錯
    '''module.py'''
    # 導入自定義模塊
    from test import *
    print(a,b)
    # NameError: name 'b' is not defined
    

5、模塊導入的順序

  1. 先從內存中查找
  2. 再去內置模塊中查找
  3. 最后去sys.path系統路徑查找(自定義模塊)
  4. 最后如果沒有查找到則報錯

實例如下:

import sys
print(sys.path)  
'''結果中第一個元素永遠是當前執行文件所在的路徑'''


當某個自定義模塊查找不到的時候解決方案
	1.自己手動將該模塊所在的路徑添加到sys.path中
    	import sys
        sys.path.append(r'E:\fourth\test.py')
    2.from...import...句式
    	from 文件夾名稱.文件夾名稱 import 模塊名
        from 文件夾名稱.模塊名稱 import 名字

6、補充知識

判斷文件類型:

if __ name __ = ‘__ main __’: //后期會出一篇有關的教程

作用為判斷py文件是否作為模塊文件還是執行文件

循環導入

  • 如果在編程的時候有循環導入的情況,說明程序設計的不合理。

例如:


image

修改方法:

  • 調整順序:
    image

  • 調用函數

image


絕對導入與相對導入

在程序中涉及到多個文件之間導入模塊的情況,一律按照執行文件所在的路徑為准

  • 絕對導入

始終按照執行文件所在的sys.path查找模塊

  • 相對導入

句點符 .
.表示當前文件路徑
..表示上一層文件路徑

注意!!!

  1. 相對導入能夠打破以執行文件為准的規則,只考慮兩個文件之間的位置
  2. 相對導入只能用在模塊文件中,不能在執行文件中使用

注意,在自定義模塊名的時候,不要和內置模塊名相同!


image



免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM