
正文
python传参对象函数 python参数的传递
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
python中视图函数传值的数据类型可以传对象吗
python的一切数据类型都是对象。但是python的对象分为不可变对象和可变对象。python的变量是引用,对python变量的赋值是引用去绑定该对象。
可变对象的数据发生改变,例如列表和字典,引用不会更改绑定对象,毕竟本身就是用于增删改查的,频繁地产生新对象必然导致开销巨大,只需要该对象内部变化就行;但对于绑定了不可变对象的引用,对象一旦改变就会使引用绑定新的对象。
这一点也会反应到函数的参数上。python的传值方式是“传对象”引用。python的函数,形参实际上是引用,实参便是对象绑定到该引用上。本质是形参会被作为函数的局部变量,在开辟的函数的栈内存中被声明。
简要来讲:
如果参数是数,则类似值传递,
如果参数是列表和字典,则类似引用传递。
每个对象都会有个id, 可以用id()验证以上说法:
这个函数的参数是列表,是可变对象。
相关问答
Q1: python函数传对象对性能的影响
python函数传对象对性能有影响。在Python中,一切皆对象,Python参数传递采用的都是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典或者列表)的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能直接修改原始对象,相当于通过“传值’来传递对象,此时如果想改变这些变量的值,可以将这些变量申明为全局变量。
Q2: Python 的函数是怎么传递参数的
Python 的函数传递参数:
Python 传参数可以理解为 C 的 const 指针(your_type* const your_variable),它所指向的对象可以被修改产生副作用,但变量本身不能修改指向其他对象。这个和 C++ 的 reference 差不多。
所以如果一定要产生 C 的修改指针指向其他对象的效果,用 list、dict 或其他自定义的 mutable 对象包装是一个办法,但我认为这样是一种不良实践。在 C 语言中用参数输出结果有非常多的理由:
C 语言没有 tuple,不能返回多值,除非声明一个 struct 类型。这种情况下划分 in 参数和 out 参数成为一种惯例
C 语言没有异常机制,返回值一般要保留给 errno
但这些情况在 Python 中都是不存在的
关于python传参对象函数和python参数的传递的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。






