голосование
Firebird
Программы
Майнинг
Docker
Хостинг
Железо
Заработок на сайте
PHP
HTML
BASH
PostgreSQL
Мобильные технологии
Ремонт
Mercurial
Javascript
Ресурсы
GIT
SEO
Oracle
Python
Проголосуйте за категорию!
счётчик
Яндекс.Метрика

Константы Python

Хочу вам рассказать о константах Python. Константы в питоне ничем не отличаются от простых переменных. Константы пишут с больших букв. Например IP_SERVER='111.11.11.11'. Вы можете налету переписать значение константы и потом ваш питоновский скрипт не выдаст ошибку. В языке PHP константа объявляется один раз и попытка изменения значения константы приводит к ошибке.


#!/usr/bin/python3
NAME_SERV='MAIN'
print(NAME_SERV)
'''
вывод:
MAIN
'''

# случайное изменение значения
NAME_SERV='MAIN2'
print(NAME_SERV)
'''
вывод:
MAIN2
'''

# обязательно поставьте запятую
NAME_SERV = ('MAIN3',)
print(NAME_SERV[0])
NAME_SERV[0] = 'MAIN4'
'''
вывод:
Traceback (most recent call last):
  File "./constant.py", line 22, in 
    NAME_SERV[0] = 'MAIN4'
TypeError: 'tuple' object does not support item assignment

'''

При такой попытке изменения значения (NAME_SERV[0] = 'MAIN4') возникает ошибка, но при таком таком изменении NAME_SERV = ('MAIN4',) ошибки не возникает. Значение переменной полностью заменяется другим значением. Будьте внимательны!

Предлагаю более сложный вариант. Тут словарь с кортежами. В примере показано как можно обращаться к значениям словаря. При попытке изменения кортежа происходит ошибка. Вы можете использовать этот способ. Подробнее о кортежах читайте на странице кортежи Python


#!/usr/bin/python3

SERVER = {'name': ('main',), 'ip': ('128.11.11.11',)}
print(SERVER)
'''
вывод:
{'ip': ('128.11.11.11',), 'name': ('main',)}
'''
print('server name:', SERVER['name'][0], 'ip:', SERVER['ip'][0],)
'''
вывод:
server name: main ip: 128.11.11.11
постараемся изменить значение name 
'''
SERVER['name'][0] = 'main2'
'''
вывод:
Traceback (most recent call last):
  File "./constant.py", line 44, in 
    SERVER['name'][0] = 'main2'
TypeError: 'tuple' object does not support item assignment
'''

Какой способ выбрать решать вам. Использовать кортежи надёжнее.

просмотры: 12579, уровень: лёгкий уровень, рейтинг: 4, дата: 2017-09-14 10:22:46
проголосовать:

Комментарии:

добавил(а): Tfotda
дата: 2018-06-25 07:40:24
Есть ещё больше изысканный способ через якобы приватную переменную и @property у которого setter сделать ничего не делающим
добавил(а): Pavel
дата: 2020-09-28 13:51:37
С кортежами оригинально. Получается фактически констант, как таковых, в python нет! Это чисто для программиста/разработчика, верхний регистр для обозначения.





поиск
реклама
банеры
Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/well_web_vps_kvm Аренда VPS KVM в Европе Мы предлагаем в аренду VPS серверы с выделенным IP-адресом, которые полностью эмулируют физический сервер.
http://trainingweb.ru/redirect/domains домен RU домен RU всего за 99 рублей
http://trainingweb.ru/redirect/pingadmin мониторинг сайтов сервис мониторинга работы сайта, мониторим HTTP, HTTPS, FTP, MYSQL, PostgreSQL, POP3, SMTP, IMAP