python的参数传递机制

Comments(0)


Posted on 2012-12-15 01:47:04 python


调用函数时,函数参数仅仅是引用传入对象的名称。

参数传递的基本语义和其他编程语言中已知的方式不完全相同。

例如“按值传递” 或 “按引用传递”。

例如,如果传递不可变的值(如tuple、string list),参数看起来实际是按值传递的。

但如果传递可变变量(如列表或字典)给函数,然后再修改次可变对象,这些改动就会反映在原始对象中。

像这样悄悄修改其输入值或者程序其他部分的函数具有副作用。一般来说,最好避免使用这种编程风格,因为随着程序的规模和复杂度不断增加,这类函数会成为各种奇怪编程错误的来源。(例如,如果函数具有副作用,只看函数调用是无法明显找到问题的。)

在设计线程和并发性的程序中,使用此类函数的效率很低,因为通常需要使用锁定来防止副作用的影响。 多线程环境中,对于每个run函数如果显示修改一个全局变量(一个字典),那么需要为每个线程加锁。 一般的办法就是直接return新变量,而不是“原地修改”

前一篇: python线程的又一细节 后一篇: tornado长连接断开的处理机制

Captcha:
验证码

Email:

Content: (Support Markdown Syntax)