栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python函数按引用调用

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python函数按引用调用

您无法在Python函数中更改不可变的对象(例如

str
或)
tuple
,但可以执行以下操作:

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 = 2b = 3a, b = foo(a, b)  # a == 4; b == 9

当您返回这样的值时,它们将作为元组返回,而元组又将解压缩。

编辑:
另一种思考方式是,虽然您无法在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


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/624612.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号