在python中传递变量参数

在python中传递变量参数,python,function,Python,Function,我需要定义一个函数,它可以接受也可以不接受函数中定义的3个参数中的一个参数。但是,我收到一条错误消息,它的语法无效 现在,如果我将我的第三个参数设置为变量[value3],我会收到一条错误消息,因为“float”对象是不可编辑的 另外,我已经意识到当所有参数都被传递时,它会创建一个元组,这是不利的 有人能帮我解决这个问题吗 def createValues(value1, *value2, value3): value = dict() value["VALUE1"] = val

我需要定义一个函数,它可以接受也可以不接受函数中定义的3个参数中的一个参数。但是,我收到一条错误消息,它的语法无效

现在,如果我将我的第三个参数设置为变量[value3],我会收到一条错误消息,因为“float”对象是不可编辑的

另外,我已经意识到当所有参数都被传递时,它会创建一个元组,这是不利的

有人能帮我解决这个问题吗

def createValues(value1, *value2, value3):
    value = dict()
    value["VALUE1"] = value1
    value["VALUE2"] = value2
    value["VALUE3"] = value3

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])


createValues(2000,21000001,1)
createValues(2000,,1)
您需要的是默认参数。这允许通过只传递函数的一部分参数来调用函数,并将另一个参数默认为预定义值

例如:

def createValues(value1=12, value2=27, value3=42):
    value = dict()
    value["VALUE1"] = value1
    value["VALUE2"] = value2
    value["VALUE3"] = value3

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])
将允许您通过以下任一方式调用函数:

>>> createValues(1, 2, 3)
1, 2, 3
>>> createValues()
12, 27, 42
>>> createValues(value2=1)
12, 1, 42
>>> createValues(0, 5)
0, 5, 42
由于您似乎对
*
一元运算符感到困惑,我建议您阅读一些有关参数解包的内容(例如,check)

此外,在Python中,在
createValues(2000,1)
中使用两个逗号绝对不是有效的语法。

您需要的是默认参数。这允许通过只传递函数的一部分参数来调用函数,并将另一个参数默认为预定义值

例如:

def createValues(value1=12, value2=27, value3=42):
    value = dict()
    value["VALUE1"] = value1
    value["VALUE2"] = value2
    value["VALUE3"] = value3

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])
将允许您通过以下任一方式调用函数:

>>> createValues(1, 2, 3)
1, 2, 3
>>> createValues()
12, 27, 42
>>> createValues(value2=1)
12, 1, 42
>>> createValues(0, 5)
0, 5, 42
由于您似乎对
*
一元运算符感到困惑,我建议您阅读一些有关参数解包的内容(例如,check)


此外,在
createValues(2000,1)
中使用两个逗号在Python中绝对不是有效的语法。

从我的初学者的角度来看,我看到两种方法:

使用列表

createValues的arg成为一个列表,因此您可以拥有任意多的值

def createValues(values):
    value = dict()
    #Inserting
    for val in iter(values):
        index = str(values.index(val))
        value["VALUE"+index] = val

    #Printing
    for (key, value) in value.iteritems(): 
        print ("Key : " + key + " | Value : " + value)


createValues([2000,21000001,1])
createValues([2000,1])
使用默认值

3个参数用于您的具体案例

def createValues(value1, value3, value2 = None):
    value = dict()
    value["VALUE1"] = value1
    if value2 is not None:
        value["VALUE2"] = value2
    value["VALUE3"] = value3

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])


createValues(2000,21000001,1)
createValues(value1 = 2000, value3 = 1)

从初学者的角度来看,我认为有两种方法:

使用列表

createValues的arg成为一个列表,因此您可以拥有任意多的值

def createValues(values):
    value = dict()
    #Inserting
    for val in iter(values):
        index = str(values.index(val))
        value["VALUE"+index] = val

    #Printing
    for (key, value) in value.iteritems(): 
        print ("Key : " + key + " | Value : " + value)


createValues([2000,21000001,1])
createValues([2000,1])
使用默认值

3个参数用于您的具体案例

def createValues(value1, value3, value2 = None):
    value = dict()
    value["VALUE1"] = value1
    if value2 is not None:
        value["VALUE2"] = value2
    value["VALUE3"] = value3

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])


createValues(2000,21000001,1)
createValues(value1 = 2000, value3 = 1)

不能调用这样的函数:

createValues(2000,,1)
createValues(2000, None, 1)
但是,您可以检查参数是否为
None
,并使用该参数

def createValues(value1, value2, value3):
    value = dict()
    value["VALUE1"] = value1 or 0
    value["VALUE2"] = value2 or 0
    value["VALUE3"] = value3 or 0

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])
现在,您可以使用如下函数:

createValues(2000,,1)
createValues(2000, None, 1)
对于任何缺少的参数,我都使用了默认值0

此外,参数未转换为
元组。打印时将参数打包到元组中。请尝试以下方法(注意缺少括号):


不能调用这样的函数:

createValues(2000,,1)
createValues(2000, None, 1)
但是,您可以检查参数是否为
None
,并使用该参数

def createValues(value1, value2, value3):
    value = dict()
    value["VALUE1"] = value1 or 0
    value["VALUE2"] = value2 or 0
    value["VALUE3"] = value3 or 0

    print (value["VALUE1"],value["VALUE1"],value["VALUE1"])
现在,您可以使用如下函数:

createValues(2000,,1)
createValues(2000, None, 1)
对于任何缺少的参数,我都使用了默认值0

此外,参数未转换为
元组。打印时将参数打包到元组中。请尝试以下方法(注意缺少括号):


你能举例说明当用0,1,2,3个参数调用函数时你的函数应该如何运行吗?你能举例说明当用0,1,2,3个参数调用函数时你的函数应该如何运行吗?