Переменная задаётся, но ничего не изменяется
В самом начале кода выполняется это:
import json
import os
e_version = 16
aqiq = True
Это часть кода, которая берёт из файла JSON информацию и делает её как переменные Python:
def loadPlugins():
for folder in os.listdir("plugins"):
f = open("plugins/" + folder + "/manifest.json")
p = f.read()
f.close()
p = loads(p)
name = p["name"]
for item in plugins:
if item == name:
return
author = p["author"]
description = p["description"]
main_file = p["main_file"]
try:
require_version = p["require_version"]
except KeyError:
require_version = True
if require_version:
if e_version < p["required_version"]["min"]:
crit("E", f"Плагин '{name}' требует версию не ниже '{p['required_version']['min']}'")
elif e_version > p["required_version"]["max"]:
crit("E", f"Плагин '{name}' требует версию не выше '{p['required_version']['max']}'")
f = open("plugins/" + folder + "/" + p["main_file"])
p = f.read()
f.close()
p = loads(p)
try:
aqiq = p["Logic"]["allow_quotes_in_quotes"]
print(p["Plugin"]["onload_message"].replace("{name}", name).replace("{author}", author).replace("{description}", description))
except KeyError:
pass
plugins.append(name)
Теперь структура файлов и папок в паке plugins:
PluginExample
main.json
manifest.json
Файл manifest.json:
{
"name": "Plug123",
"author": "Werryx",
"description": "Пример плагина",
"main_file": "main.json",
"required_version": {
"min": 11,
"max": 17
}
}
Файл main.json:
{
"Logic": {
"allow_quotes_in_quotes": false
},
"Plugin": {
"onload_message": "Плагин {name} загружен!\nАвтор: {author}"
}
}
Если в самом конце loadPlugins() написать print(aqiq), то получится False, но если написать это после loadPlugins(), то в ответ будет True
Версия Python: 3.8 (PyCharm)
Ответы (1 шт):
Вы учебники по Python читали? Про глобальные переменные что-то знаете? У вас aqiq вне функции loadPlugins() и aqiq внутри функции loadPlugins() - это две разные переменные. Поэтому и выводит один раз то значение, которое имеет локальная aqiq (False), а второй раз - значение глобальной переменной, которое, естественно не изменилось и осталось True. Я не знаю, что вам в действительности надо, но если это одна и та же переменная, то опишите ее внутри функции как глобальную.