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

时间:2013-09-11 23:48:37

标签: python function arguments output varying

我正在用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在y = mx + b中的x,需要转换回它的变量目标,都在函数内部。

这里的问题是我不知道如何定位原始变量。

所以,如果它是功能(a =猫,b =狗,c =小鼠)

a = c / 2 - b * 2

当cat变量时,如何设置cat = a?

我不能只说cat = a因为输入可能是 功能(a = bird,b = flys,c = cats)

3 个答案:

答案 0 :(得分:0)

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)

答案 1 :(得分:0)

如果arg1=var1无效,那是因为:

  

Python按值传递对象的引用(如Java),和   Python中的所有东西都是一个对象。这听起来很简单,但随后你   会注意到某些数据类型似乎表现出传值   特征,而其他似乎像传递参考...   这是什么交易?

     

理解可变和不可变对象很重要。一些   对象,如字符串,元组和数字,是不可变的。涂改   它们在函数/方法内部将创建一个新实例和   函数/方法之外的原始实例不会更改。其他   对象,如列表和词典是可变的,这意味着你可以   就地更改对象。因此,改变一个内部的对象   function / method也会改变外面的原始对象。

为什么不返回arg1并将val1设置为它?

答案 2 :(得分:0)

Python没有关于引用的特定语法(至少我不知道)。如果您希望将参数作为参考传递给函数,则它必须是可变的(例如,list,dictionary)。

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
)