函數的參數類型


1.1 形參與實參

  形參(形式參數):在定義函數階段,定義的參數稱之為形參,粗略的可以認為是變量名。
  實參:在調用函數階段傳入的值稱之為實際參數,簡稱實參,粗略的可以認為是變量值。
def ware_info(vendor_name, store_name, sku):   return "{}商家下的門店{}不存在該品".format(vendor_name, store_name, sku) ware_info("北京XX","中關村店","10234567")

1.2 位置參數與關鍵字參數

  位置參數: 按照從左往右的順序依次定義的變量名,且必須被傳值,多一個少一個都不可以
  關鍵字實參:在函數調用的階段,按照鍵值對的方式傳入值可以完全不參照順序,給某個形參傳值。
  
def login_params(phone, pwd, username):   param = {"phone": "{}".format(phone),         "pwd": "{}".format(pwd),         "username": "{}".format(username),         "loginType": 1,         "setPwd": 0}   return param  #位置參數:基於位置
 print(login_params("189000000", "123456", 'DY'))  #關鍵詞參數:基於關鍵詞指定
 print(login_params(username="DY", pwd="123456", phone="189000001"))   # 混搭
 print(login_params("123456", "189000000", username="DY"))
規則:先位置后關鍵詞,位置參數必須在關鍵字參數的前面,但關鍵字參數之間不存在先后順序的

1.3 強制關鍵字參數

  引入*標記,“*”之后的都是強制關鍵字參數。

  強制關鍵字參數的賦值必須顯示通過關鍵字傳入。

  當強制關鍵字參數無默認值時,調用時必須給其賦值,否則報錯;當強制關鍵字參數有默認值時,若調用時不給其顯示賦值,其使用默認值。

def ware_info(*, vendor_name, store_name, sku):   return "{}商家下的門店{}不存在該品".format(vendor_name, store_name, sku) print(ware_info(vendor_name="北京物美",store_name="中關村店",sku="10234567"))

1.4 默認參數

  用於定義函數,為參數提供默認值,調用函數時可傳可不傳該默認參數的值(注意:所有位置參數必須出現在默認參數前,包括函數定義和調用)
def ware_info(store_name, sku, vendor_name="北京XX"):   return "{}商家下的門店{}不存在該品".format(vendor_name, store_name, sku) ware_info("中關村店","10234567")
注:當系統默認值是一個空值的時候,系統只提供一個,因此寫成None,而不是寫成一個空列表或空集合,會污染前面數據:
  
def my_method(a, b=[]): b.append(a) print(b)

1.5 可變參數(不定長參數):*args與**kwargs

  可變長度是指在調用函數時,傳入的值(實參)不固定。
  可變位置參數:*args 輸出類型為元組。
def calc(*numbers):   total = 0   for n in numbers:     total += n**2
  return total print(calc(1,2,3)) print(calc(1,3,5,7))
  關鍵字參數:(**kwargs) 輸出為字典。
  sorted是個不定長,sorted(a)與sorted(a, key=len)
def get_info(name, sex, **kwargs):   for msg, info in kwargs.items():     print("{}的性別為{}, 其他信息為".format(name, sex) + msg + ":" + info) get_info("張三", "", store_id="12", store_name="zgc" )
  編寫生成一個get請求地址的函數,入參含有hostname, url="", param={},根據以上參數返回一個get請求的完整鏈接,param和URL有可能不傳。
def get_host(hostname, path=None, **params):   url = "http://{}/".format(hostname)   if path:     url += path   if params:     param_list = []     for paramsName, paramValue in params.items():       param = "{}={}".format(paramsName, paramValue)       param_list.append(param)     url = url + "?" + "&".join(param_list)   return url

print(get_host("cmsapi.dmall.com", path="/app/web/json", currentPage=1, isForceHome=0))
參數定義的順序必須是:必選參數、默認參數、可變參數。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM