Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Python中输出可变参数?_Python_Function_Arguments_Output_Varying - Fatal编程技术网

如何在Python中输出可变参数?

如何在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

我正在用Python编写一个函数

假设这个函数中有3个参数:

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)