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

2024-04-20 13:47:54 发布

您现在位置: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)

创建群集:

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

Tags: 函数textinforissysfindfirst
1条回答
网友
1楼 · 发布于 2024-04-20 13:47:54

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

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

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

以上将输出

a
b
c

对于您使用sys.argv的问题,您不正确地使用了:

来自sys.argv文档的片段:

The list of command line arguments passed to a Python script.

例如,从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

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

这可能是您在调用脚本和调用脚本中的方法之间产生混淆的原因。你知道吗

相关问题 更多 >