ImportError: cannot import name 'amount_out_gold' from 'core.handlers.selectamount'

Сначала у меня была проблема что переменная не перезаписывалась и вот да, потом я сделал ее глобальной и у меня теперь импорт ерор.

А мне всего лишь нужно из core\handlers\selectamount.py передать amount в core\handlers\callback.py

core\handlers\callback.py

from aiogram import Bot
from aiogram.types import Message, CallbackQuery

from core.utils.callbackdata import WeapInfo
from core.handlers.selectamount import amount_out_gold

print("call ", amount_out_gold)

async def choice_weapon(callback: CallbackQuery, callback_data: WeapInfo):
    print("call ", amount_out_gold)
    stattrack = callback_data.stattrack
    name = callback_data.name
    skin = callback_data.skin

    if stattrack:
        print("call 1 ", amount_out_gold)
        answer = f'Хорошо выставляйте {stattrack} {name} {skin} за {amount_out_gold}'
        await callback.message.edit_text(answer)
    elif stattrack == None or stattrack == "None":
        print("call 2 ", amount_out_gold)
        answer = f'Хорошо выставляйте {name} {skin} за {amount_out_gold}'
        await callback.message.edit_text(answer)


core\handlers\selectamount.py

from aiogram import Bot
from aiogram.types import Message, CallbackQuery
from aiogram.fsm.context import FSMContext

from core.utils.shopstates import SelectAmount
from core.utils.dbconnect import Request
from core.keydoard import inlineweapon as inweapon

from dotenv import load_dotenv
import os

load_dotenv()
ADMIN_ID = os.getenv("ADMIN_ID")

async def out_gold_weapon(message: Message, state: FSMContext, request: Request, bot: Bot):
    global amount_out_gold
    await state.update_data(amount=message.text)
    amount = await state.get_data()
    amount = amount['amount']
    amount = int(amount)
    amount_out_gold = amount
    await message.answer(f'Выберите оружие для вывода! Вы хотите вывести {message.text} голды\n{amount}',
                         reply_markup=inweapon.get_inline_keyboard())
    print("amount ", amount)
    print("amount_out_gold ", amount_out_gold)
    await state.clear()
    print(amount)
    print(amount_out_gold)


Ответы (1 шт):

Автор решения: MarianD

У вас переменная amount_out_gold определена только в теле функции

async def out_gold_weapon(message: Message, state: FSMContext, request: Request, bot: Bot):
    global amount_out_gold

значит, что import его не видит.

Из документации:

Имена, перечисленные в операторе global, не должны определяться как формальные параметры или в цели управления циклом for, определении class, определении функции, операторе import или аннотации переменных.

Вы должны определить то же самое имя еще и на глобальном уровне, например так:

amount_out_gold = 0

async def out_gold_weapon(message: Message, state: FSMContext, request: Request, bot: Bot):
    global amount_out_gold

Теперь импорт этой переменной осуществится, но зачем вам это будет, я не понимаю...

→ Ссылка