5

I am trying to pass "sys.argv[1]" into a function.

#!/usr/bin/env/ python
import sys
def main():
    test(sys.argv[1])
def test(sys.argv[1]):
    print "Hello " + sys.argv[1]

./arg.py World

File "./arg.py", line 5
def test(sys.argv[1]):
            ^
SyntaxError: invalid syntax

Not sure where to go from here after scowering the Interwebs for a few hours. I have also tried to set the "sys.argv[1]" to a variable and tried passing that into the function and still no avail.

4

2 回答 2

11

我认为您误解了函数的声明和调用。在您的程序中,只有声明,缺少调用语句。至于从命令行传递参数,这是我更喜欢的一个例子:

import sys
def hello(v):
    print 'hello '+v

def main(args):
    hello(args[1])

if __name__ == '__main__':
    main(sys.argv)

通过调用之前定义的函数并将 sys.argv 作为参数传递,程序从 'if name == ' main '行开始执行

于 2013-07-08T09:58:42.117 回答
6

sys.argv[1]返回一个字符串,因此您不能将其添加为参数/参数。

我不明白你为什么需要这个,根本不提出任何论据:

def test():
    print "Hello " + sys.argv[1]

你可能也搞混了。参数名称不必与调用函数时使用的名称相同。例如,如果我有n = 5,该函数不需要有一个名为 的参数n。它可以是任何东西。

所以你可以这样做:

def test(myargument):
    print "Hello " + myargument

我只是要给你一个关于论点的快速小“教程”。

def myfunc():
    print "hello!"

这里我们有一个函数。称之为,我们这样做myfunc(),是吗?当我们执行 myfunc() 时,它会打印“hello!”。

这是另一个功能:

def myfunc(word):
    print word

这个函数接受一个参数。所以当我们调用它时,我们必须添加一个参数。下面是一个调用函数的例子:

def myfunc(word):
    print word

myword = 'cabbage'
myfunc(myword)

注意如何'cabbage'myword变量中设置。它不必我们在函数中调用的参数相同。事实上,如果需要,我们甚至不必创建变量。我们只能做myfunc('cabbage')

另外,在这个例子中,你只能输入一个参数,因为当我们输入def函数时,我们只使用了一个参数。如果你添加两个,你会得到类似的东西myfunc takes one argument (two given)

我们调用了参数word,以便我们可以在函数中使用它。注意我有print word和没有print myword。就好像我们做了word = myword,但我们没有做那一步,而是使用参数名称。

于 2013-07-08T09:31:05.697 回答