簡體   English   中英

Python:如何在多個函數中編輯(全局)變量?

[英]Python: How to edit (global) variable in multiple functions?

我正在開發一個可以播放音樂的 discord 機器人。 目前我正在嘗試讓隊列工作。 這是我的代碼:

...
    songList = []

    PATH = "./happy/"
    files = os.listdir(PATH)

    def AddToList(f):
        songList.append(f)

    for f in files:
        AddToList(f)


        song_num = 0
        songPath = PATH + songList[song_num]

    def SongDone(self):
            print("------\nSongDone was passed\n-------")
            voice.play(discord.FFmpegPCMAudio(songPath), after = playSong) 
            voice.source = discord.PCMVolumeTransformer(voice.source) 
            voice.source.volume = 0.07
            print(f"playing song {songPath}")
            global song_num
            song_num += 1
            print(f"Song number: {song_num}")

我正在嘗試做的是制作兩個函數,它們會在歌曲結束后相互傳遞。 Discord.py 在voice.play中有after ,它在歌曲結束后執行它所說的。 這將創建一個循環,每次傳遞它們時,它們將編輯song_num ,這會將播放路徑從 position 0 中的文件更改為 position 1 然后 2 等等。 當我使用print(f"Song number: {song_num}")檢查它是否真的有效時,每次函數相互傳遞時它都會加 1(第一次從 1 跳到 3,我不知道為什么)。 我對此一無所知,它的song_num已被編輯,但 songPath 並沒有改變,因此同一首歌(position 0 中的那首)被一遍又一遍地播放。 我認為問題是song_num變量,但我不知道如何解決它。 任何幫助表示贊賞。

我建議您在程序主體中聲明一個變量songPath ,而不是在任何循環或 function 中。 然后將其設為全局並運行代碼並查看路徑是否被修改。 請詢問進一步的問題。

暫無
暫無

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

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