我们能否创建一个可以从python中的任何函数修改的变量?

问题描述 投票:-2回答:3

[您好,我想知道是否有一种方法可以声明一个可以从任何函数修改的变量而无需使用global关键字,因为我有很多函数可以修改某个变量,而有一半的时间我却忘记了[ C0]在创建修改myvar的新函数时。

python function variables global
3个回答
1
投票
您可以使用global myvar。创建新对象时,可以初始化变量并将其用于该对象的任何方法。

这些变量的前缀为classes


1
投票
是,这是python的默认行为。但是,您需要注意一些细微差别:

self.

当您要在函数内操作非容器变量时,可以通过以下方式进行:

创建具有内容的文件globals.py:

#!/usr/bin/env python # -*- coding: utf-8 -*- global_var1 = {} global_var2 = 10 global_var3 = [] def manipulate_globals1(): # this is the behavior you want global_var1['new_entry'] = 10 global_var3.append(10) # this would fail # global_var2 += 10 # but this works global global_var2 global_var2 += 10 def manipulate_globals2(): # here we create scoped variables with the same name as the globals global_var1 = [] global_var2 = 5 if __name__ == '__main__': print(global_var1, global_var2, global_var3) manipulate_globals1() print(global_var1, global_var2, global_var3) manipulate_globals2() print(global_var1, global_var2, global_var3)

在您的主/核心文件中:

a = 10 b = 20

尽管这是一种不好的做法,并且您不应该使用全球通货膨胀率

-1
投票
是,可以在不使用关键字global的情况下声明全局变量。变量的范围取决于在代码中声明的位置。要声明新的全局变量,只需在所有其他函数范围之外声明它有关python范围,全局变量和局部变量的更多帮助,请查看import globals def manipulate_globals(): globals.a = 20 globals.b = 30 if __name__ == '__main__': manipulate_globals() print(globals.a, globals.b)
© www.soinside.com 2019 - 2024. All rights reserved.