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

Константы 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
'''

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

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

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

добавил(а): Tfotda
дата: 2018-06-25 07:40:24
Есть ещё больше изысканный способ через якобы приватную переменную и @property у которого setter сделать ничего не делающим





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