如何在Python中输出可变参数?
我正在用Python编写一个函数 假设这个函数中有3个参数:如何在Python中输出可变参数?,python,function,arguments,output,varying,Python,Function,Arguments,Output,Varying,我正在用Python编写一个函数 假设这个函数中有3个参数: Function (arg1, arg2, arg3) arg1 = arg2 * arg3 调用该函数时,它是这样的: function(arg1=var1, arg2=var2, arg3=var3) 现在的问题是,这些变量(var1,var2,var3)在调用此函数的情况下会有所不同。所以它们可以是var4,var5,var6,等等 假设这些变量不同,那么让这个函数改变一个不同参数的语法是什么 即arg1=arg2*ar
Function (arg1, arg2, arg3)
arg1 = arg2 * arg3
调用该函数时,它是这样的:
function(arg1=var1, arg2=var2, arg3=var3)
现在的问题是,这些变量(var1
,var2
,var3
)在调用此函数的情况下会有所不同。所以它们可以是var4
,var5
,var6
,等等
假设这些变量不同,那么让这个函数改变一个不同参数的语法是什么
即arg1=arg2*arg3
更改arg1
。因为arg1=var1
我需要的是,arg1
作为var1
的实际代理,这样不仅arg1
发生了变化,而且var1
也发生了变化
这显然不能简单地使用arg1=var1
我认为这也可以通过其他函数命令或结构来完成。我只需要将一个变化输出到一个变化的参数中
编辑
此函数专门设计用于接受一个被调用的参数,不一定知道它是什么,然后在函数内部,转换为公式变量(如y=mx+b中的x)的参数需要转换回其变量目标,所有这些都在函数内部
这里的问题是我不知道如何定位原始变量
如果是功能性的(a=猫,b=狗,c=老鼠)
a=c/2-b*2
当cat是可变的时,如何设置cat=a
我不能只说cat=a,因为可能输入是
功能(a=鸟,b=苍蝇,c=猫)
返回函数生成的任何结果,而不是让函数直接更改其参数。事实证明,这是一种更干净、更有用的代码结构方式。例如,你可以
print f(1, f(2, 3))
不必创建临时变量:
f(a, 2, 3)
f(b, 1, a)
print b
而不是做
f(arg1=var1, arg2=var2, arg3=var3)
f(arg1=var4, arg2=var5, arg3=var6)
请执行以下操作:
var1 = f(var2, var3)
var4 = f(var5, var6)
如果使用
arg1=var1
不可行,这是因为:
Python按值传递对对象的引用(如Java),然后
Python中的一切都是对象。这听起来很简单,但是你
会注意到一些数据类型似乎显示了传递值
特征,而其他人似乎像是通过引用传递。。。
怎么回事
理解可变和不可变对象很重要。一些
字符串、元组和数字等对象是不可变的。改变
它们位于函数/方法中,将创建一个新实例和
函数/方法之外的原始实例未更改。其他
对象(如列表和字典)是可变的,这意味着您可以
在适当位置更改对象。因此,在
函数/方法还将更改外部的原始对象
为什么不直接返回
arg1
并将val1
设置为它呢?Python没有关于引用的特定语法(至少我不知道)。如果希望将参数作为引用传递给函数,则它必须是可变的(例如列表、字典)
def foobar(a,b):
a[0]=42#这将修改列表
b[0]='-'#这将修改传递给函数的b值
福巴(
[4,8,15,16,23,42],#此参数通过引用传递,可变
“asdf”#此值通过值传递,不可变
)
这完全取决于语言,但您所要求的通常称为引用(您希望两个或多个变量引用内存中的相同数据)。是的,很抱歉,这是用python编写的,我编辑了标题和帖子。paul,您能更具体地说明语法吗?如果我返回结果,如果var1是变量,我怎么能把它作为目标呢?@NickSimas:请看扩展答案。好的,这是可行的,但它更像var1=f(a=var1,b=var2,c=var3)a=b+c返回aI需要临时变量,因为所有参数都是变量。如果我错了,请纠正我,因为我正试图使这个公式尽可能清晰。我明白你的意思,但是你能更具体地描述一下在函数内部更改var1的语法吗?我不能设置var1,因为它是变量。不知何故,在你的代码中,你调用的是函数,无论它是在循环中,还是在循环中,循环中迭代你用作参数的东西或其他什么。无论在何处执行此操作,都知道调用函数时使用的参数。调用函数后,立即将参数设置为函数的结果。
var1 = f(var2, var3)
var4 = f(var5, var6)