簡體   English   中英

UnboundLocalError:在賦值之前引用了局部變量“userOrder”,但是之前以類似的方式調用它沒有錯誤

[英]UnboundLocalError: local variable 'userOrder' referenced before assignment, however it had no error being called in a similar manner earlier

我正在使用 discord.py 插件在 python 中寫作。 我的代碼的最頂部如下所示:

import random
import sqlite3
import discord
import shuffle as shf
import time
import os

client = discord.Client()

userOrder = []
roundOrder = []
turnPos = 0
joinedPlayers = 0
maxPlayers = 0
currentPlayer = 0
centerPot = 0

@client.event
async def on_ready():
    print("Logged in")
    print(userOrder, roundOrder, joinedPlayers, currentPlayer + "\n---")

@client.event
async def on_message(message):
    print(userOrder, roundOrder, joinedPlayers, currentPlayer)

運行時的結果是這樣的:

Logged in
[] [] 0 0
---
Ignoring exception in on_message
Traceback (most recent call last):
  File "C:\Program Files (x86)\Python36-32\lib\site-packages\discord\client.py", line 333, in _run_event
    await coro(*args, **kwargs)
  File "C:\Users\Willi\Desktop\Python Projects\Discord Bots\Poker Bot\Poker Game.py", line 29, in on_message
    print(userOrder, roundOrder, joinedPlayers, currentPlayer)
UnboundLocalError: local variable 'userOrder' referenced before assignment

這讓我感到困惑,因為第一個 function on_ready() 調用全局變量沒有問題,而第二個 function,具有相同的縮進並且沒有額外的代碼未能調用全局變量並認為我想要一個局部變量。

您需要使用全局變量或機器人變量,我建議使用機器人變量

全局變量:

@client.event
async def on_ready():
    global userOrder, roundOrder, joinedPlayers, currentPlayer 
    print("Logged in")
    print(userOrder, roundOrder, joinedPlayers, currentPlayer + "\n---")

@client.event
async def on_message(message):
    global userOrder, roundOrder, joinedPlayers, currentPlayer 
    print(userOrder, roundOrder, joinedPlayers, currentPlayer)

機器人變量:

client.userOrder = []
client.roundOrder = []
client.turnPos = 0
client.joinedPlayers = 0
client.maxPlayers = 0
client.currentPlayer = 0
client.centerPot = 0

@client.event
async def on_ready():
    print("Logged in")
    print(client.userOrder, client.roundOrder, client.joinedPlayers, client.currentPlayer + "\n---")

@client.event
async def on_message(message):
    print(client.userOrder, client.roundOrder, client.joinedPlayers, client.currentPlayer)

暫無
暫無

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

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