【问题标题】:How to pass sys.argv[n] into a function in Python如何将 sys.argv[n] 传递给 Python 中的函数
【发布时间】:2013-07-08 17:58:42
【问题描述】:

我正在尝试将“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

在 Internet 上浏览了几个小时后,不知道该去哪里。我也尝试将“sys.argv[1]”设置为一个变量,并尝试将其传递给函数,但仍然无济于事。

【问题讨论】:

    标签: python function argv sys


    【解决方案1】:

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

    import sys
    def hello(v):
        print 'hello '+v
    
    def main(args):
        hello(args[1])
    
    if __name__ == '__main__':
        main(sys.argv)
    

    程序从 'if name == 'ma​​in' 行开始执行,方法是调用之前定义的函数并将 sys.argv 作为参数传递

    【讨论】:

      【解决方案2】:

      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')

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

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

      【讨论】:

      • 好的,基本上我想对参数做的就是传递一些参数,这些参数将被调用很多次。我应该使用 raw_input / input 来设置这些变量吗?
      • @GregRobertDutertre 我认为你误解了争论的重点
      • 很有可能。我也认为我可能会以错误的方式重新学习 Python。
      • @GregRobertDutertre 我在答案中添加了更多内容。我希望这会有所帮助!
      • @GregRobertDutertre 很高兴听到!如果您还有其他问题,请继续提问
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-06-18
      • 1970-01-01
      • 1970-01-01
      • 2020-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多