我正在尝试将“sys.argv [1]”传递给函数。
#!/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
在将Interwebs分析几个小时后,不知道从哪里开始。我也尝试将“sys.argv [1]”设置为变量,并尝试将其传递给函数但仍然无效。
答案 0 :(得分:10)
我认为你误解了一个函数的声明和调用。在你的程序中,只有声明,缺少调用语句。 至于从命令行传递参数,这是一个我更喜欢的例子:
import sys
def hello(v):
print 'hello '+v
def main(args):
hello(args[1])
if __name__ == '__main__':
main(sys.argv)
程序从“if name ==' main '行开始执行,方法是调用先前定义的函数并将sys.argv作为参数传递
答案 1 :(得分:5)
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
一样,但我们使用参数名称而不是这一步。