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