Python函数通过引用调用

Python函数通过引用调用

在某些语言中,您可以使用特殊的保留字(如refval)通过引用或值传递参数。当您将参数传递给Python函数时,它永远不会在离开函数时改变参数的值。唯一的方法是使用全局保留字(或者我当前理解它)。

例1:

k = 2def foo (n):
     n = n * n     #clarity regarding comment below
     square = n
     return squarej = foo(k)print jprint k

会表现出来

>>4>>2

显示k是不变的

在此示例中,变量n永远不会更改

例2:

n = 0def foo():
    global n
    n = n * n
    return n

在此示例中,变量n已更改

在Python中是否有任何方法可以调用函数并告诉Python 参数还是引用参数而不是使用全局?

其次,在A级剑桥考试,他们现在说一个函数返回一个单一而过程返回值超过一个值。在80年代,我被教导了一个函数有一个返回语句,而程序没有。为什么现在不正确?


元芳怎么了
浏览 964回答 3
3回答

慕田峪4524236

你不能通过Python中的引用传递一个简单的原语,但是你可以做以下事情:def foo(y):   y[0] = y[0]**2x = [5]foo(x)print x[0]  # prints 25然而,这是一种奇怪的方式。请注意,在Python中,您还可以返回多个值,使得一些用于传递引用的用例不那么重要:def foo(x, y):    return x**2, y**2a = 1b = 2a, b = foo(a, b)  # a == 2; b == 4当您返回这样的值时,它们将作为元组返回,而元组又被解压缩。编辑: 另一种思考方式是,虽然您无法通过Python中的引用显式传递变量,但您可以修改传入的对象的属性。在我的示例(和其他)中,您可以修改列表的成员但是,你不能完全重新分配传入的变量。例如,看到以下两段代码看起来可能会做类似的事情,但结果会有不同的结果:def clear_a(x):   x = []def clear_b(x):   while x: x.pop()z = [1,2,3]clear_a(z) # z will not be changedclear_b(z) # z will be emptied
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python