2013-08-16 21 views
0

代碼str參數在Python

def main(bar): 
    bar = str(bar) 
    print bar 
main(sys.argv[1:]) 

版畫,而不是僅僅

bar 

['bar'] 

。我該怎麼做才能使輸入參數完全是字符串? 謝謝。 (Python 2.5.2)

回答

6

通過傳遞sys.argv [1:]傳遞第一個參數的範圍以及每個後面的參數。你可以做任何獨立地得到想要的結果

# Target the 1 element when passing in 
main(sys.argv[1]) 

# or this inside of your function 
bar = str(bar[0]) 
0

如果你要打印所有命令行參數去掉括號一個字符串以下的,你可以使用一個字符串的.join()方法:

def main(bar): 
    bar = ' '.join(bar) 
    print bar 
main(sys.argv[1:]) 

這將加入列表的所有元素bar用空格隔開,然後將這個字符串轉換變量bar

如果只有一個參數,這將打印

bar 

但如果有多個參數,它會打印

bar foo 
1

[1:]語法是一種類型的slice;冒號是告訴我們這種情況的關鍵句法元素。它不是一個單一的元素,而是給你一個由你指定的索引指定的列表部分。例如,

>>> x = [0,1,2,3,4] 
>>> x[1:3] 
[1, 2] 

這走的是列表的部分從索引1至索引3

你的代碼更是這樣的:

>>> x[1:] 
[1, 2, 3, 4] 

它採用元素索引1和每個索引。因爲我們省略了結尾索引,所以假定我們希望一切都到了列表的末尾。我們也可以使用負指數從列表的末尾向後倒數:

>>> x[1:-2] 
[1, 2]