在Python中通过引用传递整数

发布于 2021-02-02 23:13:04

如何在Python中通过引用传递整数?

我想修改传递给函数的变量的值。我读过Python中的所有内容都是按值传递的,但是必须有一个简单的技巧。例如,在Java中,你可以通过引用类型的IntegerLong等等。

  1. 如何通过引用将整数传递给函数?
  2. 最佳做法是什么?
关注者
0
被浏览
71
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。

    在Python中,这种方式不太有效。Python将引用传递给对象。在函数内部,你有一个对象-你可以随意更改该对象(如果可能)。但是,整数是不可变的。一种解决方法是在可以更改的容器中传递整数:

    def change(x):
        x[0] = 3
    
    x = [1]
    change(x)
    print x
    

    这充其量是丑陋的/笨拙的,但是你不会在Python中做得更好。原因是因为在Python中,赋值(=)接收右侧对象结果的任何对象,并将其绑定到左侧对象*(或将其传递给适当的函数)。

    理解了这一点,我们可以看到为什么无法更改函数内部不可变对象的值的原因-你不能更改其任何属性,因为它是不可变的,并且你不能仅给新的“变量”赋值值,因为你实际上是在创建一个新对象(与旧对象不同),并为其赋予旧对象在本地名称空间中的名称。

    通常,解决方法是简单地返回所需的对象:

    def multiply_by_2(x):
        return 2*x
    
    x = 1
    x = multiply_by_2(x)
    

    *在上述第一个示例中,3实际上传递给x.setitem



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看