亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

關于python參數的問題

關于python參數的問題

守著一只汪 2018-07-16 14:21:36
def out(no=3368,dd=''):         print(no,'   ',dd)      if __name__ == '__main__':     out(sys.argv[1],sys.argv[2])我這樣寫,轉成tmp.exe 在命令行里運行:tmp.exe 123  abc 是正常的。 但out函數的no是有一個默認參數的。所以我只想給dd傳參,命令行里要怎么寫???如果寫tmp.exe abc  就出錯,因為少了一個參數。
查看完整描述

2 回答

?
繁華開滿天機

TA貢獻1816條經驗 獲得超4個贊

你這樣傳參, argv[1], argv[2] 將會依次傳參給no,和dd

如果你想, 當單獨輸入一個參數就想時, 傳參給dd, 只能將函數形參順序改下:

def out(dd='', no=3368514,):

這樣 當你 tmp.exe 123, 123就會默認傳給dd, 不過你這樣要注意, 因為已經手動寫死 sys.argv[2], 如果你的位置參數不足兩個, 將會觸發IndexError異常, 所以建議事先做好參數個數的檢查

if __name__ == '__main__':    
    argc = len(sys.argv)
    # sys.argv[0] 是腳本名字
    if argc == 2 : 
        out(sys.argv[1])
    elif argc == 3:
        out(sys.argv[1], sys.argv[2])


查看完整回答
反對 回復 2018-07-17
?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

如果你非要用這種位置參數來調用程序,那我建議你用argparse模塊, 這個讓程序支持選項參數 可修改程序為: tmp.exe -dd abc -no 3358 --cpu amd , 也可以構造一個列表或者是json數據給特定選項等等,具體可以谷歌argpase庫用法

默認參數主要的使用場景還是在人為指定傳參, 例如: out(cpu='amd', dd='abc'..)這樣調用函數! 但是你現在是通過tmp.exe x1 x2 x3 x4這樣傳參, 這些x1,x2..統稱叫: 位置參數, 顧名思義, 就是跟位置很有關系,它們將以此存入sys.argv列表中. 所以如果你還是用這種方式去執行腳本,那么我覺得要實現需求難度大

查看完整回答
反對 回復 2018-07-17
  • 2 回答
  • 0 關注
  • 485 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號