如何在Python中传递变量(通过参考或值)
Python使用“通过对象引用”,意思是传递对对象的引用的副本; 1。对于不变的对象(例如int,str,元组),重新分配参数会创建一个新的本地对象,而原始对象则没有变化; 2。对于可变的对象(例如列表,dict,set),修改对象的位置会影响原件,因为两个变量都涉及同一对象;但是,重新分配参数会打破链接,并且不会影响原始内容。
在Python中,变量以通常令人困惑的方式传递,因为它并不像C或Java之类的语言那样完全“通过参考”或“通过值传递” 。相反,Python使用有时称为“通过对象引用”或“通过分配传递”的机制。
这是其工作原理:
1。python使用对象参考
在Python中,一切都是一个对象。当您将值分配给变量时,实际上是在使该变量引用内存中的对象。
例如:
x = 10 y = x
现在, x
和y
指的是相同的整数对象(如果对象是不可变的且小的,例如小整数,则它们可能由于实习而共享相同的对象,但是从概念上讲,这是关于参考的)。
2。当您将变量传递给函数时,您将传递参考的副本
这意味着该函数会收到对同一对象的引用,而不是对象本身的副本,而不仅仅是值。
但是功能内部发生的事情取决于对象是可变还是不变。
不变的物体(int,str,元组等)
您不能将它们更改为适当的位置。因此,即使传递了引用,修改参数也会创建一个新的本地对象。
def修改(n): n = n 1 打印(n) num = 5 修改(num) 打印(num)#仍然打印5
在这里, n
是对num
相同的整数对象的引用,但是当您执行n 1
,创建了一个新的整数对象,并且n
现在指向它。原始num
不受影响。
可变的对象(列表,dict,set等)
这些可以更改到位。因此,如果您通过参数修改对象,则更改会影响原件。
def modify_list(LST): lst.append(4) 打印(LST) my_list = [1,2,3] modify_list(my_list) 打印(my_list)#打印[1,2,3,4]
在这里, lst
涉及与my_list
相同的列表对象,并调用.append()
修改共享对象。
但是,如果您重新分配参数,它会打破链接:
def reassign_list(LST): lst = [7,8,9]#现在LST指向新列表 打印(LST) my_list = [1,2,3] reassign_list(my_list) 打印(my_list)#still [1,2,3]
要点:
- Python将引用对象,而不是变量本身。
- 您无法通过重新分配参数来更改呼叫者中的原始变量。
- 您可以修改传递的可变对象的内容,因为两个名称都涉及相同的基础对象。
- 不可变的对象不能在适当的位置更改,因此任何“更改”都会在本地创建一个新对象。
概括
那么,它是通过参考还是价值传递?
- 不是按值(例如带有int的c)纯传递,因为可以修改列表之类的对象。
- 不是通过参考(例如带有参考类型的C)纯通行,因为重新分配参数不会影响呼叫者。
最好思考:
“通过对象引用” - 您将获得对对象的引用的副本,而发生的事情取决于该对象的突变性。
基本上,这是按价值传递的参考。
以上是如何在Python中传递变量(通过参考或值)的详细内容。更多信息请关注PHP中文网其他相关文章!

热AI工具

Undress AI Tool
免费脱衣服图片

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

目录什么是加密货币交易中的情绪分析?为什么情绪分析在加密货币投资中很重要情绪数据的关键来源a.社交媒体平台b.新闻媒体c.市场指标情绪分析的工具和技术情绪分析中常用的工具:采用的技术:将情感分析整合到交易策略中交易者如何使用它:策略示例:假设BTC交易场景场景设置:情感信号:交易者的解读:决策:结果:情感分析的局限性和风险利用情感进行更智能的加密货币交易理解市场情绪在加密货币交易中变得越来越重要。最近一项2025年的研究由Hamid

UseSublimeText’sbuildsystemtorunPythonscriptsandcatcherrorsbypressingCtrl Baftersettingthecorrectbuildsystemorcreatingacustomone.2.Insertstrategicprint()statementstocheckvariablevalues,types,andexecutionflow,usinglabelsandrepr()forclarity.3.Installth

当Python中处理超出内存的大型数据集时,不能一次性加载到RAM中,而应采用分块处理、磁盘存储或流式处理等策略;可通过Pandas的chunksize参数分块读取CSV文件并逐块处理,使用Dask实现类似Pandas语法的并行化和任务调度以支持大内存数据操作,编写生成器函数逐行读取文本文件减少内存占用,利用Parquet列式存储格式结合PyArrow高效读取特定列或行组,使用NumPy的memmap对大型数值数组进行内存映射以按需访问数据片段,或将数据存入SQLite或DuckDB等轻量级数据

确保已安装Python并将其添加到系统PATH,通过终端运行python--version或python3--version验证;2.将Python文件保存为.py扩展名,如hello.py;3.在SublimeText中创建自定义构建系统,Windows用户使用{"cmd":["python","-u","$file"]},macOS/Linux用户使用{"cmd":["python3

要调试Python脚本,需先安装Python扩展并配置解释器,然后创建launch.json文件设置调试配置,接着在代码中设置断点并按F5启动调试,脚本将在断点处暂停,允许检查变量和单步执行,最终通过查看控制台输出、添加日志或调整参数等方式排查问题,确保环境正确后调试过程简单高效。

toAutomation formatemationalformatpytpythoncodeinvscode,installblackusingpipinstallblack,installtheofficialmicrosoftpythonextension,setblackastheformatterinsettings.jsonwith“ python.formatting.formatting.provider”

InstallSublimeTextandPython,thenconfigureabuildsystembycreatingaPython3.sublime-buildfilewiththeappropriatecmdandselectorsettingstoenablerunningPythonscriptsviaCtrl B.2.OrganizeyourprojectbycreatingadedicatedfolderwithPythonfilesandsupportingdocument

yield关键字用于定义生成器函数,使其能暂停执行并逐个返回值,之后从暂停处恢复;生成器函数返回生成器对象,具有惰性求值特性,可节省内存,适用于处理大文件、流数据和无限序列等场景,且生成器是迭代器,支持next()和for循环,但无法倒回,必须重新创建才能再次迭代。
