Вопросы про глобальные переменные в Python

Jarhead

Постоялец
Регистрация
17 Июн 2011
Сообщения
414
Реакции
169
Код:


Код:
import time

from functions import FunctionsList
from stages import StageOne

# Глобальные переменные
mysql = False
sql = False

def checkdb():
    # Проверяем подключение к MySQL сайта
    try:
        mysql = pymysql.connect(
            host='**',
            user='***',
            password='***',
            db='***',
            charset='utf8mb4',
            cursorclass=DictCursor
        )

        # Проверяем подключение к SQL базе данных
        try:
            sql = pyodbc.connect('Driver={SQL Server Native Client 11.0};'
                                 'Server=HQSQL;'
                                 'Database=***;'
                                 'UID=***;'
                                 'PWD=**;')

        except Exception as e:
            FunctionsList().errorHandler(e, 'mysql')

            return False

    except Exception as e:
        FunctionsList().errorHandler(e, 'sql')

        return False

    finally:
        return True

if checkDb():
    #
else:
    #

Есть пару вопросов.

Как мне в классах FunctionsList и StageOne получить доступ к глобальным переменным mysql и sql? И второй вопрос туда же, если я в главном файле импортирую time, как мне в классах вызвать time? снова его нужно импортировать или как то глобальную переменную можно вызывать?

Не получается почему то в классах через global вызвать эти переменные в функции.
 

Maybe

Хранитель порядка
Модератор
Регистрация
7 Июл 2008
Сообщения
1.176
Реакции
1.232
Код:

Есть пару вопросов.

Как мне в классах FunctionsList и StageOne получить доступ к глобальным переменным mysql и sql? И второй вопрос туда же, если я в главном файле импортирую time, как мне в классах вызвать time? снова его нужно импортировать или как то глобальную переменную можно вызывать?

Не получается почему то в классах через global вызвать эти переменные в функции.

Не увидел где вы используете ваш второй класс. Если вам нужные mysql sql в эррорхендлере - перепишите его так, чтобы он могу принимать эти аргументы, и передавайте их туда, как вариант.
Касательно time также не понял как вы его используете, если вам нужны значения которые привязаны четко ко времени, вам надо передать эти значения в вашу функцию/класс, если не так все четко - можете в другом файле так же time импортировать и использовать.
 

chameleoz

Создатель
Регистрация
16 Июл 2019
Сообщения
11
Реакции
1
для доступа к глобальным переменным вам нужно объявить их в теле функции повторно с приставкой global. но при объявления функции и переменной должны находится в одном текстовом блоке.
Для просмотра ссылки Войди или Зарегистрируйся

По поводу использования import time вы должны импортировать его в каждом файле в котором вы к нему обращаетесь, тем не менее интерпретатор Python не будет его в реальности повторно импортировать если он ранее кешировал необходимые вызовы. так же хорошей практикой является импорт не всего файла а только необходимые вызовы
from time import
Для просмотра ссылки Войди или Зарегистрируйся
Для просмотра ссылки Войди или Зарегистрируйся
 
Сверху