0

编码

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

印刷

['bar']

, 而不仅仅是

bar

. 我应该怎么做才能使输入参数完全是字符串?谢谢。(Python 2.5.2)

4

3 回答 3

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])
于 2013-08-16T03:06:07.243 回答
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]
于 2013-08-16T03:41:12.267 回答
0

如果要将所有命令行参数打印为不带括号的单个字符串,可以使用字符串的.join()方法:

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

这将把列表中的所有元素bar用空格分隔,然后将该字符串放回变量bar中。

如果只有一个参数,这将打印

bar

但如果有多个参数,它会打印

bar foo
于 2013-08-16T03:29:03.283 回答