Инициализация переменной без присвоения значения. Python
Пожалуйста помогите, создал функцию, чтобы приконнектиться к БД, но есть проблема, я не могу дальше пользоваться переменной cursor, чтобы работать с бд.
def ConnectServer(): cnxn = pyodbc.connect('DRIVER=;SERVER='+server+';DATABASE='+database+';UID='+username.get()+';PWD='+ password.get()) cursor = cnxn.cursor()
Вопрос: можно ли как-нибудь инициализировать эту переменную в основном коде, без присвоения ей значения? P.S. Мне нужно, чтобы я мог обращаться к этой переменной при помощи global в функции и она была видна в основном коде Код кнопки:
bb1 = Button(pas, text='Ввести', background="#555", foreground="#ccc", command=ConnectServer, font='Times 12 italic')
Полный код:
####################################################################### ####################################################################### def ConnectServer(): global cursor cnxn = pyodbc.connect('DRIVER=;SERVER='+server+';DATABASE='+database+';UID='+username.get()+';PWD='+ password.get()) cursor = cnxn.cursor() root.deiconify() pas.withdraw() ####################################################################### ####################################################################### ###Подключение#К#БД### root = Tk() root.configure(background='#888') root.title('СУБД') root.geometry('1200x600+370+40') root.withdraw() server = 'LAPTOP-C0VE2QJR\SERVER' database = 'Metropol' username = StringVar() password = StringVar() username.set('admin') password.set('password') pas = Toplevel(background= "#888") pas.title('Вход') pas.geometry('300x300') Labll = Label(pas, text='Введите логин', font='Times 12 italic', fg='#111') Labll.grid(row=0, column=0, sticky=S, pady=30, padx=70) Entr1 = Entry(pas, text='', textvariable=username, font='Times 12 bold', justify='center') Entr1.grid(row=1, column=0, sticky=S, padx=70, pady=3) Labl2 = Label(pas, text='Введите пароль', font='Times 12 italic', fg='#111') Labl2.grid(row=2, column=0, sticky=S, pady=30, padx=70) Entr2 = Entry(pas, text='', textvariable=password, font='Times 12 bold', justify='center') Entr2.grid(row=3, column=0, sticky=S, padx=70, pady=3) bb1 = Button(pas, text='Ввести', background="#555", foreground="#ccc", command=ConnectServer, font='Times 12 italic') bb1.grid(row=4, column=0, sticky=S, padx=70, pady=10) ####################################################################### ###Вывод#Таблиц### cursor.execute("SELECT Номер FROM ЛицевойСчет") rows = cursor.fetchall() print(rows)
2. Переменные
Переменные содержат данные. Благодаря этому к ним можно обращаться, заново использовать, вызывать, назначать и так далее.
Понимать переменные важно для работы с любой логикой в программировании. Это то, что знает любой программист вне зависимости от языка программирования, и поэтому это так важно для начинающих.
Простейшее определение переменной — это именованный контейнер для данных, к которым нужно обращаться в программе. Есть 2 основные причины для этого:
- Зачастую данные — это больше чем 2 символа.
- Обычно к ним нужно обращаться по несколько раз.
Где используется?
- Сложно представить программирование без переменных. Это как обращаться к людям, не используя их имена и фамилии. Можно только представить, насколько это было бы неудобно.
- В программировании переменные используются для определения и обращения к данным разных размеров, типов и форм.
Правила использования
- При присвоении значения переменная всегда находится слева, а данные — справа.
- Имя переменной может начинаться с символа или нижнего подчеркивания ( _ ).
- Для вывода значения переменной с помощью функции print нужно передавать ее без кавычек.
Частые ошибки
- Начинать имя переменной с цифры.
- Использовать символы (кроме нижнего подчеркивания) в имени переменной.
- Использовать в переменной пробелы.
Примеры использования переменных
Предположим, что есть большое число: 149597970 . Оно обозначает расстояние между Солнцем и Землей в километрах.
Предположим, что к этому значению нужно обратиться для выполнения вычислений. Вместо того, чтобы каждый раз вводить его, можно просто использовать переменную. Вот так:
>>> sun_to_earth = 149597970
>>> sun_to_earth = sun_to_earth + 1
>>> print(sun_to_earth)
149597971Эти данные могли бы быть и куда объемнее. В них, например, могло бы быть 100 цифр, а обращаться к данным, возможно, нужно было бы в 100 разных местах. Таким образом польза от присваивания имени значению очевидна.
Разберем код примера:
- Сначала создается переменная sun_to_earth , и ей присваивается значение 149597970.
- Переменной sun_to_earth присваивается новое значение — 149597971.
- Выполняется функция print , которая выводит текущее значение переменной, то есть, 149597971.
Советы:
- Название переменной всегда расположено слева при присваивании. А значение, которое нужно присвоить, располагается справа.
- В Python (и любом другом языке программирования) очень важно правильно выбирать название переменной, ведь к ней придется часто обращаться:
- Кое-какие названия являются зарезервированными в Python, поэтому их использовать нельзя: print, true, false, count, sum и так далее. Со временем вы все их узнаете.
- Названия переменных должны начинаться с символа алфавита или нижнего подчеркивания.
- Если начать переменную с символа или нижнего подчеркивания, то после в нее можно включать и цифры.
- Названия переменных чувствительны к регистру. Если был использован символ в верхнем регистре, то именно так и нужно обращаться к переменой в будущем.
- Практические соглашения именования переменных:
- Можно добавлять небольшой суффикс, чтобы не путать переменную с ключевым словом Python: var_number , var_true , v_start , v_close, the_class, the_one, the_name. Креативность разрешена, главное, чтобы система оставалась понятной.
- Лучше не использовать переменную в один символ, только если это цикл или любая другая короткая операция. Такие имена как a, x, y, z начинают путать уже спустя пару минут после того, как их впервые использовали.
- Слова рекомендуется разделять нижним подчеркиванием: cars_сounted, doors_сlosed, dogs_saved, ships_fixed и так далее. Это повышает читаемость переменных. Сравните: timeinmoscow и time_in_moscow.
- Рекомендуется (часто требуется) использовать латиницу и английские слова. Так ваш код будут понимать больше разработчиков.
>>> dogs_name = "Шарик"
>>> dogs_kind = "Сенбернар"
>>> print("Его зовут " , dogs_name , ". Он ", dogs_kind, ".", sep="")
Его зовут Шарик. Он Сенбернар.Это отличный пример применения не только переменной, но и функции print , ведь в последней используются сразу текст и значение переменной. Плюс, названия переменных выбраны очень удачно. Названия для переменных — тема субъективная, поэтому достаточно использовать то, что удобно для вас.
В одной строке можно присвоить сразу несколько переменных. Вот пример:
Как работают переменные в Python
Каждый элемент данных в Python является объектом определенного типа или класса. Когда, в процессе выполнения программного кода, появляется новое значение, интерпретатор выделяет для него область памяти — то есть создаёт объект определенного типа (число, строка и т.д.). После этого Python записывает в свой внутренний список адрес этого объекта.
Но как теперь получить доступ к созданному объекту? ♀️
Для этого и существуют переменные — они дают возможность удобно работать с объектами используя имена вместо адресов.
Простыми словами переменная в Python — это просто имя, прикрепленное к определенному объекту
Чтобы создать новую переменную в Python, ее не нужно заранее инициализировать — достаточно придумать ей имя и присвоить значение через оператор = .
a = 123 print(a) > 123 print(type(a)) print(id(a)) 1827204944
В примере выше мы создали переменную a и присвоили ей значение 123 , далее вывели ее значение, тип и адрес объекта в памяти.
Приведем простую аналогию: Представьте, что у вас есть много непрозрачных бутылок, а сами вы занимаетесь производством фруктовых соков. Однажды вы выжали фрукты и в один сосуд налили апельсиновый сок, а во второй — яблочный. После этого ёмкости были запечатаны. Резонный вопрос: как теперь выяснить содержимое отдельно взятой бутылки?
Ответ: предварительно их подписать. Сделав это, вы будете точно знать, что находится в бутылках, а значит, сможете производить с ними дальнейшие операции: назначать цену, сортировать, отправлять на продажу и так далее.
Итак, ваш фреш-бизнес разросся, и для хранения соков пришлось арендовать склад, где каждая бутылка находится строго на своём месте. Теперь у вас есть ещё и специальные карточки: на каждой из них записаны наименование продукта и адрес этого продукта на складе. Когда требуется достать конкретную ёмкость с соком, вы смотрите на карточку, читаете номер ячейки, а затем идёте к обозначенному месту на складе и берёте оттуда нужную бутылку.
В данном примере:
- переменная — карточка продукции;
- адрес — это номер ячейки на складе;
- объект — сама ячейка;
- данные — бутылка с соком внутри.
Переменные, объекты и ссылки
Для понимания работы переменных, необходимо разобрать, что происходит, когда вы создаете новую переменную и присваиваете ей значение?
В данном примере происходит следующее:
- создается объект типа int со значением 100 ;
- создается переменная a ;
- в переменной a сохранится адрес (ссылка) на объект;
Важно : переменная в Python не хранит значение напрямую — она хранит лишь ссылку на объект
Теперь посмотрим что произойдет, если одной переменной присвоить другую переменную:
b = a print(id(a)) > 1827204576 print(id(b)) > 1827204576
В данном примере Python не создает новый объект — он просто создает переменную, которая ссылается на тот же объект, что и переменная a .
Предположим, что в какой-то момент вы захотели поменять значение переменной b :
b = 500 print(id(a)) > 1827204576 print(id(b)) > 56754272
В данном примере Python создал новый объект типа int, и теперь переменная b ссылается на новый объект.
Рассмотрим еще один пример:
b = "tree" print(id(b)) > 54134048
В этом примере создается новый объект типа str , и переменная b ссылается на новый объект.
b = "tree", переменная b теперь ссылается на новый объект строкового типа
На объект типа int со значением 500 больше никто не ссылается. Следовательно, он больше не доступен и будет удален сборщиком мусора (тем самым освободив немного памяти).
Идентификатор объекта (Object Identity)
Идентификатор объекта — это адрес объекта в памяти.
В примерах выше мы вызывали функцию id() . Эта функция возвращает число, которое является неизменным и уникальным для каждого объекта на протяжении его жизненного периода:
a = b = 1 print(id(a)) > 1593636784 print(id(b)) > 1593636784 print(id(1)) > 1593636784
Видно, что объект здесь всего один. А a и b — по-разному названные переменные, которые на него ссылаются. Проверить равенство идентификаторов можно с помощью оператора is :
print(a is b) > True
Работа с переменными
Именование переменных
В языке Python имя переменной должно состоять только из цифр, букв и знаков подчеркивания. И не должно начинаться с цифры.
Это жёсткий внутренний закон языка, помимо которого есть свод более мягких, но не менее важных правил, и они говорят нам:
- давайте переменным имена, которые описывают суть объекта;
- используйте единый стиль именования в рамках каждого проекта;
- старайтесь не создавать наименования длиннее пятнадцати символов;
Как передать значение переменной в другую функцию?
т.е. я перенес значение переменной message в переменную moon. И это значение moon, мне нужно перенести в другую функцию, в которой это значение должно перейти во временную бд машины состояния. Но на выходе мне выдает:
TypeError: load_win() missing 1 required positional argument: 'moon'
Как правильно перенести значение moon в следующую функцию?
- Вопрос задан более года назад
- 199 просмотров
7 комментариев
Простой 7 комментариев
