Лекція 1Основи PythonПро курс:Про курс:Змістовий модуль 1. Основи мови PythonТема 1. Основні поняття мови Python.Тема 2. Логічні оператори.Тема 3. Структури даних.Тема 4. Винятки.Змістовий модуль 2. Функції та модуліТема 5. Функції.Тема 6. Модулі.Тема 7. Бібліотека MATPLOTLIB.Тема 8. Бібліотека NUMPY. Бібліотека SciPy.Змістовий модуль 3. Об’єктно-орієнтоване програмування на мові Python.Тема 9. Введення в ООП.Тема 10. Класи.Тема 11. Патерни проектування мови Python.Тема 12. Системне програмування.Змістовий модуль 4. Особливості програмування на мові PythonТема 13. Програмування графічних інтерфейсів.Тема 14. Робота за базами даних.Тема 15. Веб-фреймворк Django.Тема 16. Робота з мережевим обладнанням.16 лекцій 16 лабораторних робіт Екзамен! Як все це буде оцінюватись? 4 КМР по 10 балів = 40 балів 16 Л.Р. по 3,125 бала = 50 балів Курс Python на netacad = 10 балів Звіти з лабораторних робіт і файли з кодом програм надвилаються: Підгрупи Морозова Д.С. - виконані завдання надсилати на пошту morozovds@ukr.net Підгрупи Пулека І.В. - виконані завдання надсилати на пошту pulekoigor@gmail.com В 1991р. Гвідо ван Россум представив версію 1.0 мови Python.В той час в Python вже були присутні класи зі спадковістю, модулі, обробка вийнятків, функції, лямбда-вирази і основні типи даних.Python 2.0 – 2000 р.Python 3.0 – 2008 р.Версії 2 і 3 не є зворотньо сумісними!Особливості:
Підтримується розбиття програм на модулі, які, в свою чергу, можуть об'єднуватися в пакети.Повністю підтримуються об'єктно-орієнтоване і структурне програмування, а також функціональне і аспектно-орієнтоване.Мова використовує динамічну типізацію разом з підрахунком посилань і циклічний збирач сміття для менеджменту пам'яті.Де ж використовується Python?Веб розробкаДля веб-розробки Python використовують у вигляді фреймворкі: Pyramid, Pylons, TurboGears, Flask, CherryPy і - найпопулярніший - Django.Існують і движки для створення сайтів на Python:Abilian SBE;Ella;Saleor;Wagtail;Django-CMS.Також на Python пишуть парсери для збору інформації в Інтернеті.Десктопні програмиХоч мова Python не компілюється, з її допомогою створюють деякі десктопні програми.Шо було розроблено на Python:GIMP - візуальний редактор на Linux;Ubuntu Software Center - центр додатків в ОС Ubuntu (один з дистрибутивів Linux);BitTorrent до 6 версії - менеджер торрент-закачувань (пізніше програму переписали на C ++, але мережі peer-to-peer все ще працюють на Python);Blender - програма для створення 3D-графіки.ІгриБагато комп'ютерних ігор були повністю або частково написані на Python. Існує хибна думка, що ця мова не підходить для серйозних проектів, але насправді він використовувався в розробці таких хітів, як:
Незважаючи на можливість реалізації GUI і роботи з графікою, на Python в основному пишуть скрипти - наприклад, взаємодії персонажів, запуску сцен, а також обробки подій.Cтворення скриптівPython підходить для написання плагінів і скриптів до вже готових програмах. Наприклад, для реалізації ігрової логіки або створення додаткових модулів. Скрипти на Python вбудовують і в програми на інших мовах, щоб автоматизувати будь-які завдання.Системне адмініструванняСистемним адміністраторам Python потрібен для автоматизації завдань. Він простий, потужний і підтримує спеціальні пакети, які підвищують його ефективність. І, найголовніше, він за замовчуванням встановлений на всі сервери з ОС Linux. Завдяки лаконічності Python можна швидко прочитати код і знайти слабкі місця.Наукові дослідженняВ Python є кілька бібліотек, які широко використовуються для проведення досліджень і обчислень:SciPy - бібліотека з науковими математичними інструментами;NumPy - розширення, яке додає підтримку матриць і багатовимірних масивів, а також математичні функції для роботи з ними;Matplotlib - бібліотека для роботи з 2D- і 3D-графікою.Завдяки бібліотекам і простоті освоєння мови багато вчених вибирають Python - особливо він популярний у математиків і фізиків.Data SciencePython - одна з найбільш використовуваних в Data Science мов. На ньому пишуть алгоритми програм з машинним навчанням і аналітичні програми. За допомогою нього обслуговують сховища даних і хмарні сервіси. Також він допомагає парсити дані з інтернету. Наприклад, в Google Python застосовують для індексації сайтів.Бібліотеки і фреймворки Python пропонують чудове рішення для машинного навчання, комп'ютерного зору, NLP та науки про дані: Tensorflow, Theano, Pandas, Scikit-Learn, NumPy, Keras, PytorchЯкі компанії використовують Python ?В основному Python використовується стартапами і компаніями, які розробляють великі проекти. Ось лише частина величезного списку:Alphabet використовує мову для скраппінга в пошуковику Google і реалізації сервісу YouTube;BitTorrent - для реалізації мереж peer-to-peer;Агентство національної безпеки США - для шифрування і аналізу розвідданих;ESRI - як інструмент налаштування геоінформаційних програм;Maya - для створення мультиплікації;Pixar, Industrial Light & Magic - для створення анімаційних фільмів;Intel, Cisco, HP, Seagate, Qualcomm і IBM - для тестування;JPMorgan Chase, UBS, Getco і Citadel - для прогнозування фінансового ринку;NASA, Los Alamos, Fermilab, JPL - для наукових обчислень;iRobot - для розробки комерційних роботизованих пристроїв;IronPort - для реалізації поштового сервера.Крім того, його використовують в Instagram, Positive Technologies, Houdini, Facebook, Yahoo, Red Hat, Dropbox, Pinterest, QuoraСередні зарплати Python-розробників в Україні згідно dou.uaСкільки заробляють Python-розробники? Середні зарплати Python-розробників в Україні згідно ncube.com Середні зарплати Python-розробників в світі згідно daxx.comСередні зарплати Python-розробників в світі в порівнянні з зарплатами розробників на інших мовах згідно daxx.compython.orgjetbrains.com/pycharm ТипізаціяPython відноситься до мов з неявною сильною динамічною типізацією.Неявна типізація означає, що при оголошенні змінної вам не потрібно вказувати її тип, при явній - це робити необхідно. Як приклад мов з явною типизацією можна привести Java, C ++. Ось як буде виглядати оголошення цілочисельної змінної в Java і Python.Java: int a = 1; Python: a = 1 Мови програмування бувають з динамічною та статичною типізацією.У першому випадку тип змінної визначається безпосередньо при виконанні програми, у другому - на етапі компіляції.Python – це мова з динамічною типізацією. На відміну від С, C#, Java , я кі є статично типізовані. Тобто тип змінної визначається тільки в момент виконання.Тому часто для Python замість терміну «присвоювання» вживають «зв’язування з деяким іменем»Сильна типізація не дозволяє проводити операції у виразах з даними різних типів, слабка - дозволяє.У мовах з сильною типізацією ви не можете складати наприклад рядки і числа, потрібно все приводити до одного типу.До першої групи можна віднести Python, Java, до другої - С і С ++.Типи даних в PythonДо основних вбудованих типів даних відносяться:None (невизначене значення змінної)Логічні змінні (Boolean Type)Числа (Numeric Type)int - ціле числоfloat - число з плаваючою точкоюcomplex - комплексне числоСписки (Sequence Type)list - списокtuple - кортежrange - діапазонРядки (Text Sequence Type)strБінарні списки (Binary Sequence Types)bytes - байтиbytearray - масиви байтmemoryview - спеціальні об'єкти для доступу до внутрішніхданих об'єкта через protocol bufferМножини (Set Types)set - множинаfrozenset – незмінна множинаСловники (Mapping Types)dict - словникЗмінніДля того, щоб оголосити і відразу ініціалізувати змінну необхідно написати її ім'я, потім поставити знак рівності і значення, з яким ця змінна буде створена.Наприклад рядок:b = 5оголошує змінну b і привласнює їй значення 5.Цілочисельне значення 5 в рамках мови Python по суті своїй є об'єктом.Об'єкт, в даному випадку - це абстракція для представлення даних, дані - це числа, списки, рядки і т.п.При ініціалізації змінної, на рівні інтерпретатора, відбувається наступне:
Ім'я змінної не повинно збігатися з ключовими словами інтерпретатора PythonСписок ключових слів можна отримати підключивши модуль keyword і скориставшись командою Перевірити є чи ні ідентифікатор ключовим словом можна так: >>> import keyword >>> print("Python keywords: ", keyword.kwlist) >>> keyword.iskeyword("try") True >>> keyword.iskeyword("b") False Для того, щоб подивитися на об'єкт з яким ідентифікатором посилається дана змінна, можна використати функцію id()>>> a = 4 >>> b = 5 >>> id(a) 1829984576 >>> id(b) 1829984592 >>> a = b >>> id(a) 1829984592 Ідентифікатор - це деяке цілочисельне значення, за допомогою якого унікально адресується об'єкт. Спочатку змінна a посилається на об'єкт 4 з ідентифікатором 1829984576, змінна b - на об'єкт з id = 1829984592. Після виконання операції присвоювання a = b, змінна a стала посилатися на той самий об'єкт, що і b. Тип змінної можна визначити за допомогою функції type().>>> a = 10 >>> b = "hello" >>> c = (1, 2) >>> type(a) <class 'int'> >>> type(b) <class 'str'> >>> type(c) <class 'tuple'> В Python існують змінні і незмінні типиДо незмінних (immutable) типів відносяться:цілі числа (int),числа з плаваючою точкою (float),комплексні числа (complex),логічні змінні (bool),кортежі (tuple),рядки (str)і незмінні множинии (frozen set).До змінних (mutable) типів відносяться:списки (list),множини (set),словники (dict).При створенні змінної, спочатку створюється об'єкт, який має унікальний ідентифікатор, тип і значення, після цього змінна може посилатися на створений об'єкт.Незмінюваність типу даних означає, що створений об'єкт більше не змінюється.Наприклад, якщо оголосити змінну k = 15, то буде створено об'єкт зі значенням 15, типу int і ідентифікатором, який можна дізнатися за допомогою функції id().>>> k = 15 >>> id(k) 1672501744 >>> type(k) <class 'int'> Об'єкт з id = 1672501744 матиме значення 15 і змінити його вже не можна. Якщо тип даних змінюваний, то можна змінювати значення об'єкта. Наприклад, створимо список [1, 2], а потім замінимо другий елемент на 3. >>> a = [1, 2] >>> id(a) 47997336 >>> a[1] = 3 >>> a [1, 3] >>> id(a) 47997336 Математичні операціїPython, в цій мові існує три вбудованих числових типу даних:
Якщо в якості операндів деякого арифметичного виразу використовуються тільки цілі числа, то результат теж буде ціле число.Винятком є операція ділення, результатом якої є дійсне число. При спільному використанні цілочисельних і дробових змінних, результат буде дробовим.Арифметичні операції з цілими і дробовими числамиДодавати можна як безпосередньо самі числа:Так і змінні, що були попередньо ініціалізовані:Результат операції додавання можна присвоїти іншій змінній:>>> 3+2 5 >>> a = 3 >>> b = 2 >>> a + b 5 >>> a = 3 >>> b = 2 >>> c = a + b >>> print(c) 5 Або присвоїти результат самій змінній. В цьому випадку можна використовувати повний або скорочений запис.Повний:Скорочений:>>> a = 3 >>> b = 2 >>> a = a + b >>> print(a) 5 >>> a = 3 >>> b = 2 >>> a += b >>> print(a) 5 >>> 4 - 2 2 >>> a = 5 >>> b = 7 >>> a - b -2 >>> 5 * 8 40 >>> a = 4 >>> a *= 10 >>> print(a) 40 >>> 9 / 3 3.0 >>> a = 7 >>> b = 4 >>> a / b 1.75 >>> 9 // 3 3 >>> a = 7 >>> b = 4 >>> a // b 1 >>> 9 % 5 4 >>> a = 7 >>> b = 4 >>> a % b 3 >>> 5 ** 4 625 >>> a = 4 >>> b = 3 >>> a ** b 64 Віднімання Множення Ділення Ціла частина від ділення Дробова частина від ділення Піднесення до степеня Робота з комплексними числамиДля створення комплексного числа можна використовувати функцію complex(a, b), в яку, як перший аргумент, передається дійсна частина, в якості другого - уявна. Або записати число у вигляді a + bj.Створення комплексного числа:>>> z = 1 + 2j >>> print(z) (1+2j) >>> x = complex(3, 2) >>> print(x) (3+2j) Комплексні числа можна додавати, віднімати, множити, ділити і підносити до степеня. >>> x + z (4+4j) >>> x - z (2+0j) >>> x * z (-1+8j) >>> x / z (1.4-0.8j) >>> x ** z (-1.1122722036363393-0.012635185355335208j) >>> x ** 3 (-9+46j) З комплексного числа можна витягти дійсну і уявну частини:Для отримання комплексносопряженного числа необхідно використовувати метод conjugate()>>> x = 3 + 2j >>> x.real 3.0 >>> x.imag 2.0 >>> x.conjugate() (3-2j) Бітові операціїБітові операціїВ Python доступні бітові операції, їх можна виробляти над цілими числами.Побітове І (AND):>>> p = 9 >>> q = 3 >>> p & q 1 Побітове або (OR): >>> p | q 11 >>> p ^ q 10 Побітове ні-або (XOR): >>> p -10 Інверсія >>> p << 1 18 >>> p >> 1 4 Зсув вправо і вліво У своєму повсякденному житті ми використовуємо десяткову систему числення, але при програмуванні, дуже часто, доводиться працювати з шістнадцятковою, двійковою і вісімковою.Представлення числа в шістнадцятковій системі численняПредставлення числа у вісімковій системі численняПредставлення числа у двійковій системі числення>>> m = 124504 >>> hex(m) '0x1e658' >>> oct(m) '0o363130' >>> bin(m) '0b11110011001011000' У стандартну поставку Python входить бібліотека math, в якій міститься велика кількість часто використовуваних математичних функцій. Для роботи з даним модулем його попередньо потрібно імпортувати.Найбільш часто використовувані функції:math.ceil(x) - повертає найближче ціле число більше, ніж x.math.fabs(x) - повертає абсолютне значення числа.math.factorial(x) -обчислює факторіал x.>>> import math >>> math.ceil(3.2) 4 >>> math.fabs(-7) 7.0 >>> math.factorial(5) 120 math.exp(x) - обчислює e в степені x.math.log2(x) - логарифм за основою 2.math.log10(x) - логарифм за основою 10.math.log(x [, base]) - за замовчуванням обчислює логарифм за основою e, додатково можна вказати основу логарифма.>>> math.floor(3.2) 3 >>> math.exp(3) 20.08553692318766 >>> math.log2(8) 3.0 >>> math.log10(1000) 3.0 >>> math.log(5) 1.6094379124341003 >>> math.log(4, 8) 0.6666666666666667 math.sqrt(x) - корінь квадратний від x.Інші тригонометричні функції:math.cos(x)math.sin(x)math.tan(x)math.acos(x)math.asin(x)math.atan(x)І наостанок пару констант:math.pi - число Пі.math.e - число е.Крім перерахованих, модуль math містить ще багато різних функцій, за більш детальною інформацією можете звернутися на офіційний сайт>>> math.pow(3, 4) 81.0 >>> math.sqrt(25) 5.0 КоментаріКоментаріОднорядкові коментарі.Такий коментар починається з хеш-символу (#) і супроводжується текстом, який містить додаткові пояснення.Також можна написати коментар поруч з оператором коду# defining the post code postCode = 75000 # define the general structure of the product with default values product = { "productId": 0, # product reference id, default: 0 "description": "", # item description, default: empty "categoryId": 0, # item category, default: 0 "price": 0.00 # price, default: 0.00 } Багаторядкові коментаріБагаторядкові коментаріЦі коментарі служать вбудованої документацією для інших людей, які читають ваш код, і зазвичай пояснюють речі більш детально.Технічно Python не має явної підтримки багаторядкових коментарів, тому деякі варіанти вважаються обхідним рішенням, але все ж працюють для багаторядкових коментарів.Версія 1 об'єднує однорядкові коментарі:# LinuxThingy version 1.6.5 # # Parameters: # # -t (--text): show the text interface # -h (--help): display this help """ LinuxThingy version 1.6.5 Parameters: -t (--text): show the text interface -h (--help): display this help """ Версія 2 простіше, ніж версія 1. Спочатку вона призначалася для створення документації, але її також можна використовувати для багаторядкових коментарів. Зазвичай.Зазвичай.Досить часто Python-файл починається з декількох рядків коментарів. У цих рядках вказується інформація про проект, призначення файлу, програміста, який його розробив або працював над ним, і ліцензії на програмне забезпечення, яке використовується для коду. Наприклад, коментар починається з опису, за ним йде повідомлення про авторські права з ім'ям розробника і рік публікації коду. Нижче зазначено, що код ліцензований під GNU Public License (GPL). Ще нижче зазначається адреса електронної пошти автора.# ----------------------------------------------------------- # demonstrates how to write ms excel files using python-openpyxl # # (C) 2015 Frank Hofmann, Berlin, Germany # Released under GNU Public License (GPL) # email frank.hofmann@efho.de # ----------------------------------------------------------- Коментарі документаціїКоментарі документаціїPython має вбудовану концепцію під назвою «рядки документації» (Docstring), яка є відмінним способом зв'язати написану вами документацію з модулями, функціями, класами і методами Python. Рядок документа додається в якості коментаря прямо під заголовком функції, модуля або об'єкта і описує дії функції, модуля або об'єкта.Правила наступні:
Наприклад:В інтерактивній довідці Python рядок документації стає доступною через атрибут __doc__def add(value1, value2): """Calculate the sum of value1 and value2.""" return value1 + value2 Порядок обчисленньПорядок обчисленньДля обчислення виразів Python користується правилами пріорітетності операторів.Наступна таблиця показує пріоритет операторів в Python, починаючи з найнижчого і до найвищого.Це означає, що в будь-якому виразі Python спочатку обчислює оператори і вирази, розташовані знизу таблиці, а потім оператори вище по таблиці. Таблиця взята з Довідника по мові Python.На практиці краще використовувати дужки для груповання операторів і операндів, щоб в явному вигляді вказати порядок обчислення виразів. Це в рази полегшить читання програмиа = 5 + 4 * 3 # Спочатку виконуєтсья множення # Далі - додавання # Результат: 17 b = (5 + 4) * 3 # Круглі дужки () скасовують пріоритет арифметичних операторів # Результат: 27
У цій таблиці оператори з рівним пріоритетом розташовані в одному рядку. Наприклад, + і - мають рівний пріоритет. При наявності двох або більше операторів з однаковим рівнем в справу вступає асоціативність, яка визначає порядок. Асоціативність - це порядок, в якому Python виконує вирази, що включають кілька операторів одного рівня пріоритетності. Велика частина з них (за винятком оператора піднесення до степеня **) підтримують асоціативність зліва направо. print(4 ** 3 ** 2) # Результат: 262144 print((4 ** 3) ** 2) # Результат: 4096 В Python є такі оператори (наприклад, привласнення і порівняння), які не підтримують асоціативність.Для них застосовуються спеціальні правила порядку, в яких асоціативність не приймає участі.Наприклад, вираз 5 < 7 < 9 - це не те ж саме, що і (5 < 7) < 9 або 5 < (7 < 9).Зате 5 < 7 < 9 - те ж саме, що 5 < 7 і 7 < 9. Виконується зліва направо.Так само працює зв'язування операторів присвоювання (наприклад, a = b = c), аa = b + = c - поверне помилку.PEP (Python Enhancement Proposal)Ключова ідея PEP-8 така: код читається набагато більше разів, ніж пишеться. Власне, рекомендації про стиль написання коду спрямовані на те, щоб поліпшити читаність коду і зробити його узгодженим між великим числом проектів. В ідеалі, весь код буде написаний в єдиному стилі, і будь-хто зможе легко його прочитати.Зовнішній вигляд кодуВідступиВикористовуйте 4 пробіли на кожен рівень відступу. Довгі рядки повинні вирівнювати загорнуті елементи або вертикально, використовуючи неявну лінію в дужках (круглих, квадратних або фігурних), або з використанням висячого відступу. При використанні висячого відступу слід застосовувати такі міркування: на першій лінії не повинно бути аргументів, а інші рядки повинні чітко сприйматися як продовження лініїПравильно:Правильно:Неправильно:# Вирівнювання по першій відкритій дужці foo = long_function_name(var_one, var_two, var_three, var_four) # Більше відступів включено для відрізнення його від інших def long_function_name( var_one, var_two, var_three, var_four): print(var_one) # Аргументи на першій лінії заборонені, якщо не використовується вертикальне вирівнювання foo = long_function_name(var_one, var_two, var_three, var_four) # Більше відступів включено для відрізнення його від інших def long_function_name( var_one, var_two, var_three, var_four): print(var_one) або бути під першим символом рядка, що починає багаторядкову конструкцію:my_list = [ 1, 2, 3, 4, 5, 6, ] result = some_function_that_takes_arguments( 'a', 'b', 'c', 'd', 'e', 'f', ) my_list = [ 1, 2, 3, 4, 5, 6, ] result = some_function_that_takes_arguments( 'a', 'b', 'c', 'd', 'e', 'f', ) Табуляція або пробіли?Табуляція або пробіли?Пробіли - найкращий метод відступів. Табуляція повинна використовуватися тільки для підтримки коду, написаного з відступами за допомогою табуляції.Python 3 забороняє змішування табуляції і пробілів у відступах.Максимальна довжина рядкаОбмежте довжину рядка максимум 79 символами. Для більш довгих блоків тексту з меншими структурними обмеженнями (рядки документації або коментарі), довжину рядка слід обмежити 72 символами.Найкращий спосіб перенесення довгих рядків є використання на продовжень рядків Python всередині круглих, квадратних і фігурних дужок. Довгі рядки можуть бути розбиті на декілька рядків, загорнуті в дужки.Порожні рядкиВідокремлюйте функції верхнього рівня і визначення класів двома порожніми рядками.Визначення методів всередині класу відділяються одним порожнім рядком. Додаткові порожні рядки можливо використовувати для розділення різних груп схожих функцій.Використовуйте порожні рядки в функціях, щоб вказати логічні розділи.ІмпортІмпортКожен імпорт, як правило, повинен бути на окремому рядку.Правильно:неправильно:У той же час, можна писати так:Імпорт завжди розміщуються на початку файлу, відразу після коментарів до модуля і рядків документації, і перед оголошенням констант.Імпорти повинні бути згруповані в наступному порядку:
Вставляйте порожній рядок між кожною групою імпортів.import os import sys import os, sys from subprocess import Popen, PIPE Уникайте використання пробілів в наступних ситуаціях:
Правильно:Неправильно:Правильно:Неправильно:Неправильно:spam(ham[1], {eggs: 2}) spam( ham[ 1 ], { eggs: 2 } ) if x == 4: print(x, y); x, y = y, x if x == 4 : print(x , y) ; x , y = y , x spam(1) spam (1)
Правильно:Неправильно:Правильно:Неправильно:dict['key'] = list[index] dict ['key'] = list [index] x = 1 y = 2 long_variable = 3 x = 1 y = 2 long_variable = 3 Інші рекомендаціїІнші рекомендаціїЗавжди оточуйте ці бінарні оператори одним пробілом з кожного боку:
i = i + 1 submitted += 1 x = x*2 - 1 hypot2 = x*x + y*y c = (a+b) * (a-b) Неправильно: i=i+1 submitted +=1 x = x * 2 - 1 hypot2 = x * x + y * y c = (a + b) * (a - b) Правильно Правильно:НеправильноНе використовуйте складені інструкції (кілька команд в одному рядку).Правильно:Неправильно:def complex(real, imag=0.0): return magic(r=real, i=imag) def complex(real, imag = 0.0): return magic(r = real, i = imag) if foo == 'blah': do_blah_thing() do_one() do_two() do_three() if foo == 'blah': do_blah_thing() do_one(); do_two(); do_three() Точно неправильно:Ймовірно, неправильно:if foo == 'blah': do_blah_thing() for x in lst: total += x while t < 10: t = delay() if foo == 'blah': do_blah_thing() else: do_non_blah_thing() try: something() finally: cleanup() do_one(); do_two(); do_three(long, argument, list, like, this) if foo == 'blah': one(); two(); three() Угоди по іменуваннюУгоди по іменуваннюУгоди по іменуванні змінних в python трохи туманні, тому їх список ніколи не буде повним - проте, нижче наводиться список рекомендацій, що діють на даний момент.Стилі іменІснує доволі багато різних стилів. Зазвичай розрізняють наступні :
Імена модулів і пакетівМодулі повинні мати короткі імена, що складаються з маленьких букв. Можна використовувати символи підкреслення, якщо це покращує читабельність. Те ж саме відноситься і до імен пакетів, проте в іменах пакетів не рекомендується використовувати символ підкреслення.Імена класівІмена класів повинні зазвичай дотримуватися угоди CapWords. Замість цього також можуть використовуватися угоди для іменування функцій, якщо інтерфейс документований і використовується в основному як функції.Імена винятківТак як виключення є класами, до винятками застосовується стиль іменування класів. Однак ви можете додати Error в кінці імені (якщо, звичайно, виключення дійсно є помилкою).Імена глобальних зміннихБудемо сподіватися, що глобальні змінні використовуються тільки всередині одного модуля. Керуйтеся тими ж угодами, що і для імен функцій.Імена функційІмена функцій повинні складатися з маленьких букв, а слова розділятися символами підкреслення - це необхідно, щоб збільшити читабельність.Завжди використовуйте self як перший аргумент методу примірника об'єкта. Завжди використовуйте cls як перший аргумент методу класу. Якщо ім'я аргументу конфліктує із зарезервованим ключовим словом python, зазвичай краще додати в кінець імені символ підкреслення, ніж спотворити написання слова або використовувати абревіатуру. Таким чином, class_ краще, ніж clss. (Можливо, хорошим варіантом буде підібрати синонім).Імена методів і змінних примірників класівВикористовуйте той же стиль, що і для імен функцій: імена повинні складатися з маленьких букв, а слова розділятися символами підкреслення. Використовуйте один символ підкреслення перед ім'ям для непублічних методів і атрибутів.КонстантиКонстанти зазвичай оголошуються на рівні модуля і записуються тільки великими літерами, а слова поділяються символами підкреслення. Наприклад: MAX_OVERFLOW, TOTAL.Дзен PythonДзен PythonРозробники мови Python є прихильниками певної філософії програмування, яку називають «The Zen of Python»(«Дзен Пайтона»).Її текст можна отримати у інтерпретаторі Python за допомогою команди (лише один раз за сесію)The Zen of Python українською:
import this Що почитати?Дякую за увагу! |