亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我應該使用一個類在函數之間共享多個變量嗎?

我應該使用一個類在函數之間共享多個變量嗎?

智慧大石 2021-10-12 16:03:46
我有一個大函數可以進行多次測量。在函數開始時從數據庫和文件中讀取參數列表。這些參數中的一些在某種程度上屬于一起(例如運動限制),其他的則是分開的。我不想將所有參數都放在一本字典中,即使只是為了挑戰它。為了使函數更緊湊、更簡潔,我會將所有參數的查詢放在一個單獨的函數中。但是,我不知道返回多個變量的最佳/正確方法。在搜索我的書籍和 Stack Overflow 時,我找到了以下選項:我可以返回一個包含所有變量的字典,但想知道是否還有另一種方法。全局變量:由于我不在其他地方使用參數,這似乎是不好的做法。返回一個變量元組,但它們不會被命名。我在 Stack Overflow 上找到的大多數答案都建議創建一個類。這會將我的函數變成一個類。所以我想知道,這是否被認為是好的做法:為可以在一個函數中完成的事情創建一個類(只有兩個函數)?
查看完整描述

3 回答

?
慕的地6264312

TA貢獻1817條經驗 獲得超6個贊

返回一個元組;在您的調用函數中,您可以使用隱式元組解包

top_limit, bottom_limit, another_value = the_query_function()

在被調用的函數中:

return top_limit, bottom_limit, another_value

非常干凈和簡單,沒有樣板

或者你可以像你說的那樣使用一個類,這真的取決于手頭工作的復雜性

編輯:如果代碼從使用類中獲利,那么一旦任務 imo 使用作業進行調用就不錯了


查看完整回答
反對 回復 2021-10-12
?
SMILET

TA貢獻1796條經驗 獲得超4個贊

對這樣一個問題的回答總是取決于復雜性。

但是當你說:

我有一個大函數可以進行多次測量。

這可能是考慮重組的一個跡象。

我總是喜歡讓一個函數只做一件簡單的事情。 Python之禪教我們“簡單勝于復雜”和“復雜勝于復雜”。

在那種情況下,我會使用一個類而不是一個太復雜的函數。

根據經驗:如果您的函數或方法超過 20 行代碼或返回超過兩三個參數,您應該考慮重組。在大多數情況下,您希望該函數成為“萬事通”。這些函數有時會爆炸,處理它們變得越來越復雜。


查看完整回答
反對 回復 2021-10-12
?
catspeake

TA貢獻1111條經驗 獲得超0個贊

另一種選擇是使用嵌套dicts 按某些標準對參數進行分組。


例如:


d = {

    'movement_limits': {

        'top': 5,

        'bottom': 1,

    },

    'window_size': {

        'height': 10,

        'width': 10,

    },

    'num_players': 9,

}

并像這樣訪問它:


print(d['window_size']['height'])

print(d['movement_limits']['top'])

這幾乎沒有開銷(不是整個類)并且仍然具有一定的可讀性。


查看完整回答
反對 回復 2021-10-12
  • 3 回答
  • 0 關注
  • 215 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號