【问题标题】:Change variable_itself with function用函数改变变量本身
【发布时间】:2022-01-24 04:24:04
【问题描述】:

我想尝试使用函数来改变变量本身 像 some_list.reverse()。 (我想要打印结果 5) 我该怎么办?

b = 4
def hello(self):
    self = 5
    return None
hello(b)
print(b)

sorry I uploaded wrong picture

【问题讨论】:

  • 我不明白你在做什么
  • 当我插入一个变量作为参数并运行该函数时,我想要改变变量。
  • 请不要发布代码或数据的图像。
  • 我意识到我可以上传代码。谢谢

标签: python


【解决方案1】:

Python 不是这样工作的。当您将变量传递给函数时,您只是传递了对该变量绑定到的对象的引用。如果在函数内部为该参数分配一个新对象,它对外部变量没有影响。

现在,如果您传递一个类对象或一个列表或一个字典,那么您可以更改对象本身。例如:

def func(xx):
    xx[0] = 5

bl = [1,2,3]
func(bl)
print(bl)

打印[5,2,3],因为没有为该名称分配新对象。我们已经更改了传入引用的对象。但是如果我们说:

def func(xx):
   xx = [6,7,8]

这种变化不会在外面看到。 xx 现在绑定到一个全新的列表。

【讨论】:

  • 也适用于字典
  • 哦!有用。我可以使用 list 或 dict 代替 var。我又学到了一个知识,如果我在函数中没有声明对象(如列表)时调用索引,函数会使用全局对象的资源。
  • 这里有一个重要的区别。 OBJECTS 既不是全局的也不是局部的。对象生活在自己的空间中。 NAMES 是全局的或本地的。在您的示例中,名称 b 是全局的,并且绑定到一个整数对象。当您调用您的函数时,本地名称self 绑定到同一个整数对象。
【解决方案2】:

你可以这样做:

class A:
    b = 0


c = A
print()


def f(cls: A):
    cls.b = 5


print(c.b)
f(c)
print(c.b)

使用一个类。

Python 使用参考,只是给函数一个不同的参考。

【讨论】:

    【解决方案3】:
    b = 4
        
    def hello():
        global b
        b = 5
        return b
        
    hello()
    print(b)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-12-13
      • 2021-06-01
      • 2011-07-20
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      相关资源
      最近更新 更多