В Python нам не нужно указывать тип переменной, потому что Python – это язык вывода и достаточно умен, чтобы получить тип переменной.
Имена переменных могут состоять из букв и цифр, но они должны начинаться с буквы или символа подчеркивания. Для имени рекомендуется использовать строчные буквы. Rahul и rahul – две разные переменные.
Что такое переменная в Python?
Переменная в Python – это имя, которое используется для обозначения ячейки памяти. Переменные также известны как идентификаторы и используются для хранения значений.
Наименование идентификатора
Переменные – это пример идентификаторов. Идентификатор используется для распознавания литералов в программе. Правила присвоения имени идентификатору приведены ниже.
Объявление переменной и присвоение значений
Python не обязывает нас объявлять переменную перед ее использованием в приложении. Это позволяет нам создавать переменную в нужное время.
Нам не нужно явно объявлять переменную в Python. Когда мы присваиваем переменной какое-либо значение, эта переменная объявляется автоматически. Оператор равенства(=) используется для присвоения значения переменной.
2 Learn Python имена переменных
Ссылки на объекты
Когда мы объявляем переменную, необходимо понимать, как работает интерпретатор Python. Процесс обработки переменных несколько отличается от многих других языков программирования.
Python – это объектно-ориентированный язык программирования; каждый элемент данных принадлежит к определенному типу класса. Рассмотрим следующий пример.
print(«John»)
John
Объект Python создает целочисленный объект и отображает его на консоли. В приведенном выше операторе печати мы создали строковый объект. Давайте проверим его тип с помощью встроенной функции Python type().
type(«John»)
В Python переменные – это символическое имя, которое является ссылкой или указателем на объект. Переменные используются для обозначения объектов этим именем.
Давайте разберемся в следующем примере:
a = 50
На изображении выше переменная a относится к целочисленному объекту.
Предположим, мы присвоили целочисленное значение 50 новой переменной b.
Переменная b относится к тому же объекту, на который указывает a, поскольку Python не создает другой объект.
Присваиваем новое значение b. Теперь обе переменные будут ссылаться на разные объекты.
Python эффективно управляет памятью, если мы присвоим одной и той же переменной два разных значения.
Идентичность объекта
В Python каждый созданный объект уникально идентифицируется в Python. Python гарантирует, что два объекта не будут иметь одинаковый идентификатор. Встроенная функция id() используется для распознавания идентификатора объекта. Рассмотрим следующий пример.
LEGB-rule. Как Python ищет имена переменных
a = 50 b = a print(id(a)) print(id(b)) # Reassigned variable a a = 500 print(id(a))
140734982691168 140734982691168 2822056960944
Имена переменных
Каждая переменная должна иметь уникальное имя. Программист сам решает, исходя из постановки задачи и ее алгоритма, какие имена давать переменным. Рекомендуется переменным давать смысловые, информационные имена.
Некоторые требования при задании имен переменным:
- имя должно начинаться с буквы;
- имя может содержать любые буквы и цифры;
- в имени не должно быть пробелов;
- имена нельзя называть ключевыми словами VisualBasic;
- в пределах области видимости имя должно быть неповторимым (уникальным).
Типы данных
- целочисленные: байтовый – Byte (1) 1 – префикс byt, значения: от 0 до 255; целый – Integer (2) – префикс int, значения целого: от –32768 до 32767; длинное целое – Long (4) – префикс lng, значения: от –2147483648 до 2147483648;
- действительные с плавающей точкой: одинарной точности – Single (4) – префикс sng, значения: от –3,4 38 …-1,4 45 до 1,4 -45 …3,4 38 ; двойной точности – Double (8) – префикс dbl, значения: от –1,7 -308 … -4,9 -324 до 4,9 -324 … 1,7 308 ;
- действительные с фиксированной точкой, денежный:Currency (8) – префикс cur, значения: целая часть – 15 цифр, дробная – до 4;
- строковые: String– префикс str, (фиксированной длины – 1б на символ), String (переменной длины, (22 + 1)б на символ);
- логические – Boolean (2) – префикс bln, значения: True (Истина) или False (Ложь);
- объектные: Object (4) – префикс obj;
- произвольные:Variant– префикс vnt, (16 – для чисел; 22 – для 1-го символа);
- даты: Date (8) – префикс dtm.
Источник: studfile.net
Именование в Python — как выбирать имена и почему это важно
Начинающие программисты не придают значение именованию переменных при написании кода. Особенно это касается новых проектов — есть какая-то идея, её нужно реализовать и получить результат. Нет времени на то, чтобы задумываться о названиях для переменных, функций, классов и т.п.
Но проект растёт, количество кода увеличивается, и в один прекрасный день разработчик понимает, что 80% его времени уходит на чтение кода и его модификацию (а вовсе не на написание нового кода). Код, написанный неделю назад, кажется незнакомым — приходиться тратить время и силы чтобы вспомнить, что он делает. Плохое именование усугубляет картину:
# Пример кода с плохим именованием. Чтобы понять, что тут происходит, нужно полностью прочитать код. import re def clear_list(list, flag=False): # что делает функция clean_list? что такое list и flag? res = [] # что такое res? for item in list: # что такое item и какого он типа? if flag and item[0].islower(): # почему при этом условии нужно сделать continue? continue if re.match(«^[A-Za-zА-Яа-я]*$», item): # регулярное выражение это и есть смысл всей функции? res.append(item) return res f = open(«file.txt», «r», encoding=’utf-8′) # что находится в файле? content = f.read().splitlines() # какую информацию мы получим в переменной content? users = clear_list(content, True) # users — это какие-то абстрактные пользователи
Минусы такого именования:
- увеличится время на чтение кода;
- вы будете тратить много сил на то, чтобы вспомнить свой же код, написанный ранее;
- больше связей между сущностями придется держать в голове;
- коллега по цеху, работая с вашим кодом, вряд ли скажет вам спасибо.
Основная суть программирования — это управление сложностью. Поддерживать сотни тысяч строк кода — достаточно сложно. Для уменьшения сложности приложение разбивают на модули, методы и классы. Правильное именование переменных также помогает в управлении сложностью.
Управление сложностью является сущностью компьютерного программирования.
Ниже рассмотрим, как правильно именовать переменные в Python, какую нотацию использовать + кратко рассмотрим стандарт РЕР8.
Допустимые имена переменных в Python
Вы можете придумать любые названия для переменных в Python, но есть несколько правил, которые нужно соблюдать.
Правила для переменных в Python:
- Имя переменной должно начинаться с буквы ( test ) или символа подчеркивания ( _test );
- Имя переменной не может начинаться с цифры;
- Имя переменной может содержать только буквенно-цифровые символы и подчеркивание (Az, 0-9 и _);
- Имена переменных чувствительны к регистру ( test , Test и TEST — три разные переменные).
- Имя переменной не должно совпадать с зарезервированным ключевым словом.
Список всех зарезервированных ключевых слов можно посмотреть так:
import keyword print(keyword.kwlist)
Если нарушить правило именования, получим SyntaxError :
3r = 10 print(3r) File «test.py», line 1 3r = 10 ^ SyntaxError: invalid syntax
Нотация в Python: CamelCase или under_score?
Нотация — это соглашение об именовании. Наиболее популярные нотации в программировании — camel case и underscore.
camelCase (еще называется «верблюжья нотация») — это стиль, в котором слова пишутся слитно, а каждое слово начинается с прописной (большой) буквы. Имеется два подвида этого стиля: lowerCamelCase (все слова кроме первого начинаются с прописной буквы) и UpperCamelCase (все слова, в том числе и первое пишутся с большой буквы).
under_score (snake_case) — при использовании этого стиля в качестве разделителя используется символ подчеркивания «_», а все слова начинаются со строчной (маленькой) буквы;
Существует также стиль kebab-case , который похож на under_score, но вместо знака подчеркивания «_» в нем используется тире «-«.
В Python преимущественно используется нотация under_score
Одно из правил Zen of Python ( PEP20 ) — «читаемость имеет значение». Нотация under_score отлично вписывается в это правило, т.к. она удобна для чтения. Это подтверждено исследованием , проведенным в департаменте компьютерных наук Кентского государственного университета в США.
В нем, на основании количества фиксаций и продолжительности взгляда был произведен анализ влияния типа нотации на точность, время и усилия, необходимые для распознавания идентификатора. В ходе исследования было доказано, что новички распознают переменные, разделенные подчеркиванием в два раза быстрее и тратят на это меньше усилий. У опытных пользователей эта разница не так велика.
Однако under_score — не единственная нотация, рекомендуемая к использованию в Python. Вот гайдлайн по именованию, основанный на рекомендациях Гвидо ван Россума (автора языка Python):
Как выбирать имена для переменных в Python
Основной принцип хорошего именования — имена должны быть содержательными (полностью отражать своё назначение). Перед тем, как дать имя переменной, функции или классу, ответьте на вопросы:
- Почему эта переменная (функция, класс и т.п.) существует?
- Что она делает? (или какие данные в ней хранятся?)
- Как используется?
Пример плохого именования:
def area(side1, side2): return side1 * side2 d = area(4, 5)
В данном примере переменная d не обозначает ровным счётом ничего. По названию функции area не понятно, что она делает, какие параметры принимает и что возвращает.
Пример хорошего именования:
def get_rectangle_area(length, width): return length * width area = get_rectangle_area(4, 5)
В примере понятно что делает функция get_rectangle_area (передав длину и ширину, функция вычисляет и возвращает площадь прямоугольника). Результат попадет в переменную area (площадь).
Содержательное имя понятно, легко читается и не требует дополнительных комментариев.
Вот еще несколько рекомендаций по выбору имён в Python:
⚡ Подбирайте имена на английском языке. Не нужно использовать русские имена переменных и писать их транслитом. Для программиста важно знать английский язык.
def proverka_zdorovya(): # плохо pass def health_check(): # хорошо pass
⚡ Для функций используйте глагол (например «купить», «получить», «распечатать»), для переменных, модулей и классов используйте существительное (например «список», «покупатели», «товары»).
Частая ошибок новичков — называть функцию существительным:
def speed_calculator(distance, time): # неправильно (калькулятор скорости) pass def calculate_speed(distance, time): # правильно (рассчитать скорость) pass
⚡ Имена функций должны быть как можно короче. Функция выполняет всего одно действие и именно оно должно отображаться в её имени.
def create_text_utf8_pipe_from_input(): # плохо pass def create_pipe(): # хорошо pass
⚡ Перед именами булевских переменных (и методов, возвращающих тип bool ), добавляйте префикс «is».
def is_goal_state(): # хорошо pass is_active = True # хорошо
Там где не получается использовать «is», можно использовать «has» или «can». Пример: has_children() .
⚡ Используйте удобопроизносимые имена. Людям удобно работать со словами. Часть мозга специализируется на обработке слов — нужно использовать эту часть мозга.
# пример плохого именования (имена трудно произносить вслух) class GlobalFRTEV: # плохо def get_any_mdhd(self): # плохо pass def get_any_mdhl(self): # плохо pass def get_any_mdhf(self): # плохо pass
Имена будут использоваться в обсуждении с коллегами. Рассказывать про баг в методе get_any_mdhf класса GlobalFRTEV будет достаточно проблематично.
⚡ Использовать однобуквенные переменные не рекомендуется. Их можно использовать исключительно для локальных переменных в небольших методах.
r = requests.get(‘https://pythonchik.ru’) # плохо response = requests.get(‘https://pythonchik.ru’) # хорошо
⚡ Не нужно разрабатывать и использовать свою систему кодирования имен. Такие имена трудно произносить и в них можно сделать опечатку. К тому же, каждый новый сотрудник должен будет изучать вашу систему кодирования.
tm1_word = «Hello» # плохо
⚡ Также не следует использовать юмор при выборе имени файла. Ведь шутка может быть понятна не всем. Также не рекомендуется использовать каламбуры и сленг.
⚡ Помните, что ваш код будут читать программисты, поэтому используйте слова из профессиональной области, например, названия алгоритмов, паттернов или математические термины. Также полезно использовать слова из предметной области, к которой принадлежит решаемая задача.
Больше полезных сведений о выборе имен идентификаторов и другие советы, которые пригодятся при написании кода, можно найти в книгах:
- Роберт Мартин » Чистый код » («Содержательные имена», стр. 39);
- Стив Макконнелл » Совершенный код » («Сила имен переменных», стр. 252).
Именование переменных в PEP8
В стандарте РЕР8 описаны следующие стили именования:
- b — идентификатор из одной маленькой буквы;
- B — идентификатор из одной большой буквы;
- lowercase — одно слово в нижнем регистре;
- lower_case_with_underscores — нескольких слов из маленьких букв, между словами подчеркивания;
- UPPERCASE — одно слово заглавными буквами;
- UPPERCASE_WITH_UNDERSCORES — слова из заглавных букв, между словами подчеркивания;
- CapitalizedWords — несколько слов без пробелов между ними, но каждое начинается с прописной буквы (CamelCase);
- mixedCase — несколько слов без пробелов между ними, первое слово пишется с маленькой буквы, каждое последующее — с большой;
- Capitalized_Words_With_Underscores — имена переменных состоят из нескольких слов, которые начинаются с большой буквы, разделенных между собой знаком подчеркивания «_».
О стандартах именования читайте в PEP8 (раздел «Naming Conventions») .
♂️ Для удобства, среды разработки (например PyCharm) автоматически проверяют, насколько код соответствует рекомендациям стандарта РЕР8. Если имя идентификатора не будет соответствовать соглашениям, то IDE подчеркнет переменную, а если навести на нее мышку, появится сообщение с подсказкой.
Хороший код документирует сам себя. При правильном именовании, не возникает вопросов по тому, что происходит в отдельных частях кода. И отпадает необходимость писать комментарии к каждой строке.
Чтобы прокачать навык именования переменных, читайте чужой код крупных проектов (например на github). Смотрите, какие имена используют опытные разработчики, анализируйте и применяйте в своих проектах.
Источник: pythonchik.ru