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

Gre*_*reg 3 python function sys argv

我试图将"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
Run Code Online (Sandbox Code Playgroud)

在将Interwebs分散几个小时后,不确定从哪里开始.我也尝试将"sys.argv [1]"设置为一个变量并尝试将其传递给函数但仍然无效.

Har*_*hen 10

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

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

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

if __name__ == '__main__':
    main(sys.argv)
Run Code Online (Sandbox Code Playgroud)

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


Ter*_*ryA 5

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

我不明白为什么你会需要这个,只是根本没有参数:

def test():
    print "Hello " + sys.argv[1]
Run Code Online (Sandbox Code Playgroud)

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

所以你可以这样做:

def test(myargument):
    print "Hello " + myargument
Run Code Online (Sandbox Code Playgroud)

我只是给你一个关于参数的快速小"教程".

def myfunc():
    print "hello!"
Run Code Online (Sandbox Code Playgroud)

这里我们有一个功能.打电话给我们myfunc(),是吗?当我们执行myfunc()时,它会输出"hello!".

这是另一个功能:

def myfunc(word):
    print word
Run Code Online (Sandbox Code Playgroud)

这个函数需要一个参数.因此,当我们调用它时,我们必须添加一个参数.以下是调用函数的示例:

def myfunc(word):
    print word

myword = 'cabbage'
myfunc(myword)
Run Code Online (Sandbox Code Playgroud)

注意如何'cabbage'myword变量中设置.它不是必须是相同的就是我们俗称的函数的参数.事实上,如果需要,我们甚至不必创建变量.我们可以做到myfunc('cabbage').

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

我们调用了参数,word因此我们可以在函数中使用它.注意我有print word没有print myword.就像我们做的那样word = myword,但我们使用参数名称而不是这一步.