将变量值作为参数传递给python函数

时间:2018-02-04 23:42:09

标签: python

我正在尝试将变量值作为参数传递给我在for循环中调用的函数。不知何故,在我打印变量值时调用函数它们显示正常,但它们没有被传递到函数中,因为我得到的索引超出范围:0表示没有传递任何内容。研究没有用...你的帮助非常感谢。 代码是:

 for clx in root.findall('sample'):
        CName = clx.find('Name').text
        No01 = clx.find('First').text
        No02 = clx.find('Second').text
        print "Cname provided is" +CName
        print "First is" +No01
        print "Second is" +No02
        createCluster(CName, No01, No02)

createCluster:

def createCluster(CName, No01, No02):
    print len(sys.argv)
    ClsName=sys.argv[0]
    Node01=sys.argv[1]
    Node02=sys.argv[2]

错误:

Traceback (most recent call last):
  File "<string>", line 20, in <module>
  File "createCluster.py", line 8, in createCluster
    ClsName=sys.argv[0]
IndexError: index out of range: 0

1 个答案:

答案 0 :(得分:0)

您没有正确提取传递给方法的参数。在Python中,您只需使用您在方法中定义的参数,如下所示:

def createCluster(CName, No01, No02):
    print(CName)
    print(No01)
    print(No02)

createCluster('a', 'b', 'c')

以上将输出

a
b
c

对于您使用sys.argv时使用不当的问题:

sys.argv上的文档片段

  

传递给Python脚本的命令行参数列表。

例如,在从shell提示符调用代码时:

  

python your_script.py a b c

your_script.py里面你会发誓

import sys

script_name = sys.argve[0]
arg1 = sys.argv[1]
arg2 = sys.argv[2]
arg3 = sys.argv[3]

将输出:

/absolute/path/to/your_script.py
a
b
c

所以,你在这里看到它最终会给你脚本和所有参数的名称。

这可能是您在调用脚本和调用脚本中的方法之间产生混淆的地方。