如何将sys.argv [n]传递给Python中的函数

时间:2013-07-08 09:29:30

标签: python function argv sys

我正在尝试将“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]”设置为变量,并尝试将其传递给函数但仍然无效。

2 个答案:

答案 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一样,但我们使用参数名称而不是这一步。