2017-08-14 25 views
-1

我目前的代碼是類似於以下內容。什麼將是一個有效的方式來調用Python中的列表參數的函數

def func(args): 
     optionalparameters = ((args.split(':')[1]).split(' '))[1:] 
     second_func(optionalparameters) 

這假定args是一個冒號分隔的字符串;它佔用了下半部分,將其分割成空格分隔的單詞並返回(除了第一個之外的?)的列表。包含多個冒號的情況尚未得到處理,因爲我對這種語言很陌生。

optional_parameters可以不作爲列表傳遞嗎?由於參數是可選的,以下內容會有效嗎?

def func(args): 
     optionalparameters = ((args.split(':')[1]).split(' '))[1:] 
     val1=val2=val3=None 
     try: 
      val1 = optionalparameters[0] 
     except IndexError: 
      pass 
     try: 
      val2 = optionalparameters[1] 
     except IndexError: 
      pass 
     try:  
      val3 = optionalparameters[2] 
     except IndexError: 
      pass 
     second_func(val1, val2, val3) 

標準庫模塊似乎可能能夠做到這一點。參數處理的任何幫助都非常感謝。

+1

有什麼問題嗎? –

+3

我想你可能只想'second_func(* optionalparameters)'。請參閱https://stackoverflow.com/questions/36901/what-does-double-star-and-star-do-for-parameters – larsks

+0

Ty @larsks的回覆。 –

回答

-1

您可以從列表中unpack值:

optionalparameters = ((args.split(':')[1]).split(' '))[1:] 
second_func(*optionalparameters) 

或:

val1, val2, val3=((args.split(':')[1]).split(' '))[1:]  
second_func(val1, val2, val3) 
相關問題