第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

動(dòng)態(tài)創(chuàng)建可以從任何地方導(dǎo)入的不可變常量?

動(dòng)態(tài)創(chuàng)建可以從任何地方導(dǎo)入的不可變常量?

米脂 2023-07-18 10:26:59
在我的python包中,我有一個(gè)entry_point run.py文件,它將種子(例如42)和cuda設(shè)備(例如“cuda:0”)作為命令行參數(shù)。由于這兩個(gè)變量在整個(gè)包的不同位置使用,因此我不想將它們作為參數(shù)在函數(shù)之間傳遞。因此,我做了以下事情:utils.py:import randomimport numpy as npimport torchdef set_device(device: str):    global _DEVICE    _DEVICE = torch.device(device)def get_device() -> torch.device:    return _DEVICEdef set_seed_number(seed: int):    global _SEED    _SEED = seeddef set_seeds():    torch.manual_seed(_SEED)    random.seed(_SEED)    np.random.seed(_SEED)然后在 run.py 中,我通過調(diào)用設(shè)置這些變量一次:from package.utils import set_device, set_seed_number...set_device(device)set_seed_number(seed=seed)現(xiàn)在我可以從包中的任何位置導(dǎo)入和調(diào)用get_device()andset_seeds方法,并且不必將這些變量作為參數(shù)傳遞。到目前為止,這種方法工作得很好,但是在閱讀了強(qiáng)烈建議不要在 python 中使用全局變量之后,我想知道是否有一種更 Pythonic 的方法來實(shí)現(xiàn)上述目標(biāo)?我已經(jīng)考慮過有一個(gè)專用的 Singleton 類,它會(huì)動(dòng)態(tài)地實(shí)例化這些常量,但我不確定它是否以及如何工作,以及它是否會(huì)被認(rèn)為更“Pythonic”。已經(jīng)感謝您的回答,也許您可以向我指出一些似乎適用于這種情況的模式。我只能猜測我不是第一個(gè)嘗試實(shí)現(xiàn)上述目標(biāo)的人。
查看完整描述

1 回答

?
侃侃無極

TA貢獻(xiàn)2051條經(jīng)驗(yàn) 獲得超10個(gè)贊

global老實(shí)說,如果謹(jǐn)慎使用并且只有在有充分理由時(shí)才使用它,我看不出有什么問題。(我認(rèn)為強(qiáng)烈反對global是因?yàn)樗?jīng)常被濫用。)


但是對于您建議的自定義類,不需要實(shí)例化它——您只需設(shè)置類變量即可。


main.py


import settings


settings.set_foo(3)

print(settings.Settings.foo)

settings.py


class Settings:

    pass


def set_foo(x):

    Settings.foo = x

原則上,這與將數(shù)據(jù)項(xiàng)放入其他可變集合(例如字典)中,然后將它們設(shè)置在定義它的模塊(或?qū)胨牧硪粋€(gè)模塊)的函數(shù)中沒有什么不同。


main.py


import settings


settings.set_foo(3)

print(settings.settings['foo'])

settings.py


settings = {}


def set_foo(x):

    settings['foo'] = x


查看完整回答
反對 回復(fù) 2023-07-18
  • 1 回答
  • 0 關(guān)注
  • 127 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號