python中為main方法傳參問題
python為main方法傳參
執(zhí)行python腳本的時候,想給main方法傳入?yún)?shù)的例子
#!/usr/bin/env python # -*- coding: utf-8 -*- # @Author(s): xili # @Created: 2020/6/30 import sys ? if __name__ == '__main__': ? ? arg1 = sys.argv[1] ? ? arg2 = sys.argv[2] ? ? print(arg1) ? ? print(arg2)
執(zhí)行結(jié)果:
[root@xili]# python test1.py 1 2
1
2
python函數(shù)傳參的幾種方式
python函數(shù)的參數(shù)類型分為以下五種
- 位置參數(shù)
- 默認參數(shù)
- 可變參數(shù)(*args)
- 關(guān)鍵字參數(shù)(**args)
- 命名關(guān)鍵字參數(shù)
位置參數(shù)
調(diào)用函數(shù)時傳的實參與函數(shù)的形參位置上一一對應(yīng)的參數(shù),如下:
#!/usr/bin/python # -*- coding: utf-8 -*- def info(name,age,major): ? ? print("姓名:%s"%(name)) ? ? print("年齡:%s"%(age)) ? ? print("職業(yè):%s"%(major)) info("zhulang",27,"IT") ?#實參與形參一一對應(yīng)
打印結(jié)果為:
姓名:zhulang
年齡:27
職業(yè):IT
默認參數(shù)
在定義函數(shù)的時候,給形參一個默認的值,如下:
#!/usr/bin/python # -*- coding: utf-8 -*- def info(name,major,age=25): #默認參數(shù)必須放在位置參數(shù)后面,否則出錯 ? ? print("姓名:%s"%(name)) ? ? print("年齡:%s"%(age)) ? ? print("職業(yè):%s"%(major)) info("zhulang","IT")
打印結(jié)果為:
姓名:zhulang
年齡:25
職業(yè):IT
注意:
1、一個參數(shù)帶參數(shù)名,另一個參數(shù)不帶參數(shù)名,其中默認參數(shù)必須帶參數(shù)名;
2、如果形參中默認參數(shù)在必須參數(shù)之前,那么調(diào)用函數(shù)時實參中默認參數(shù)也應(yīng)當(dāng)在前面;如果形參中默認參數(shù)在必須參 數(shù)之后,那么調(diào)用函數(shù)時實參中默認函數(shù)應(yīng)當(dāng)在后面,否則會報錯
可變參數(shù)
可變參數(shù)就是傳入的參數(shù)個數(shù)是可變的,可以是1個、2個到任意個,還可以是0個,*args將所有的實參的位置參數(shù)聚合到一個元組,并將這個元組賦值給args
如下函數(shù):
def calc(l): ? ? sum = 0 ? ? for n in l: ? ? ? ? sum += n ? ? return sum calc([1,2,3]) #參數(shù)傳入的是列表,結(jié)果為7
如果用可變參數(shù)類型傳參,可變成如下:
def calc(*nums): ? ? sum = 0 ? ? for n in nums: ? ? ? ? sum += n ? ? return sum
這樣以來,參數(shù)可以傳入任意多個,函數(shù)內(nèi)部,參數(shù)接受到的是一個元組,傳入?yún)?shù)時,可寫成:cal(1,2,3,4),可跟多個參數(shù),無限制寫下去,如果有一個列表了,想把列表元素傳進去,可寫成如下:
>>> nums = [1, 2, 3] >>> calc(*nums) 7
*nums表示把nums這個list的所有元素作為可變參數(shù)傳進去
關(guān)鍵字參數(shù)
關(guān)鍵字參數(shù)允許你傳入0個或任意個含參數(shù)名的參數(shù),這些關(guān)鍵字參數(shù)在函數(shù)內(nèi)部自動組裝為一個dict,在傳遞參數(shù)時用等號(=)連接鍵和值
def person_info(name, age, **kw): ? ? print("name", name, "age", age, "other", kw) >>> person_info("zhulang", 12) name zhulang age 12 other{} >>> person_info("zhulang", 27, city = "Beijing") name zhulang age 27 other {'city':'Beijing'}
命名關(guān)鍵字參數(shù)
和普通關(guān)鍵字參數(shù)不同,命名關(guān)鍵字參數(shù)需要一個用來區(qū)分的分隔符*,它后面的參數(shù)被認為是命名關(guān)鍵字參數(shù)
#這里星號分割符后面的city、job是命名關(guān)鍵字參數(shù) person_info(name, age, *, city, job): ? ? print(name, age, city, job) ? >>> person_info("zhulang", 17, city = "Beijing", job = "Engineer") zhulang 17 Beijing Engineer ? ?#看來這里不再被自動組裝為字典
總結(jié):參數(shù)在書寫時要遵循一定的順序,即:位置參數(shù)、默認參數(shù)、變長參數(shù)、關(guān)鍵字參數(shù)、命名關(guān)鍵字參數(shù)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆實例
這篇文章主要介紹了Python數(shù)據(jù)結(jié)構(gòu)與算法之完全樹與最小堆,結(jié)合實例形式分析了Python完全樹定義及堆排序功能實現(xiàn)相關(guān)操作技巧,需要的朋友可以參考下2017-12-12Python+selenium實現(xiàn)截圖圖片并保存截取的圖片
這篇文章介紹如何利用Selenium的方法進行截圖并保存截取的圖片,需要的朋友參考下本文2018-01-01Python調(diào)用騰訊云短信服務(wù)發(fā)送手機短信
這篇文章主要為大家介紹了Python調(diào)用騰訊云短信服務(wù)發(fā)送手機短信,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-05-05為何人工智能(AI)首選Python?讀完這篇文章你就知道了(推薦)
這篇文章主要介紹了為何人工智能(AI)首選Python,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04Python?Requests使用Cookie的幾種方式詳解
這篇文章主要給大家介紹了關(guān)于Python?Requests使用Cookie的幾種方式,Python中的requests庫可以使用cookie來維持會話狀態(tài),實現(xiàn)登錄等操作,需要的朋友可以參考下2023-07-07