[英]Global variable changed by multiple functions - how to declare in 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.