2012-10-18 87 views
0

不知道如何形成corectly,但問題是與一個shapefile(python庫)函數寫一個新行,這需要寫變量.. 從我的數據我創建一個列表,我認爲我可以轉換爲元組,將解決我的問題,但羅..我不會去那麼容易......分配變量到列表元素,不知道它的長度

功能是問這個: w.record(a, b, c, d....)w.record('a', 256, 25.2444, 'd'....) 我的數據是在一個列表,但該列表的長度是不知道我的默認,這取決於形成輸入數據和正確的長度是很重要的!

我也可以寫w.record(list[0], list[1]...list[len(list)-1]),但後來我不得不自動,不知道我怎麼能做到這一點創建此。

順便說一句,我用一個老的Python:2.5 ......(不是我的choise)

+1

我不知道我正確理解你的問題;但我Python支持與[任意參數列表]功能(http://docs.python.org/tutorial/controlflow.html#arbitrary-argument-lists),是你需要什麼? –

回答

1

有4種argument在函數聲明: -

  • 位置參數
  • 默認參數(或關鍵字參數 - 形式: - a = 5
  • 非關鍵字參數
  • 關鍵字參數(或字典類型關鍵字參數)

一個典型的函數聲明是這樣的: -

func(positional_args, keyword_args, 
        *tuple_grp_nonkw_args, **dict_grp_kw_args) 

你需要non-keyword的說法,這需要額外的參數,並將其存儲爲tuple

w.record(*yourvalues) 

同樣keyword說法,採用dictionary作爲輸入。它們用**kwarg表示。

  • 所有非關鍵字參數後的關鍵字參數進入**kwarg
  • 和所有的非關鍵字參數之前的關鍵字參數默認參數

對於EG: -

// nkwarg takes a list 
// kwarg takes a dictionary 
def foo(arg, defaultarg = 5, *nkwarg, **kwarg): 
    print arg 
    print defaultarg 
    print nkwarg 
    print kwarg 


foo("hello", ["how", "are", "you"], a = 3, b = 4) 

OUTPUT: -

hello 
5 
(['how', 'are', 'you'],) 
{'a': 3, 'b': 4} 
+0

但如果我有一個列表:L = [ '莫', 'Union_80vH_50vH',13867,32,'11:20:13.077' , '523.343','29 0.1' ,'29 .09.2012' ,'13:17: 02.077' ,'11:19:58.077' ,1,35, '90', '523.343',1348917598],它是如何走? – najuste

+0

@najuste它將存儲在'* nkwarg'中。 '*'標記用於使參數取任意數量的值。基本上它需要一個可變長度的列表。 –

+0

@najuste你可以看看這個鏈接: - http://stackoverflow.com/questions/1419046/python-normal-arguments-vs-keyword-arguments和http://docs.python.org/release/1.5 .1p1/tut/keywordArgs.html –

0
def foo(hello, *args): 
print hello 

for each in args: 
    print each 

if __name__ == '__main__': 
foo("LOVE", ["lol", "lololol"]) 
相關問題