import random

系統模塊 sys

  此模塊都是運行時系統的信息

 

  文檔參見:

    pbase/python_base_docs_html/系統模塊sys.html

 

 

 

自定義模塊

  示例見:

    mymod.py  # 自定義模塊

    test_mymod.py  # 導入並測試模塊

 

 

import 語句搜索模塊的路徑順序

  1. 搜索程序運行時的路徑(當前路徑)

  2. sys.path 提供的路徑

  3. 搜索內置模塊

 

 

模塊的加載過程:

  在模塊導入時,模塊所有語句會執行

  如果一個模塊已經被導入,則再次導入時不會重新執行模塊內的語句

 

模塊的重新加載

  import mymod

  import imp

  imp.reload(mymod)  # 在運行時重新加載mymod 模塊

 

模塊被導入和執行的過程:

  1. 先搜索相關路徑找模塊(.py文件)

  2. 判斷是否有此模塊對應的.py文件,如果.pyc文件比.py文件新,則直接加載.pyc文件

  3. 否則用模塊.py 文件生成.pyc並加載執行

 

pyc模塊的編譯 compile

            編譯             解釋執行

  mymod.py -----> mymod.pyc -------> python3

 

 

 

模塊的文檔字符串

  模塊內第一個沒有賦值給任何變量的字符串爲文檔字符串

 

模塊的__doc__屬性:

  用於綁定模塊文檔字符串

 

__file__ 屬性

  綁定模塊對應的文件路徑

 

 

__name__ 屬性

  __name__屬性用來記錄模塊的自身的名字

 

  作用:

    1. 記錄模塊名

    2. 判斷是否爲主模塊

  說明:

    1. 當此模塊作爲主模塊(也就是第一個運行的模塊)運行時,__name__綁定'__main__'

    2. 當此模塊不是主模塊時,__name__綁定模塊名(文件名去掉.py後綴)

 

 

 

模塊的__all__列表

  模塊中的 __all__ 列表是一個用來存放可導出屬性的字符串列表

 

  作用:

    限定當用from xxx import * 語句導入時,只導入 __all__ 列表內的屬性

 

  示例見:

    mymod4.py

 

模塊的隱藏屬性

  模塊中以'_' 開頭的屬性,在from xxx import * 導入時將不被導入,通常稱這些屬性爲隱藏屬性

 

 

 

隨機模塊 random

  作用:

    用於模擬或生成隨機輸出的模塊

 

  文檔參見:

    python_base_docs_html/隨機模塊random.html

 

練習:

  猜數字遊戲:

    隨機生成一個0~100的整數,用變量x綁定

    讓用戶輸入一個數y,輸出猜數字的結果.

       1) 如果y等於x,則提示"恭喜您猜對了!", 退出程序

       2) 如果y大於x,同提示"您猜大了"

       3) 如果y小於x,同提示"您猜小了"

      讓用戶循環輸入,直到猜對爲止,同時顯示用戶猜數字的次數後退出程序

 

 

 

 

包(模塊包) package

  包是將模塊以文件夾的組織形式進行分組管理的方法

 

  作用:

    將一系列模塊進行分類管理,有利於防止訪問命名衝突

    可以在需要時加載一個或部分模塊,而不是全部模塊

 

  包示例:

    mypack/

        __init__.py

        menu.py

        games/

            __init__.py

            contra.py

            supermario.py

            tanks.py

        office/

            __init__.py

            excel.py

            word.py

            powerpoint.py

  創建命令:

    mkdir mypack

    cd mypack

    touch __init__.py menu.py

    mkdir games office

    cd games

    touch __init__.py contra.py supermario.py tanks.py

    cd ../office

    touch __init__.py excel.py word.py powerpoint.py

 

__init__.py 文件

  __init__.py 是常規包內必須存在的文件

  __init__.py 會在包加載時被自動調用

 

  作用:

    編寫此包的內容

    在內部填寫包的文檔字符串

 

包的導入語法:

  # 同模塊的導入規則相同

  import 包名 [as 包別名]

  import 包名.模塊名 [as 模塊新名]

  import 包名.子包名.模塊名 [as 模塊新名]

 

  from 包名 import 模塊名 [as 模塊新名]

  from 包名.子包名 import 模塊名 [as 模塊新名]

  from 包名.子包名.模塊名 import 屬性名[as 屬性新名]

 

  from 包名 import *

  from 包名.子包名 import *

  ...

__init__.py 內的 __all__ 列表

 

  作用:

    用來記錄此包中有哪些包或模塊需要在from import *語句導入時被導入

  說明:

    __all__列表只在from xxx import *語句中起作用

 

包的相對導入

  是指包內模塊的相互導入

 

  語法:

    from 相對路徑包或模塊 import 屬性或模塊

    或

    from 相對路徑包或模塊 import *

  說明:

    包的相對導入不能用於import xxx 語句中

  相對路徑:

    . 代表當前目錄

    .. 代表上一級目錄

    ... 代表上二級目錄

    .... 以此類推

  注: 相對導入時不能超出包的外部

 

 

包的加載路徑:

  同模塊的加載路徑搜索

    1. 搜索當前路徑

    2. 搜索sys.path給定的路徑

 

      

發佈了33 篇原創文章 · 獲贊 0 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章