2024-04-25 22:43:59 发布
网友
有没有一种方法可以编写一个返回全局变量的函数(在函数内部创建变量,然后在函数外部全局返回)?我不能在函数调用之前分配变量,因为我在tkinter上使用它,因此它在While循环中
可以使用global将函数中的变量标记为全局变量。还可以返回变量的值
global
def f(): global x x = 1 return x
是的,你可以,这是我正在写的一个数据科学项目的例子
_train_ds = None _val_ds = None def get_ds(split: str): def _get_ds(): return CellExpressionGraphOptimized(split) if split == 'train': global _train_ds if _train_ds is None: _train_ds = _get_ds() return _train_ds elif split == 'validation': global _val_ds if _val_ds is None: _val_ds = _get_ds() return _val_ds else: raise NotImplementedError() def train_model(): # ... train_ds = get_ds('train') val_ds = get_ds('val') # ...
我不同意全局变量是错误的,是一种糟糕的编码实践。这取决于您正在编写的代码。 在我的例子中,我正在训练一些机器学习模型,函数train_model()由一个库调用,该库在模型选择过程中自动多次调用该函数。变量_train_ds和_val_ds是一些内存中的数据集,我不想不必要地创建这些数据集(我希望在函数train()的各种调用中重用它们),在这里,全局变量是一个非常透明、高效的解决方案
train_model()
_train_ds
_val_ds
train()
不,函数可以set全局变量,但不能返回任何可能影响全局状态的局部变量/值
set
一般来说,全局变量是不好的,这使得你很难对你的程序进行推理。尽可能使用仅具有本地状态的纯函数
可以使用
global
将函数中的变量标记为全局变量。还可以返回变量的值是的,你可以,这是我正在写的一个数据科学项目的例子
讨论
我不同意全局变量是错误的,是一种糟糕的编码实践。这取决于您正在编写的代码。 在我的例子中,我正在训练一些机器学习模型,函数
train_model()
由一个库调用,该库在模型选择过程中自动多次调用该函数。变量_train_ds
和_val_ds
是一些内存中的数据集,我不想不必要地创建这些数据集(我希望在函数train()
的各种调用中重用它们),在这里,全局变量是一个非常透明、高效的解决方案不,函数可以
set
全局变量,但不能返回任何可能影响全局状态的局部变量/值一般来说,全局变量是不好的,这使得你很难对你的程序进行推理。尽可能使用仅具有本地状态的纯函数
相关问题 更多 >
编程相关推荐