Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何更改变量';函数中的值以及调用函数时要返回的值?_Python_Python 3.x - Fatal编程技术网

Python 如何更改变量';函数中的值以及调用函数时要返回的值?

Python 如何更改变量';函数中的值以及调用函数时要返回的值?,python,python-3.x,Python,Python 3.x,想象一下这种情况:我有3个文件:file1.py,file2.py和file3.py。所有文件都在同一个包下(可能在不同的文件夹中)。在file1.py中,有一个名为getter()的函数,其中包含一些局部变量,调用该函数时返回其值getter()接受参数。在运行时,我想通过从file2.py调用getter()来设置该局部变量的值,这样每当从file3.py调用getter()函数时,我都会从中获取最新的设置值。如何实现?请注意,该值应该更新多次,每次file3.py都应获得最新的设置值 为了

想象一下这种情况:我有3个文件:
file1.py
file2.py
file3.py
。所有文件都在同一个包下(可能在不同的文件夹中)。在
file1.py
中,有一个名为
getter()
的函数,其中包含一些局部变量,调用该函数时返回其值<如果需要设置该变量的值,则允许code>getter()接受参数。在运行时,我想通过从
file2.py
调用
getter()
来设置该局部变量的值,这样每当从
file3.py
调用
getter()
函数时,我都会从中获取最新的设置值。如何实现?请注意,该值应该更新多次,每次
file3.py
都应获得最新的设置值

为了演示,以下是我想要的演示文稿草稿:


file1.py
中使用
global
,它由
file1.getter()设置并返回。
val
需要是一个可选参数,以便在调用getter检索值时,可以调用它,而无需传递
val
的值

file1.py中的
#
_实际值=10#初始默认值
def getter(val=None):
全球真实价值
如果val不是无:
#设置
_真值
#get,或set+get
返回真实值
名称前的下划线
表示“内部使用”/“专用”,因此其他模块不应尝试直接访问或更改它

(如果您不希望它在设置时返回值,那么将
return\u REAL\u VAL
放在
else:
子句中。它仍然会隐式返回
None
,就像所有Python函数在没有返回值时一样。)


编辑:顺便说一句,“设置”和“getter”是不好/愚蠢的。而是使用-这需要创建一个类。您仍将全局维护该实例

file1.py中的
#
类别值:
定义初始化(自):
self._val=None#真实值
@财产
def val(自我):
返回自我
@塞特瓦尔酒店
def val(自身,值):
自我价值=价值
#导入时仅执行一次
getter=Value()#糟糕的名称
#在file2.py中,设置它
file1.getter.val=10
#在file3.py中,获取它
打印(file1.getter.val)
# 10
它将是相同的/只有一个
Value
getter
)实例,因为
导入文件1
,即使多次导入:

模块可以包含可执行语句以及函数定义。这些语句用于初始化模块。只有在import语句中第一次遇到模块名时,才会执行这些命令。(如果文件作为脚本执行,它们也会运行。)


我不明白你想做什么。您能提供更多详细信息吗?听起来您需要使变量成为模块的成员而不是函数,或者需要一个包含该变量以及getter和setter的类,并在模块中创建该类的实例。@hafiz031 Btw,由于类
Value
仅用于
file1.py
,因此应将其标记为“private”并命名为
\u Value
。谢谢,我有一个小问题-上述实现是线程安全的吗?@hafiz031否,它不是线程安全的。您需要使用等来使其与线程正常工作。