簡體   English   中英

有沒有辦法創建一個可以運行此代碼但不傳遞這么多參數的函數?

[英]Is there a way to create a function that will run this code but without passing so many arguments?

我試圖使我的項目中的代碼更高效、更短但不難閱讀/理解。

我看到有一些動作在代碼中重復了幾次。 這是一個游戲,所以需要重復這些。 我想也許我應該創建一個每次都調用的函數,但讀起來似乎不太友好,因為根據條件,我需要更改幾個變量,因此我需要將所有變量都傳遞給函數。

下面是一個例子:

if nxtTurn == 'player1':
    card2, player1 = EgyptionWarHelper.pull_out_card(player1, nxtTurn)
    storage.append(card2)
    nxtTurn = 'player2'
else:
    card2, player2 = EgyptionWarHelper.pull_out_card(player2, nxtTurn)
    storage.append(card2)
    nxtTurn = 'player1'

我想創建一個執行此操作的函數,但后來意識到我需要將所有變量傳遞給它,然后在其末尾返回一個包含 2 個變量的元組。 我確實聽說過全局變量,但我從未真正使用過它們,我不知道它們是否是解決方案。

編輯:我發現我不必傳遞一些參數,所以在我編輯函數並使用臨時變量之后,代碼更具可讀性。

此外,正如所評論的,我不必返回playerplayer2因為 python 通過引用而不是值傳遞列表。

為什么不使用臨時變量?

 if nxtTurn == 'player1': player = player1 nxtTurn = 'player2' else: player = player2 nxtTurn = 'player1' card2, player1 = EgyptionWarHelper.pull_out_card(player, nxtTurn) storage.append(card2)

它易於閱讀和維護。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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