python模塊是使用
『壹』 python模塊是類嗎
模塊可以理解為就是一個py文件,而類則只是你創建的一個對象而已,一個模塊中可以有多個類
在Python程序中,每個.py文件都可以視為一個模塊,通過在當前.py文件中導入其它.py文件,可以使用被導入文件中定義的內容,例如類、變數、函數等。
Python中的模塊可分為三類,分別是內置模塊、第三方模塊和自定義模塊,相關介紹如下。
(1)內置模塊是Python內置標准庫中的模塊,也是Python的官方模塊,可直接導入程序供開發人員使用。
(2)第三方模塊是由非官方製作發布的、供給大眾使用的Python模塊,在使用之前需要開發人員先自行安裝;
(3)自定義模塊是開發人員在程序編寫的過程中自行編寫的、存放功能性代碼的.py文件。
『貳』 Python系統模塊sys和os使用(一)
sys 與 os 都是大型的模塊,提供了基礎的系統介面,我們先簡單看一下它們各有什麼基礎功能
可見這兩個模塊的碰則屬性列表都是非常長的,以下是一些基礎操作
可以看出split與join是一對功能互異的方法
除此之外,我們也可笑銷棚以使用字元串的 split 以及 join 方法簡單類似實現,例如
注意 os 模塊下的 os.path.normpath 也很好用,可以用來規范一個路徑,用法如下斗悄
os.popen(cmd, mode, buffering)
首次修改與 2019/3/22
『叄』 Python 中隨機數random模塊的常用使用方法介紹
Python中random模塊包含了生成隨機數的常用函數,random模塊不能唯帶孝直接訪問,需要導入random 模指稿塊(import random)。常見的random函數包含如下幾個,( 我使用行譽的是jupyter notebook) 。
https://www.runoob.com/python/func-number-random.html
『肆』 Python函數和模塊的定義與使用,包括變數的類型及匿名函數用法
函數是組織好,可重復使用的,用來實現相關功能的代碼段
函數提高了代碼的重復利用率和應用的模塊性。
除Python自帶的函數之外,也可以自己創建函數,叫做自定義函數
語法:
函數代碼塊以 def 開頭
參數為 輸入值 ,放於函數名後口號裡面,
函數內容以冒號:開始,函數體縮進, return 返回 輸出值
函數調用使用關鍵字參數來確定傳入的參數值,此時,如果多個函數則不需要按照指定順序。
在定義函數時,指定參數默認值。調用時如果不傳入參數,則使用默認值
不定長部分如果沒有指定參數,傳入是一個空元組
加了 兩個星號 ** 的參數會以字典的形式導入
/ 用來指明函數形參必須使用指定位置參數,不能使用關鍵字參數的形式。
3.8版本之後的才能使用
不使用 def 定義函數,沒有函數名
lamdba主體時一個表達式,而不是代碼塊,函數體比def簡單很多
定義在函數內部的為局部變數,僅能在函數內部使用
定義在函數外部的為全局變數,可在全局使用
模塊是將包含所有定義的函數和變數的文件,一般將同類功能的函數組和在一起稱為模塊。
模塊需要導入後,在調用相應函數進行使用
模塊導入的方法:
從模塊中導入一個指定的部分
把一個模塊的所有內容全都導入
『伍』 Python telnetlib模塊使用
telnetlib模塊使用
1、telnet 登錄祥此設備
2、將輸出的信息寫到list裡面
3、讀取毀敗想要的值或接謹余迅口屬性
下面是讀取介面的PVID
『陸』 Python的keyboard模塊使用多線程
在Python的keyboard模塊中,使用了線程來處理鍵盤事件。具體來說,keyboard模塊使用了Python標准庫中的threading模塊來創建線程,以便在後台監視鍵盤事件並在發生事件時調用回調函數。
當你使用keyboard模塊的add_hotkey()函數注冊熱鍵時,模塊會創建一個新的線程來監緩襪視鍵盤事件。當你按下熱鍵時,這個線程會在後台調用你提供的回調函數。
在使擾含激用keyboard模塊時,你不需要顯式地創建或控制線程,模塊會在內部處理線程的創建和管理。如果你需要在程序中使用多線程來老孫完成其他任務,可以通過Python標准庫中的threading模塊來創建新的線程。
需要注意的是,在使用多線程時,需要注意線程之間的同步和互斥,以避免競爭條件和死鎖等問題。建議在使用多線程時仔細閱讀Python官方文檔,並使用線程安全的工具和技術來編寫多線程程序。
『柒』 Python 中 logging 模塊使用詳情
在實際應用中,日誌文件十分重要,通過日誌文件,我們知道程序運行的細節;同時,當程序出問題時,我們也可以通過日誌快速定位問題所在。在我們寫程序時,也可以藉助 logging 模塊的輸出信息來調試代碼。
但是很多人還是在程序中使用print()函數來輸出一些信息,比如:
這樣用的話缺點很明顯,當程序寫好運行時,我們要把這些print()函數刪掉,在簡單的的程序中用還行,當程序比較復雜時,這個辦法很低效。
如果使用 logging 模塊,看看效果
運行結果如下:
你也許會問,這和 print() 函數有什麼區別呢?區別就在於,logging模塊可以通過改變level來控制一些語句是否被輸出,比如當我們把level改成DEBUG級別:
得到輸出如下:
logging 模塊是python自帶的一個包,因此在使用的時候,不必安裝,只需要import即可。有5個level,分別是debug,主要是查看一下程序運行的信息,一般是調試程序要看的信息;info,是我們看程序是否如預料執行的信息;warn,意料之外的,但是不影響程序運行; error 和 critical 就是一些比較嚴重的問題,會影響程序運行。默認leval是warn,這個時候debug級別和info級別就不會被輸出到日誌里了。如果想要看到這些信息,就需要進行一些設置。
我們主要調用 basicConfig(***kwargs*) 這個函數對 logging 進行設置。
常用的參數如下:
我們通過調整format,可以輸出我們想要的格式,比如:
結果是:
這就是在 format 參數中設置了時間的,所以得到了時間,我們可以輸出多種想要的信息
總結:
本文主要介紹了 logging 模塊的基礎用法,除非是自己寫的小腳本中我們使用print()函數,其他情況下最好還是用logging模塊來列印信息,輸出日誌吧。
『捌』 如何使用和製作 Python 安裝模塊
Python模塊的安裝方法:
1. 單文件模塊:直接把文件拷貝到$python_dir/lib
2. 多文件模塊,帶setup.py:python setup.py install
3. egg文件,類似java的jar:
1) 下載ez_setup.py,運行python ez_setup
2) easy_install *.egg
雖然Python的模塊可以拷貝安裝,但是一般情況下推薦製作一個安裝包,即寫一個setup.py文件來安裝。
setup.py文件的使用:
% python setup.py build #編譯
% python setup.py install #安裝
% python setup.py sdist #製作分發包
% python setup.py bdist_wininst #製作windows下的分發包
% python setup.py bdist_rpm
setup.py文件的編寫:
setup.py中主要執行一個 setup函數,該函數中大部分是描述性東西,最主要的是packages參數,列出所有的package,可以用自帶的find_packages來動態獲取羨慎package。所以setup.py文汪派陪困蠢件的編寫實際是很簡單的。
簡單的例子:
setup.py文件:
from setuptools import setup, find_packages
setup(
name="mytest",
version="0.10",
description="My test mole",
author="Robin Hood",
url="",
license="LGPL",
packages= find_packages(),
scripts=["scripts/test.py"],
)
mytest.py文件:
import sys
def get():
return sys.path
scripts/test.py文件:
import os
print os.environ.keys()
setup中的scripts表示將該文件放到 Python的Scripts目錄下,可以直接用。OK,簡單的安裝成功,可以運行所列舉的命令生成安裝包,或者安裝該python包。
本機測試成功(win32-python25)!
『玖』 那些Python中的模塊
Python的解釋環境是很好用,但是如果我們需要編寫一個大型的程序的時候,解釋環境就完全不夠用了。這個時候我們需要將python程序保存在一個文件里。通常這個文件是以.py結尾的。
對於大型的應用程序來說,一個文件可能是不夠的,這個時候我們需要在文件中引用其他的文件,這樣文件就叫做模塊。
模塊是一個包含Python定義和語句的文件。文件名就是模塊名後跟文件後綴 .py 。在模塊內部,模塊名可以通過全局變數 __name__ 獲得。
還是之前的斐波拉赫數列的例子,我們在fibo.py文件中存放了函數的實現:
編寫完畢之後,我們可以在Python的解釋環境中導入它:
然後直接使用即可:
常用的函數,我們可以將其賦值給一個變數:
或者,我們在導入的時候,直接給這個模塊起個名字:
或者導入模塊中的函數:
每個模塊都有它自己的私有符號表,該表用作模塊中定義的所有函數的全局符號表。因此,模塊的作者可以在模塊內使用全局變數,而不必擔心與用戶的全局變數發生意外沖突。
前面我們提到了可以使用import來導入一個模塊,並且 __name__ 中保存的是模塊的名字。
和java中的main方法一樣,如果我們想要在模塊中進行一些測試工作,有沒有類似java中main方法的寫法呢?
先看一個例子:
在模塊中,我們需要進行一個判斷 __name__ 是不是被賦值為 "__main__"。
我們這樣來執行這個模塊:
以腳本執行的情況下,模塊的 __name__ 屬性會被賦值為 __main__ , 這也是例子中為什麼要這樣寫的原因。
看下執行效果:
如果是以模塊導入的話,那麼將不會被執行:
使用import導入模塊的時候,解釋器首先會去找該名字的內置模塊,如果沒找到的話,解釋器會從 sys.path變數給出的目錄列表裡尋找。
sys.path的初始目錄包括:
要想查看模塊中定義的內容,可以使用dir函數。
上面的例子列出了當前模塊中定義的內容,包括變數,模塊,函數等。
我們可以給dir加上參數,來獲取特定模塊的內容:
java中有package的概念,用來隔離程序代碼。同樣的在Python中也有包。
我們看一個Python中包的例子:
上面我們定義了4個包,分別是sound,sound.formats, sound.effects, sound.filters。
__init__.py 可以是一個空文件,也可以執行包的初始化代碼或設置 __all__ 變數。
當導入的時候, python就會在 sys.path 路徑中搜索該包。
包的導入有很多種方式,我們可以導入單個模塊:
但是這樣導入之後,使用的時候必須載入全名:
如果不想載入全名,可以這樣導入:
那麼就可以這樣使用了:
還可以直接導入模塊中的方法:
然後這樣使用:
如果一個包裡面的子包比較多,我們可能會希望使用 * 來一次性導入:
那麼如何去控制到底會導入effects的哪一個子包呢?
我們可以在 __init__.py 中定義一個名叫 __all__ 的列表,在這個列表中列出將要導出的子包名,如下所示:
這樣from sound.effects import * 將導入 sound 包的三個命名子模塊。
如果沒有定義 __all__,from sound.effects import * 語句 不會 從包 sound.effects 中導入所有子模塊到當前命名空間;它只會導入包 sound.effects。
Import 可以指定相對路徑,我們使用 . 來表示當前包, 使用 .. 來表示父包。
如下所示:
『拾』 【Python】xlrd模塊使用
python操作excel主要用到xlrd和xlwt這兩個庫,即xlrd是讀excel,xlwt是寫excel的庫
安裝:pip install xlrd
導入局信:import xlrd
打開excel文件:xlrd.open_workbook(filename)
如果路徑或者文件名中有中文的話,加桐蔽輪上r即可: xlrd.open_workbook(r"filename")
獲取所有sheet名:sheet_names( )。將所有的sheet名存放到數組中輸出
根據sheet索引或者名稱獲取每張sheet表裡的數據內容:sheet_by_index( 索引值 )、sheet_by_name("sheetname")。
excel里的索引值都從0開始
這倆輸出結果是一致的
獲取指定sheet頁的名稱、行數、列數
獲取整行的值:row_values( 索引值 ) 並帆 獲取整列的值:col_values( 索引值 ) ——> 都以數組形式返回數據
此處注意,我們輸出結果裡面數字是保留了一位小數的,那如果我們想直接輸出整數如何處理呢?網路了好久都需要自己寫個函數轉一下,能更改excel里的數據格式直接讀出來就是int型嗎?而且我發現,如果直接讀取那個數據其實是int型,但是寫入數組里就變成浮點型了,誰能告知一下
獲取單元格對象:cell( 行的索引值,列的索引值 )
獲取單元格值的數據類型:cell( 行的索引值,列的索引值 ).ctype
ctype返回值對應的數據類型是: 0 - empty, 1 - string, 2 - number, 3 - date, 4 - boolean, 5 - error
獲取某個單元格的值:cell_value( 行的索引值,列的索引值 )/cell( 行的索引值,列的索引值 ).value/row( 行的索引值 )[ 列的索引值 ].value