最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于Python參數(shù)解析器argparse的應(yīng)用場景

 更新時(shí)間:2023年08月03日 11:34:38   作者:Taylor不想被展開  
這篇文章主要介紹了關(guān)于Python參數(shù)解析器argparse的應(yīng)用場景,argparse 模塊使編寫用戶友好的命令行界面變得容易,程序定義了所需的參數(shù),而 argparse 將找出如何從 sys.argv 中解析這些參數(shù),需要的朋友可以參考下

一、什么是argparse

argparse 是一個(gè)用來解析命令行參數(shù)的 Python 庫,它是 Python 標(biāo)準(zhǔn)庫的一部分。

argparse 模塊使編寫用戶友好的命令行界面變得容易。

程序定義了所需的參數(shù),而 argparse 將找出如何從 sys.argv 中解析這些參數(shù)。

argparse 模塊還會(huì)自動(dòng)生成幫助和使用消息,并在用戶為程序提供無效參數(shù)時(shí)發(fā)出錯(cuò)誤。

簡而言之,就是匯總函數(shù)接口,方便傳參。

二、argparse的使用場景

在深度學(xué)習(xí)代碼中,特別是在train.py或test.py中,argparse最常被使用。

因?yàn)樵谶@些文件中,通常要對其他.py文件中定義的class或function進(jìn)行調(diào)用,因此必然要傳入大量的參數(shù),如果不對這些參數(shù)進(jìn)行集中編寫,那么在冗長的代碼中去找參數(shù)的定義位置或傳參的位置將會(huì)十分麻煩。

argparse為用戶提供了集中編寫所需參數(shù)的機(jī)會(huì),下面的使用教程中我會(huì)結(jié)合簡單而具體的例子進(jìn)行說明。

三、argparse的使用流程

1.創(chuàng)建一個(gè)解析器

即創(chuàng)建 ArgumentParser() 對象

parser = argparse.ArgumentParser(description='test')

description:大多數(shù)對 ArgumentParser 構(gòu)造方法的調(diào)用都會(huì)使用 description= 關(guān)鍵字參數(shù)。

這個(gè)參數(shù)簡要描述這個(gè)程度做什么以及怎么做。

在幫助消息中,這個(gè)描述會(huì)顯示在命令行用法字符串和各種參數(shù)的幫助消息之間。

2.添加參數(shù)

即調(diào)用 add_argument() 方法添加參數(shù)

parser.add_argument('--binary', action='store_true', default=False, help='action=store_true表示默認(rèn)為False,當(dāng)在命令行中使用--binary時(shí)自動(dòng)變?yōu)門rue')
parser.add_argument('--number', type=int, default=6, help='普通數(shù)據(jù),type可指定類型.')
parser.add_argument('--epochs', type=int, default=300, help='Number of epochs to train.')

這里說一下如何定義參數(shù)的格式,可以暫時(shí)略過不看,粗體部分為比較常用的參數(shù),其實(shí)每個(gè)都很常用:

ArgumentParser.add_argument(name or flags...[, action][, nargs][, const][, default][, type][, choices][, required][, help][, metavar][, dest])

各個(gè)參數(shù)解釋如下:

  • name or flags:選項(xiàng)字符串的名字或者列表,例如 foo 或者 -f, --foo; action:命令行遇到參數(shù)時(shí)的動(dòng)作,默認(rèn)值是 store; store_const:表示賦值為const;
  • default :不指定參數(shù)時(shí)的默認(rèn)值。
  • type:命令行參數(shù)應(yīng)該被轉(zhuǎn)換成的類型;
  • choices:參數(shù)可允許的值的一個(gè)容器;
  • nargs :應(yīng)該讀取的命令行參數(shù)個(gè)數(shù),可以是具體的數(shù)字,或者是?號,當(dāng)不指定值時(shí)對于 Positional argument 使用 default,對于 Optional argument 使用 const;或者是 * 號,表示 0 或多個(gè)參數(shù);或者是 + 號表示 1 或多個(gè)參數(shù)。
  • required:可選參數(shù)是否可以省略 (僅針對可選參數(shù))。
  • help:參數(shù)的幫助信息,當(dāng)指定為 argparse.SUPPRESS 時(shí)表示不顯示該參數(shù)的幫助信息.
  • metavar:在 usage 說明中的參數(shù)名稱,對于必選參數(shù)默認(rèn)就是參數(shù)名稱,對于可選參數(shù)默認(rèn)是全大寫的參數(shù)名稱
  • dest:解析后的參數(shù)名稱,默認(rèn)情況下,對于可選參數(shù)選取最長的名稱,中劃線轉(zhuǎn)換為下劃線.
  • const:action 和 nargs 所需要的常量值。
  • append:將遇到的值存儲(chǔ)成列表,也就是如果參數(shù)重復(fù)則會(huì)保存多個(gè)值; append_const:將參數(shù)規(guī)范中定義的一個(gè)值保存到一個(gè)列表;
  • count:存儲(chǔ)遇到的次數(shù);此外,也可以繼承 argparse.Action 自定義參數(shù)解析;

3.解析參數(shù)

即使用 parse_args() 解析添加的參數(shù)

args = parser.parse_args()

4.簡單而具體的例子

例如我現(xiàn)在有一個(gè).py文件,我現(xiàn)在定義了好多好多函數(shù)(為了方便我只定義了兩個(gè)),我現(xiàn)在需要集中管理我傳入的參數(shù),使用argparse就會(huì)非常方便,對于本.py文件中的傳參一目了然。

import argparse
parser = argparse.ArgumentParser(description='test')
parser.add_argument('--spring', action='store_true', default=False, help='nothing.')
parser.add_argument('--summer', type=int, default=6, help='num.')
parser.add_argument('--fall', type=int, default=11, help='num.')
parser.add_argument('--winter', type=int, default=100, help='Number of epochs to train.')
args = parser.parse_args()
# FLAGS, unparsed = parser.parse_known_args() 這種解析方法用的比較少,有興趣可以了解一下
def sum_function(num2sum_1,num2sum_2):
    sum_result = num2sum_1 + num2sum_2
    return sum_result
def multiply_function(num2multiply_1,num2multiply_2):
    multiply_result = num2multiply_1 * num2multiply_2
    return multiply_result
print('args.spring的值是{}'.format(args.spring))
print('args.summer的值是{}'.format(args.summer))
print(sum_function(args.summer,args.fall))
print(multiply_function(args.summer,args.winter))

# 運(yùn)行結(jié)果
args.spring的值是False
args.summer的值是6
17
600

你可以發(fā)現(xiàn),對本文件中的函數(shù)進(jìn)行傳參,無論有多少參數(shù)需要傳,我們只要在argparse中寫好需要傳的參數(shù),在傳參時(shí)傳入args.參數(shù)名,需要修改傳參值時(shí),統(tǒng)一在argparse中進(jìn)行修改即可,這樣就方便了參數(shù)的管理。

5.如何修改參數(shù)值

  • 第一,對于有default的參數(shù),直接修改default的值即可;
  • 第二,用命令行運(yùn)行,例如在上面舉例的程序,我如果想把summer的值改為10,fall的值改為20,那么命令行指令就是:python train.py --summer 10 --fall 20;如果我同時(shí)還想讓spring的值成為True,那么命令行指令為:python train.py --summer 10 --fall 20 --spring

運(yùn)行結(jié)果:
args.spring的值是True
args.summer的值是10
30
1000

  • 第三,在Edit Configurations中進(jìn)行配置,然后run即可:

到此這篇關(guān)于關(guān)于Python參數(shù)解析器argparse的應(yīng)用場景的文章就介紹到這了,更多相關(guān)Python的argparse的應(yīng)用場景內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python使用re模塊正則提取字符串中括號內(nèi)的內(nèi)容示例

    Python使用re模塊正則提取字符串中括號內(nèi)的內(nèi)容示例

    這篇文章主要介紹了Python使用re模塊正則提取字符串中括號內(nèi)的內(nèi)容,結(jié)合實(shí)例形式分析了Python使用re模塊進(jìn)行針對括號內(nèi)容的正則匹配操作,并簡單解釋了相關(guān)修正符與正則語句的用法,需要的朋友可以參考下
    2018-06-06
  • Python中matplotlib庫安裝失敗的經(jīng)驗(yàn)總結(jié)(附pycharm配置anaconda)

    Python中matplotlib庫安裝失敗的經(jīng)驗(yàn)總結(jié)(附pycharm配置anaconda)

    最近根據(jù)領(lǐng)導(dǎo)布置的學(xué)習(xí)任務(wù),開始學(xué)習(xí)python中的matplotlib,朋友告訴我這個(gè)很簡單,然而剛踏入安裝的門檻,就遇到了安裝不成功的問題,下面這篇文章主要給大家介紹了關(guān)于Python中matplotlib庫安裝失敗的經(jīng)驗(yàn)總結(jié),需要的朋友可以參考下
    2022-08-08
  • python讀取文件由于編碼問題失敗匯總以及解決辦法

    python讀取文件由于編碼問題失敗匯總以及解決辦法

    這篇文章主要給大家介紹了關(guān)于python讀取文件由于編碼問題失敗匯總以及解決辦法的相關(guān)資料,文件編碼錯(cuò)誤指的是在Python讀取文件的過程中出現(xiàn)的編碼不匹配的問題,需要的朋友可以參考下
    2023-10-10
  • Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析

    Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析

    這篇文章主要介紹了Python Excel vlookup函數(shù)實(shí)現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解

    Python數(shù)據(jù)結(jié)構(gòu)之單鏈表詳解

    這篇文章主要為大家詳細(xì)介紹了Python數(shù)據(jù)結(jié)構(gòu)之單鏈表的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 基于SpringBoot構(gòu)造器注入循環(huán)依賴及解決方式

    基于SpringBoot構(gòu)造器注入循環(huán)依賴及解決方式

    這篇文章主要介紹了基于SpringBoot構(gòu)造器注入循環(huán)依賴及解決方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-04-04
  • Python 如何調(diào)試程序崩潰錯(cuò)誤

    Python 如何調(diào)試程序崩潰錯(cuò)誤

    這篇文章主要介紹了Python 如何調(diào)試程序崩潰錯(cuò)誤,文中講解非常細(xì)致,代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-08-08
  • Python中的pynput使用方法

    Python中的pynput使用方法

    pynput是一個(gè)Python 庫,用于監(jiān)控和控制輸入設(shè)備,如鍵盤和鼠標(biāo),本文通過一個(gè)簡單的示例,展示如何使用pynput控制鼠標(biāo),本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧
    2026-02-02
  • 分析機(jī)器學(xué)習(xí)之決策樹Python實(shí)現(xiàn)

    分析機(jī)器學(xué)習(xí)之決策樹Python實(shí)現(xiàn)

    決策樹是一種非參數(shù)的有監(jiān)督學(xué)習(xí)方法,它能夠從一系列有特征和標(biāo)簽的數(shù)據(jù)中總結(jié)出決策規(guī)則,并用樹狀圖的結(jié)構(gòu)來呈現(xiàn)這些規(guī)則,以解決分類和回歸問題。決策樹算法容易理解,適用各種數(shù)據(jù),在解決各種問題時(shí)都有良好表現(xiàn)
    2021-06-06
  • 從基礎(chǔ)到高級詳解Python對象序列化的實(shí)戰(zhàn)指南

    從基礎(chǔ)到高級詳解Python對象序列化的實(shí)戰(zhàn)指南

    在軟件開發(fā)中,對象序列化是一項(xiàng)至關(guān)重要的技術(shù),它允許將內(nèi)存中的復(fù)雜對象轉(zhuǎn)換為可以存儲(chǔ)或傳輸?shù)母袷?本文將展示如何在不同場景下選擇和應(yīng)用最合適的序列化方案,下面就跟隨小編一起了解下吧
    2025-09-09

最新評論

甘肃省| 安宁市| 望谟县| 高尔夫| 忻城县| 永寿县| 东乡族自治县| 贵阳市| 松桃| 平阳县| 荔浦县| 桐城市| 普定县| 宣威市| 上饶县| 桐柏县| 定远县| 登封市| 平果县| 新田县| 页游| 涪陵区| 安多县| 昌江| 芜湖县| 库尔勒市| 阿坝县| 贵阳市| 宜城市| 北海市| 哈尔滨市| 巩义市| 图木舒克市| 鹤岗市| 阿拉善左旗| 明溪县| 信阳市| 沧州市| 牟定县| 恩施市| 宁阳县|