![](/img/trans.png)
[英]Using a global variable versus calling the function that returns said variable repeatedly
[英]A function that returns a global variable
有沒有辦法編寫一個返回全局變量的 function(在 function 內部創建變量並將其全局返回到外部)? 我無法在 function 調用之前分配變量,因為我在 tkinter 上使用它,因此,它在 While 循環中。
不,function 可以set
全局變量,但不能返回任何可能影響全局 state 的局部變量/值。
通常,全局變量很糟糕,並且很難對您的程序進行推理。 盡量只使用本地 state 的純函數
您可以使用global
將 function 中的變量標記為全局變量。 您還可以返回變量的值。
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')
# ...
我不同意全局變量是錯誤的並且是一種糟糕的編碼習慣。 這取決於您正在編寫什么代碼。 就我而言,我正在訓練一些機器學習模型,並且 function train_model()
由一個庫調用,該庫在 model 選擇過程中自動多次調用它。 變量_train_ds
和_val_ds
是一些我不想不必要地創建的內存數據集(我希望它們在 function train()
的各種調用中被重用),這里的全局變量是一個非常透明和高效的, 解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.