本文目錄一覽:
- 1、Python筆記:命令行參數解析
- 2、Python筆記–查找以及更改python解析器的位置
- 3、python自學筆記一 基礎輸出
- 4、Python筆記——’utf-8′ codec can’t decode byte 0xc5 in position 0: invalid continuation byte
- 5、Python筆記:Python裝飾器
- 6、Python筆記-取模運算%
Python筆記:命令行參數解析
有些時候我們需要通過命令行將參數傳遞給腳本,C語言中有個getopt()方法,python中也有個類似的命令行參數解析方法getopt()。python也提供了比getopt()更簡潔的argparse方法。另外,sys模塊也可以實現簡單的參數解析,本文將對這3種命令行參數解析方法簡要介紹。
sys.argv是傳入的參數列表,sys.argv[0]是當前python腳本的名稱,sys.argv[1]表示第一個參數,以此類推。
命令行運行:
可以看到傳入的參數通過sys.argv來獲取,它就是一個參數列表。
python的getopt與C語言的的getopt()函數類似。相比於sys模塊,支持長參數和短參數,並對參數解析賦值。但它需要結合sys模塊進行參數解析,語法格式如下:
短參數為單個英文字母,如果必須賦值需要在後面加英文冒號( : ),長參數一般為字符串(相比短參數,更能說明參數含義),如果必須賦值需要在後面加等號( = )。
命令行運行:
注意:短參數(options)和長參數(long_options)不需要一一對應,可以任意順序,也可以只有短參數或者只有長參數。
argparse模塊提供了很多可以設置的參數,例如參數的默認值,幫助消息,參數的數據類型等。argparse類主要包括ArgumentParser、add_argument和parse_args三個方法。
下面介紹這三個函數的使用方法。
argparse默認提供了 -h | –help 參數:
命令行運行:
下面列出部分參數:
下面來添加參數:
命令行運行:
parse_args() 方法用於解析參數,在前面的示例代碼中使用parse_args方法來提取參數值,對於無效或者錯誤的參數會打印錯誤信息和幫助信息:
命令行運行:
本文介紹了Python的三種命令行參數解析方法sys.argv、getopt和argparse,可以根據自己的需要進行選擇,getopt和argparse兩種方法相比來說,建議選擇argparse,代碼量更少更簡潔。更詳細的使用方法參考官方文檔:
–THE END–
Python筆記–查找以及更改python解析器的位置
1.
2.
3.圖中箭頭所指即為python解析器的位置
4.在pychram:file-settings-python interpreter-設置-add-new environment-base interpreter將路徑粘到這裡選擇exe文件-existing environment同理
python自學筆記一 基礎輸出
print(“我是python小白”)
終端輸出:我是python 。
此種寫法只用於了解print函數的作用,在程序中要輸出某個內容,一般採用變量的形式,即:
my=”小白”
print(“我是python%s。” % my)
終端輸出:我是python小白。
此處my為變量,小白是被賦值給變量my,並不是my等於變量。定義變量的好處是一個程序可以無限次數的使用它。定義變量還可以為:
a=b=c=2 #2同時賦值給a b c三個變量
a,b c=1,2,3 #a=1 b=2 c=3
注意:變量名區分大小寫,不能以數字開頭。
name,age,weight=”小白”,18,65.5
stuid=1
print(“我的名字是%s,我的年齡是%d,我的體重是%f公斤,我和學號是%d” % (name,age,weight,stuid))
終端輸出:我的名字是小白,我的年齡是18歲,我的體重是65.500000公斤,我的學號是1
print(“我的名字是%s,我的年齡是%d歲,我的體重是%.2f公斤,我的學號是%03d” %(name,age,weight,stuid))
終端輸出:我的名字是小白,我的年齡是18歲,我的體重是65.50公斤,我的學號是001
printt(f”我的名字是{name},我明年的年齡是{age 1}歲,我的體重是{weight}公斤,我的學號是00{stuid}”)
#此種寫法為最常用的。
終端輸出:我的名字是小白,我明年的年齡是19歲,我的體重是65.5公斤,我的學號是001
%d 為整數型函數值 %03d表示以3位整數顯示,不足的以0替代,超出的原樣顯示。
%f為小數型函數值%.2f表示只顯示小數點後兩位
%s為字符型函數值 字符串應以雙引或單引號括起。
Python筆記——’utf-8′ codec can’t decode byte 0xc5 in position 0: invalid continuation byte
在讀取數據時出現如下
‘utf-8’ codec can’t decode byte 0xc5 in position 0: invalid continuation byte
該報錯說明csv文件不是utf-8編碼形式,有兩種方法可以解決。
一種是改變csv文件的編碼,可以用記事本打開csv文件再將其另存為utf-8編碼形式並覆蓋原文件。
另一種方法是先查看csv文件是什麼編碼,我的csv文件為ANSI編碼,然後再添加參數encoding=’ANSI’。
Python筆記:Python裝飾器
裝飾器是通過裝飾器函數修改原函數的一些功能而不需要修改原函數,在很多場景可以用到它,比如① 執行某個測試用例之前,判斷是否需要登錄或者執行某些特定操作;② 統計某個函數的執行時間;③ 判斷輸入合法性等。合理使用裝飾器可以極大地提高程序的可讀性以及運行效率。本文將介紹Python裝飾器的使用方法。
python裝飾器可以定義如下:
輸出:
python解釋器將test_decorator函數作為參數傳遞給my_decorator函數,並指向了內部函數 wrapper(),內部函數 wrapper() 又會調用原函數 test_decorator(),所以decorator()的執行會先打印’this is wrapper’,然後打印’hello world’, test_decorator()執行完成後,打印 ‘bye’ ,*args和**kwargs,表示接受任意數量和類型的參數。
裝飾器 my_decorator() 把真正需要執行的函數 test_decorator() 包裹在其中,並且改變了它的行為,但是原函數 test_decorator() 不變。
一般使用如下形式使用裝飾器:
@my_decorator就相當於 decorator = my_decorator(test_decorator) 語句。
內置裝飾器@functools.wrap可用於保留原函數的元信息(將原函數的元信息,拷貝到對應的裝飾器函數里)。先來看看沒有使用functools的情況:
輸出:
從上面的輸出可以看出test_decorator() 函數被裝飾以後元信息被wrapper() 函數取代了,可以使用@functools.wrap裝飾器保留原函數的元信息:
輸出:
裝飾器可以接受自定義參數。比如定義一個參數來設置裝飾器內部函數的執行次數:
輸出:
Python 支持多個裝飾器嵌套:
裝飾的過程:
順序從裡到外:
test_decorator(‘hello world’) 執行順序和裝飾的過程相反。
輸出:
類也可以作為裝飾器,類裝飾器主要依賴__call__()方法,是python中所有能被調用的對象具有的內置方法(python魔術方法),每當調用一個類的實例時,__call__()就會被執行一次。
下面的類裝飾器實現統計函數執行次數:
輸出:
下面介紹兩種裝飾器使用場景
統計函數執行所花費的時間
輸出:
在使用某些web服務時,需要先判斷用戶是否登錄,如果沒有登錄就跳轉到登錄頁面或者提示用戶登錄:
–THE END–
Python筆記-取模運算%
對於該算術運算符: % ,取模運算存在如下定理:
對於一個正整數 而言,一定存在等式 ,代表 可以被拆分成最多 個 並且餘下一個 ,此時稱 。
例如:正整數 17,存在等式 17 = 3 * 5 + 2,即 17 % 5 = 2.
這裡介紹一下數學中的一種運算, 取余運算 。
兩者在對正整數的運算中完全沒有區別,但是對於負整數的運算,則會存在一定的區別。
但是要記住下面這句話,就可以很好的進行區分:
取余公式中的k要向0靠攏,也就是如果大於等於0,那就要向下取整;如果小於0,那就要向上取整。
取模公式中的k要向負無窮靠攏,不管什麼情況,都是向下取整。
或者是
向上取整 math.ceil() 可以理解成 要選擇大於等於該數值的整數部分的最小整數;
向下取整 math.floor() 可以理解成 要選擇小於等於該數值的整數部分的最大整數。
也就是:
下面做些實際運算,加深一下印象:
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/157961.html