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