如何在 Python 中输出不同的参数



我正在用Python编写一个函数。

因此,假设我在此函数中有 3 个参数:

Function (arg1, arg2, arg3)
  arg1 = arg2 * arg3

调用函数时,它是这样的:

function(arg1=var1, arg2=var2, arg3=var3)

现在的问题是,这些变量(var1var2var3)在调用这个函数的情况下会有所不同。所以它们可以是var4var5var6等。

鉴于这些变量各不相同,使此函数更改变化参数的语法是什么?

即。 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=a?

我不能只说cat=a,因为也许输入是函数(A=鸟,B=苍蝇,C=猫)

def f(x, y):
    return x*y
a, b = 1, 2
c = f(a, b)

不要让函数尝试直接更改其参数,而是返回函数产生的任何结果。事实证明,这是一种更干净、更有用的代码结构方式。例如,你可以做

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   # This will modify the list
    b[0] = '-'  # This will modify the value of b passed to the function
foobar(
    [4,8,15,16,23,42],  # This argument is passed by reference, mutable
    'asdf'              # This one is passed by value, immutable
)

最新更新