簡體   English   中英

一個返回全局變量的 function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM