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

Python-传递值如何工作?

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

Python-传递值如何工作?

Python使用有时称为“按对象调用”的系统。将参数传递给函数时,不会复制任何内容。函数参数的名称在函数体内局部绑定到函数调用中提供的相同对象。

这与大多数人认为的“按值调用”不同,因为它不会复制对象。但这也与“按引用调用”不同,因为引用是针对 对象的, 一个新 名称
被绑定,但绑定到同一对象。这意味着您可以更改传入的对象,但是在函数内部重新绑定名称对函数外部无效。一个简单的区别示例:

>>> def func(x):...     x[0] = 2 # Mutating the object affects the object outside the function>>> myList = [1]>>> func(myList)>>> myList # myList has changed[2]>>> def func(x):...     x = 2 # rebinding name has no effect outside the function>>> myList = [1]>>> func(myList)>>> myList # myList is unaffected[1]

我对此的简单思考是,对裸名的赋值(即形式的语句)与

name = value
Python中的所有其他函数完全不同。操作名称而不是值的 唯一 方法是do
name = value
。(有吹毛求疵的例外,像摆弄周围
globals()
等,但这些都是危险地带反正。)特别
name =value
是来自不同的
obj.prop = value
obj[0] = value
obj +=value
,和其他类似的东西,看起来像分配,但实际上是在对象上,而不是名称进行操作。

也就是说,Python中的函数调用本身就具有一定的开销(用于设置执行框架等)。如果多次调用一个函数,则此开销可能会导致明显的性能影响。因此,将一个功能拆分为多个功能可能仍然会对性能产生影响,因为每个附加功能调用都会增加一些开销。



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

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

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