Python коментарі у коді. Коментарі потрібні для пояснення коду програми. Як вивчити мову програмування Python

Коментарі

Коментарі, що суперечать коду, гірші, ніж відсутність коментарів.

Завжди виправляйте коментарі, якщо ви змінюєте код!

Коментарі мають бути закінченими пропозиціями. Якщо коментар - фраза або речення, перше слово має бути написано з великої літери, якщо це не ім'я змінної, яка починається з маленької літери (ніколи не змінюйте регістр змінної!).

Якщо коментар короткий, можна опустити крапку наприкінці речення. Блок коментарів зазвичай складається з одного або більше абзаців, складених із повноцінних речень, тому кожна пропозиція має закінчуватися точкою.

Ставте два пробіли після точки наприкінці пропозиції.

Програмісти, які не говорять на англійською, будь ласка, пишіть коментарі англійською, якщо тільки Ви не впевнені на 120%, що Ваш код ніколи не читатимуть люди, які не знають Вашої рідної мови.

Блоки коментарів

Блок коментарів зазвичай пояснює код (весь, або лише деяку частину), що йде після блоку, і повинен мати той самий відступ, що і сам код. Кожен рядок такого блоку повинен починатися з символу # і однієї пробілу після нього (якщо сам текст коментаря немає відступу).

Абзаци всередині блоку коментарів поділяються рядком, що складається з одного символу #.

«Зустрічні» коментарі

Намагайтеся рідше використовувати такі коментарі.

Такий коментар знаходиться у тому ж рядку, що й інструкція. «Зустрічні» коментарі повинні відокремлюватися за Крайній мірідвома пробілами від інструкції. Вони повинні починатися з символу # та одного пробілу.

Коментарі в рядку з кодом не потрібні і лише відволікають від читання, якщо пояснюють очевидне. Не пишіть ось так:

x = x + 1 # Increment x

Втім, такі коментарі іноді корисні:

x = x + 1 # Компенсація кордону

Коментарі виключно раціональні і мають ряд особливостей:

Коментарі призначені для вставлення пояснень до тексту програми, інтерпретатор повністю їх ігнорує.

Усередині коментаря може розташовуватися будь-який текст, включаючи інструкції, які не слід виконувати.

ПОРАДАПам'ятайте – коментарі потрібні програмісту, а не інтерпретатору Python. Вставка коментарів у код дозволить за деякий час швидко згадати призначення фрагмента коду.

У мові Python є лише однорядковий коментар. Він починається із символу #:

# Це коментар

Однорядковий коментар може починатися не тільки з початку рядка, а й розташовуватись після інструкції.

Наприклад, у наступному прикладі коментар розташований після інструкції, що наказує вивести напис «Привіт, мир!»:

рrint(«Привіт, мир!») # Виводимо напис за допомогою функції print()

Якщо ж символ коментаря розмістити перед інструкцією, вона не буде виконана:

# рrint(«Привіт, мир!») Ця інструкція не буде виконана

Якщо символ # розташований усередині лапок або апострофів, то він не є символом коментаря:

print(«# Це НЕ коментар»)

Оскільки в мові Python немає багаторядкового коментаря, то часто коментований фрагмент розміщують усередині потроєних лапок (або потрійних апострофів):

«»»
Ця інструкція не буде виконана
рrint(«Привіт, мир!»)
«»»

Слід зазначити, що цей фрагмент коду не ігнорується інтерпретатором, оскільки він не є коментарем. В результаті виконання фрагмента буде створено об'єкт рядкового типу.

Проте інструкції всередині потроєних лапок виконані не будуть, оскільки інтерпретатор визнає їх простим текстом. Такі рядки є рядками документування, а не коментарями.

Рядки документуванняє «паливом» для help():

часто для коментування великого фрагментакоду використовуються потрійні лапки або потрійні апострофи. Такі рядки не є коментарями у повному розумінні цього слова. Замість коментування фрагмента створюється об'єкт рядкового типу, що зберігається в атрибуті _doc_.

Функція help() при складанні документації отримує інформацію з цього атрибуту. Такі рядки називаються рядками документування.

Запрошую всіх висловлюватися у

У якій, у стислій формі,
розповідають про основи мови Python. Я пропоную вам переклад цієї статті. Переклад не дослівний. Я постарався докладніше пояснити деякі моменти, які можуть бути незрозумілими.

Якщо ви зібралися вивчати мову Python, але не можете знайти відповідного посібника, то ця
стаття вам знадобиться! За короткий час ви зможете познайомитися з
основами мови Python Хоча ця стаття часто спирається
на те, що ви вже маєте досвід програмування, але, я сподіваюся, навіть новачкам
цей матеріал буде корисним. Уважно прочитайте кожен пункт. У зв'язку з
стисненням матеріалу, деякі теми розглянуті поверхово, але містять весь
необхідний метріал.

Основні властивості

Python не вимагає явного оголошення змінних, є регістро-залежним (змінна var не еквівалентна змінній Var або VAR - це три різні змінні) об'єктно-орієнтованою мовою.

Синтаксис

По-перше варто відзначити цікаву особливість Python. Він не містить операторних дужок (begin..end в pascal або (..)в Сі), натомість блоки виділяються відступами: пробілами або табуляцією, а вхід до блоку з операторів здійснюється двокрапкою. Однорядкові коментарі починаються зі знака фунта "#", багаторядкові - починаються і закінчуються трьома подвійними лапками """"".
Щоб присвоїти значення примінної використовується знак «=», а порівняння -
"==". Для збільшення значення змінної або додавання до рядка використовується оператор «+=», а для зменшення - «-=». Всі ці операції можуть взаємодіяти з більшістю типів, у тому числі рядками. Наприклад


>>> myvar = 3
>>> myvar += 2
>>> myvar -= 1
Це багаторядковий коментар
Рядки укладені в три подвійні лапкиігноруються»

>>> mystring = "Hello"
>>> mystring += "world."
>>> print mystring
Hello world.
# Наступний рядок змінює
значення змінних подекуди. (Усього один рядок!)

>>> myvar, mystring = mystring, myvar

Структури даних

Python містить такі структури даних як списки (lists), кортежі (tuples) та словники (dictionaries). Списки - схожі на одномірні масиви (але ви можете використовувати Список, що включає списки - багатовимірний масив), кортежі - незмінні списки, словники - теж списки, але індекси можуть бути будь-якого типу, а не тільки числовими. "Масиви" в Python можуть містити дані будь-якого типу, тобто в одному масиві можуть знаходитися числові, рядкові та інші типи даних. Масиви починаються з індексу 0, а останній елемент можна отримати за індексом -1 Ви можете надавати змінним функції та використовувати їх відповідно.


>>> sample = , («a», «tuple»)] #Список складається з цілого числа, іншого списку та кортежу
>>> #Цей список містить рядок, ціле та дробове число
>>> mylist = "List item 1 again" #Змінюємо перший (нульовий) елемент листа mylist
>>> mylist[-1] = 3.14 #Змінюємо останній елемент листа
>>> mydict = («Key 1»: «Value 1», 2:3, «pi»: 3.14) #Створюємо словник, з числовими та цілочисленними індексами
>>> mydict[«pi»] = 3.15 #Змінюємо елемент словника під індексом "pi".
>>> mytuple = (1, 2, 3) # Задаємо кортеж
>>> myfunction = len #Python дозволяє таким чином оголошувати синоніми функції
>>> print myfunction(list )
3

Ви можете використовувати частину масиву, задаючи перший та останній індекс через двокрапку «:». У такому випадку ви отримаєте частину масиву, від першого індексу до другого, не включно. Якщо не вказано перший елемент, то відлік починається з початку масиву, а якщо не вказано останній - масив зчитується до останнього елемента. Негативні значення визначають положення елемента з кінця. Наприклад:


>>> mylist = [«List item 1» , 2 , 3 .14 ]
>>> print mylist[:] #Зчитуються всі елементи масиву
["List item 1", 2, 3.1400000000000001]
>>> print mylist #Зчитуються нульовий та перший елемент масиву.
["List item 1", 2]
>>> print mylist[-3 :-1 ] #Зчитуються елементи від нульового (-3) до другого (-1) (не включно)
["List item 1", 2]
>>> print mylist #Зчитуються елементи від першого до останнього

Рядки

Рядки в Python відокремлюються подвійними лапками «"» або одинарними «"». Усередині подвійних лапок можуть бути одинарні або навпаки. Наприклад рядок "Він сказав "привіт"!" буде виведена на екран як "Він сказав "привіт"!". Якщо потрібно використовувати рядок з кількох рядків, то цей рядок треба починати і закінчувати трьома подвійними лапками """"». Ви можете підставити в шаблон рядки елементи з кортежу або словника. "%s" на елемент кортежу. Словники дозволяють вставляти в рядок елемент під заданим індексом. Для цього треба використовувати в рядку конструкцію "%(індекс)s". У цьому випадку замість "%(індекс)s" буде підставлено значення словника під заданим індексом. індексом.


>>>print "Name: %s\nNumber: %s\nString: %s"% (my class.name, 3, 3 * "-")
Name: Poromenos
Номер: 3
String: -
strString = ""«Цей текст розташований
на кількох рядках»

>>> print"Це %(verb)s a%(noun)s." % ("noun": "test", "verb": "is")
Це є test.

Оператори

Оператори while, if, forскладають оператори переміщення. Тут немає аналога оператора select, так що доведеться обходитися if. В операторі forвідбувається порівняння змінної та списку. Щоб отримати список цифр до числа - Використовуйте функцію range(). Ось приклад використання операторів


rangelist = range (10 ) #Отримуємо список із десяти цифр (від 0 до 9)
>>> print rangelist
for number in rangelist: #Бувай змінна number(яка щоразу збільшується на одиницю) входить до списку.
# Перевіряємо чи входить змінна
# numbers в кортеж чисел(3 , 4 , 7 , 9 )
if number in (3 , 4 , 7 , 9 ): #Якщо змінна number входить до кортежу (3, 4, 7, 9)...
# Операція « break» забезпечує
вихід з циклу в будь-який момент
break
else :
# « continue» здійснює «прокручування»
циклу. Тут це не потрібно, тому що після цієї операції
# у будь-якому випадку програма переходить знову до обробки циклу
continue
else :
# « else» Вказувати необов'язково. Умова виконується
якщо цикл не був перерваний за допомогою « break».
pass # Нічого не робити

if rangelist == 2 :
print «The second item (lists are 0-based) is 2»
elif rangelist == 3 :
print «The second item (lists are 0-based) is 3»
else :
print«Dunno»

while rangelist == 1 :
pass

Функції

Для оголошення функції служить ключове слово " def» . Аргументи функції задаються у дужках після назви функції. Можна задавати необов'язкові аргументи, присвоюючи значення за промовчанням. Функції можуть повертати кортежі, в такому разі треба писати значення, що повертаються через кому. Ключове слово " lambda» слугує для оголошення елементарних функцій.


# arg2 і arg3 - необов'язкові аргументи, що приймають значення оголошене за замовчуванням,
# якщо не задати їм інше значення під час виклику функції.
def myfunction(arg1, arg2 = 100, arg3 = "test"):
return arg3, arg2, arg1
#Функція викликається зі значенням першого аргументу - "Argument 1", другого - за замовчуванням, і третього - "Named argument".
>>>ret1, ret2, ret3 = myfunction(«Argument 1» , arg3 = «Named argument» )
# ret1, ret2 і ret3 приймають значення "Named argument", 100, "Argument 1" відповідно
>>> print ret1, ret2, ret3
Named argument 100 Argument 1

# Наступний записеквівалентна def f(x): return x + 1
functionvar = lambda x: x + 1
>>> print functionvar(1 )
2

Класи

Мова Python обмежена в множинному успадкуванняу класах. Внутрішні змінні та внутрішні методикласи починаються з двох знаків нижнього підкреслення «__» (наприклад «__myprivatevar»). Ми можемо також надати значення змінної класу ззовні. Приклад:


class My class:
common = 10
def __init__(self):
self .myvariable = 3
def myfunction(self, arg1, arg2):
return self .myvariable

# Тут ми оголосили клас My class. Функція __init__ викликається автоматично під час ініціалізації класів.
>>> classinstance = My class() # Ми ініціалізували клас і змінна myvariable набула значення 3 як заявлено у методі ініціалізації
>>> #Метод myfunction класу My classповертає значення змінної myvariable
3
# Змінна common оголошена у всіх класах
>>> classinstance2 = My class()
>>> classinstance.common
10
>>> classinstance2.common
10
# Тому, якщо ми змінимо її значення у класі My class зміняться
# та її значення в об'єктах, ініціалізованих класом My class
>>> Myclass.common = 30
>>> classinstance.common
30
>>> classinstance2.common
30
# А тут ми не змінюємо змінну класу. Замість цього
# ми оголошуємо її в об'єкті і присвоюємо їй нове значення
>>> classinstance.common = 10
>>> classinstance.common
10
>>> classinstance2.common
30
>>> Myclass.common = 50
# Тепер зміна змінної класу не торкнеться
змінних об'єктів цього класу
>>> classinstance.common
10
>>> classinstance2.common
50

# Наступний клас є спадкоємцем класу My class
# успадковуючи його властивості та методи, хто ж клас може
# успадковуватися з кількох класів, у разі запис
така: classІншіclass(Myclass1, Myclass2, MyclassN)
classІншіclass(Myclass):
def __init__(self, arg1):
self .myvariable = 3
print arg1

>>> classinstance = Otherclass(«hello» )
hello
>>> classinstance.myfunction(1 , 2 )
3
# Цей клас не має совйтсва test, але ми можемо
оголосити таку змінну для об'єкта. Причому
# tця змінна буде членом тільки class instance.
>>> classinstance.test = 10
>>> classinstance.test
10

Винятки

Винятки в Python мають структуру try-except [except ionname]:


defдеякіfunction():
try :
# Поділ на нуль викликає помилку
10 / 0
except ZeroDivisionError:
# Але програма не "Виконує неприпустиму операцію"
# А обробляє блок виключення відповідний помилці "ZeroDivisionError"
print"Oops, invalid."

>>> fn except()
Oops, invalid.

Імпорт

Зовнішні бібліотеки можна підключити процедурою. import», де - назва бібліотеки, що підключається. Ви також можете використовувати команду « from import», щоб ви могли використовувати функцію з бібліотеки


import random #Імпортуємо бібліотеку «random»
from time import clock #І заразом функцію «clock» з бібліотеки «time»

Randomint = random .randint(1 , 100 )
>>> print randomint
64

Робота з файловою системою

Python має багато вбудованих бібліотек. У цьому прикладі ми спробуємо зберегти в бінарному файлі структуру списку, прочитати її та збережемо рядок у текстовому файлі. Для перетворення структури даних ми використовуватимемо стандартну бібліотеку «pickle»


import pickle
mylist = [«This» , «is» , 4 , 13327 ]
# Відкриємо файл C:\binary.dat для запису. Символ «r»
# запобігає заміні спеціальних сиволи (таких як \n, \t, \b та ін).
myfile = file (r«C:\binary.dat», «w»)
pickle .dump(mylist, myfile)
myfile.close()

Myfile = файл (r«C:text.txt», «w»)
myfile.write("This is a sample string" )
myfile.close()

Myfile = file (r«C:text.txt»)
>>> print myfile.read()
"This is a sample string"
myfile.close()

# Відкриваємо файл для читання
myfile = file (r«C:\binary.dat»)
loadedlist = pickle .load(myfile)
myfile.close()
>>> print loadedlist
["This", "is", 4, 13327]

Особливості

  • Умови можуть бути комбіновані. 1 < a < 3 выполняется тогда, когда а больше 1, но меньше 3.
  • Використовуйте операцію « del» щоб очищати змінні або елементи масиву.
  • Python пропонує великі можливості для роботи зі списками. Ви можете використовувати оператори оголошення структури списку. Оператор forдозволяє задавати елементи списку у певній послідовності, а if- Дозволяє вибирати елементи за умовою.
>>> lst1 =
>>> lst2 =
>>> print
>>> print
# Оператор any повертає true, якщо хоча
б одна з умов, що входять до нього, виконується.
>>> any(i % 3 for i in)
True
# Наступна процедурапідраховує кількість
# відповідних елементів у списку
>>> sum (1 for i in if i == 3 )
3
>>> del lst1
>>> print lst1
>>> del lst1
  • Глобальні змінніоголошуються поза функціями і можуть бути прочитані без будь-яких оголошень. Але якщо вам необхідно змінити значення глобальної змінної функції, то вам необхідно оголосити її на початку функції ключовим словом « global», якщо ви цього не зробите, Python оголосить змінну, доступну тільки для цієї функції.
number = 5

def myfunc():
# Виводить 5
print number

def anotherfunc():
# Це викликає виняток, оскільки глобальна апеременная
# не була викликана з функції. Python у цьому випадку створює
# однойменну змінну всередині цієї функції та доступну
тільки для операторів цієї функції.
print number
number = 3

def yetanotherfunc():
global number
# І лише з цієї функції значення змінної змінюється.
number = 3

Епілог

Зрозуміло, у цій статті не описуються всі можливості Python. Я сподіваюся, що ця стаття допоможе вам, якщо ви захочете і надалі вивчати цю мову програмування.

Переваги Python

  • Швидкість виконання програм написаних на Python є дуже високою. Це пов'язано з тим, що основні бібліотеки Python
    написані на C++ і виконання завдань займає менше часу, ніж іншими мовами високого рівня.
  • У зв'язку з цим ви можете писати власні модулі для Python на C або C++
  • У стандартних бібліотеках Pythonви можете знайти засоби для роботи з електронною поштою, протоколами
    Інтернету, FTP, HTTP, базами даних та ін.
  • Скрипти, написані за допомогою Python, виконуються на більшості сучасних ОС. Така переносимість забезпечує Python застосування в різних областях.
  • Python підходить для будь-яких рішень в галузі програмування, будь то офісні програми, веб-додатки, GUI-додатки і т.д.
  • Над розробкою Python працювали тисячі ентузіастів з усього світу. Підтримкою сучасних технологійв стандартних бібліотекахми можемо бути зобов'язані саме тому, що Python було відкрито всім бажаючих.

Теги: Додати теги

У наведених далі прикладах, введення та виведення відрізняються присутністю та відсутністю запрошень відповідно (запрошеннями є >>> і...): щоб відтворити приклад - вам потрібно ввести все, що слідує за запрошенням, після його появи; рядки, що не починаються із запрошень, є висновком інтерпретатора. Зверніть увагу, що рядок, в якому міститься лише допоміжне запрошення ("...") означає, що вам потрібно ввести порожній рядок - цей спосіб використовується для завершення багаторядкових команд.

Більшість прикладів у цьому посібнику - навіть ті, що вводяться в інтерактивному режимі- містять коментарі. Коментарі в Python починаються з символу решітки # (hash) – і продовжуються до фізичного кінця рядка. Коментарі можуть перебувати як на початку рядка, так і слідувати за пробіловими символамиабо кодом – але не утримуватися всередині рядка. Символ ґрат у рядку залишається лише символом ґрат. Оскільки коментарі призначені для того, щоб зробити код зрозумілішим, і не інтерпретуються Python - при введенні прикладів вони можуть бути опущені.

Декілька прикладів:

# це перший коментар SPAM = 1 # а це другий коментар # ... і нарешті третій! STRING = "# Це не коментар."

Використання Python як калькулятор

Давайте опробуємо кілька простих команд Python. Запустіть інтерпретатор і дочекайтеся появи основного запрошення ->>>. (Це не повинно зайняти багато часу.)

Числа

Поведінка інтерпретатора подібна до поведінки калькулятора: ви вводите вираз, а у відповідь він виводить значення. Синтаксис виразів звичний: операції + , - , * та / працюють також як і в більшості інших мов (наприклад, Паскале або C); для угруповання можна використовувати дужки. Наприклад:

>>> 2 +2 4 >>> # Це коментар ... 2 +2 4 >>> 2 +2 # а ось коментар на одному рядку з кодом 4 >>> (50 -5 * 6 ) /4 5.0 >>> 8 /5 # При розподілі цілих чисел дробові частини не губляться 1.6000000000000001

Зауважте: Ви можете отримати результат, трохи відмінний від представленого: результати поділу з плаваючою комою можуть різнитися на різних системах. Пізніше ми розповімо про те, як контролювати виведення чисел із плаваючою комою. Тут використаний найбільш інформативний варіант виведення цього значення, а не більш легко читаний, який можливий:

>>> print (8 /5 ) 1.6

Щоб підручник читався легше, ми будемо показувати спрощене виведення чисел з плаваючою точкою і пояснимо пізніше, чому ці два способи відображення чисел з плаваючою точкою стали різними. Зверніться до програми Арифметика з плаваючою точкою: Проблеми та обмеженнящоб ознайомитися з докладним обговоренням.

Для отримання цілого результату при розподілі цілих чисел, відсікаючи дробові результати, призначена інша операція: //:

>>> # Розподіл цілих чисел повертає заокруглене до мінімального значення: ... 7 //3 2 >>> 7 //-3 -3

Знак рівності ("=") використовується для надання змінної будь-якого значення. Після цього в інтерактивному режимі нічого не виводиться:

>>> width = 20 >>> height = 5 * 9 >>> width * height 900

Значення може бути надано декільком змінним одночасно:

>>> x = y = z = 0 # Нульові x, y та z >>> x 0 >>> y 0 >>> z 0

Змінні мають бути визначено(defined) (мають присвоєне значення) перед використанням, інакше буде згенерована помилка:

>>> спроба отримати доступ до невизначеної змінної... n Traceback (most recent call last) : File " " , line 1, in< module>NameError : name "n" is not defined

Присутня повна підтримкаоперацій із плаваючою точкою; операції над операндами змішаного типу конвертують цілий операнд в число з плаваючою комою:

>>> 3 * 3.75 / 1.5 7.5 >>> 7.0 / 2 3.5

Підтримуються комплексні числа, додаванням до уявних частин суфікса j або J . Комплексні числа з ненульовим речовинним компонентом записуються як ( <вещественная_часть> +<мнимая_часть> j) або можуть бути створені за допомогою функції complex( <вещественная_часть> , <мнимая_часть> ) .

>>> 1j * 1J (-1+0j) >>> 1j * complex (0 , 1 ) (-1 +0j) >>> 3 +1j* 3 (3 +3j) >>> (3 +1j) * 3 (9+3j) >>> (1+2j) /(1+1j) (1.5+0.5j)

Комплексні числа завжди представлені у вигляді двох чисел з плаваючою комою - речовинною та уявною частинами. Для отримання цих частин комплексного числа z використовується z.real і z.imag відповідно.

>>> a=1.5 +0.5j >>> a.real 1.5 >>> a.imag 0.5

Функції конвертації (приведення) до речових і цілих чисел (float() , int()) не працюють з комплексними числами, тому що немає єдино правильного способусконвертувати комплексне число в речове. Використовуйте функцію abs(z), щоб отримати модульчисла (у вигляді числа з плаваючою точкою) або z.real щоб отримати його речову частину:

>>> a=3.0+4.0j >>> float (a) Traceback (більше останній call last) : File " " , line 1, in ? TypeError : can` t convert complex to float ; *2 + a.imag**2) 5.0 >>>

В інтерактивному режимі останній виведений вираз зберігається в змінній _ . Це означає, що якщо ви використовуєте Python як настільний калькулятор - завжди є спосіб продовжити обчислення з меншими зусиллями, наприклад:

>>> tax = 12.5 / 100 >>> price = 100.50 >>> price * tax 12.5625 >>> price + _ 113.0625 >>> round (_, 2) 113.06 >>>

Ця змінна для користувача повинна мати статус тільки для читання. Не нав'язуйте їй значення власноруч - ви створите незалежну змінну з таким самим ім'ям, що приховує вбудовану змінну разом з її магічними властивостями.

Рядки

Крім чисел, Python може працювати з рядками, які, у свою чергу, можуть бути описані у різний спосіб. Рядки можуть бути укладені в одинарні або подвійні лапки:

>>> "spam eggs" "spam eggs" >>> "doesn \"t""doesn"t" >>> "doesn"t" "doesn"t" >>> ""Yes," he said." ""Yes," he said." >>> " \"Yes,\" he said."""Yes," he said." >>> ""Isn "t," she said."""Isn "t," she said."

Інтерпретатор виводить результати операцій над рядками тим же способом, яким вони були введені: обрамляючи в лапки, і, крім того, екрануючи зворотними слешами внутрішні лапки та інші кумедні символи – для того, щоб відобразити точне значення. Рядок полягає в подвійні лапки, якщо рядок містить одинарні лапкиі жодної подвійної, інакше вона полягає в одинарні лапки. Повторимося, функція print() надає більш читаний висновок.

Рядкові літерали можуть бути рознесені на кілька рядків різними способами. Можуть бути використані рядки, що продовжують, зі зворотним слешем як останній символ рядка, що повідомляє про те, що наступний рядок є продовження поточного:

Hello = "Тим є ще один довгий string розміщення\n \ several lines of text just as you would do in C.\n \ Note that whitespace at beginning of line is\ significant." print (hello)

Зверніть увагу, що нові рядки все ще потрібно підключати до рядка через \n; новий рядок, за яким слідують зворотний слеш - не обробляється. Запуск прикладу виведе наступне:

Це ще один довгий string, що містить кілька ліній тексту, як ви будете в C. Зауважте, що білий простір на початку лінії є значним.

Якщо ми оголосимо рядковий літерал сирим(raw) - символи \n не будуть конвертовані в нові рядки, але і зворотний слеш в кінці рядка, і символ нового рядка в вихідний код- будуть додані у рядок у вигляді даних. Отже, код із прикладу:

Hello = r "Тим є ще один довгий string containing\n \ several lines з текстом, що ви збираєтеся в C." print (hello)

Це ще один довгий string, що містить \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\"

Або рядки можуть бути обрамлені збігається парою потрійних лапок: """ або """. Закінчення рядків не потрібно завершувати потрійними лапками - при цьому буде включено до рядка.

Print ( """ Usage: thingy -h Display this usage message -H hostname Hostname to connect to """)

виводить у результаті таке:

Usage: thingy -h Display this usage message -H hostname Hostname to connect to

Рядки можуть конкатенуватися (склеюватися разом) операцією + і бути повтореними операцією * :

>>> word = "Help" + "A" >>> word "HelpA" >>> "<" + word* 5 + ">" ""

Два рядкові літерали, розташовані один за одним, автоматично конкатенуються; перший рядок у попередньому прикладі також міг бути записаний як word = "Help" "A" ; це працює тільки з двома літералами - не з довільними виразами, що містять рядки.

>>> "str" ​​"ing" #<- Так - верно "string" >>> "str" ​​.strip() + "ing" #<- Так - верно "string" >>> "str" ​​.strip () "ing" #<- Так - не верно File "" , line 1, in ? "str" ​​.strip () "ing" ^ SyntaxError : invalid syntax

Рядки можуть бути проіндексовані; також як і C, перший символ рядка має індекс 0 . Немає окремого типу для символів; символ є рядком із одиничною довжиною. Як і в мові програмування Icon, підрядки можуть бути визначені через нотацію зрізів (slice): два індекси, розділених двокрапкою.

>>> word[ 4 ] "A" >>> word[ 0 :2 ] "He" >>> word[ 2 :4 ] "lp"

Індекси зрізів мають корисні значення за промовчанням; опущений перший індекс замінюється нулем, опущений другий індекс підмінюється розміром рядка, що зрізається.

>>> word[ :2 ] # Перші два символи"He" >>> word[ 2 :] # Все, виключаючи перші два символи"lpA"

На відміну від рядків C, рядки Python не можуть бути змінені. Привласнення за позицією індексу рядка викликає помилку:

>>> word[ 0 ] = "x" Traceback (most recent call last) : File " " , line 1, in ? TypeError : "str" ​​object doesn "t support item assignment >>> word[:1] = " Splat " Traceback (most recent call last): File " ", line 1, in ? TypeError: " str "object doesn" t support slice assignment

Тим не менш, створення нового рядка зі змішаним вмістом – процес легкий та очевидний:

>>> "x" + word[ 1 :] "xelpA" >>> "Splat" + word[ 4 ] "SplatA"

Корисний інваріант операції зрізу: s [: i] + s еквівалентно s.

>>> word[ :2 ] + word[ 2 :] "HelpA" >>> word[ :3 ] + word[ 3 :] "HelpA"

Виродження індексів зрізів обробляються елегантно: занадто великий індекс замінюється на розмір рядка, а верхня межа менша нижньої повертає порожній рядок.

>>> word[ 1 :100 ] "elpA" >>> word[ 10 :] "" >>> word[ 2 :1 ] ""

Індекси може бути негативними числами, позначаючи у своїй відлік справа наліво. Наприклад:

>>> word[ -1 ] # Останній символ"A" >>> word[ -2 ] # Передостанній символ"p" >>> word[ -2 :] # Останні два символи"pA" >>> word[ :-2 ] # Все, крім двох останніх символів"Hel"

Але зверніть увагу, що -0 дійсно еквівалентний 0 – це не відлік справа.

>>> word[ -0 ] # (оскільки -0 дорівнює 0)"H"

Негативні індекси поза діапазоном обрізаються, але не радимо робити це з одноелементними індексами ( не-зрізами):

>>> word[ -100 :] "HelpA" >>> word[ -10 ] # помилка Traceback (most recent call last) : File " " , line 1, in ? IndexError : string index out of range

Один із способів запам'ятати, як працюють зрізи - думати про них, як про вказівники на місця між символами, де лівий край першого символу встановлено в нуль, а правий край останнього символу рядка з символів n має індекс n , наприклад:

+---+---+---+---+---+ | H | e | l | p | A | +---+---+---+---+---+ 0 1 2 3 4 5 -5 -4 -3 -2 -1

Перший ряд чисел дає позицію індексів рядка від 0 до 5; другий ряд описує відповідні негативні індекси. Зріз від i до j складається з усіх символів між правим і лівим краями, зазначеними відповідно через i і j .

Для всіх індексів, великих або рівних нулю, Довжина зрізу - різниця між індексами, за умови що обидва індекси знаходяться в діапазоні. Наприклад, довжина word – 2.

Вбудована функція len() повертає довжину рядка:

>>> s = "supercalifragilisticexpialidocious">>> len (s) 34

Дивіться також: Перераховані типиРядки - вид типів, що перераховуються, і вони підтримують звичні для цих типів операції. Строкові методиРядки підтримують велика кількістьметодів для пошуку та простих трансформацій. Форматування рядківТут описано форматування рядків із застосуванням функції str.format() Операції форматування рядків у старому стиліОперації форматування, що викликаються тоді, коли звичайні рядкиабо рядки в Unicode виявляються лівим операндом щодо операції % більш детально розглянуті тут.

Про Unicode

Починаючи з Python версії 3.0, рядковий типпідтримує лише Unicode (див. http://www.unicode.org/).

Перевага набору Unicode полягає в тому, що він надає порядковий номер для будь-якого символу будь-якої писемності, що використовувалася в сучасних або найдавніших текстах. До цього часу для символів у сценарії було доступно лише 256 номерів. Тексти зазвичай прив'язувалися до кодової сторінки, яка встановлювала у відповідність порядкові номери та символи сценарію. Це призводило до серйозної плутанини, особливо у тому, що стосувалося інтернаціоналізації програмного продукту. Unicode вирішує ці проблеми, визначаючи єдину кодову сторінку всім письменностей.

Для вставки в рядок спеціального символу можна використовувати Unicode-екранування (Python Unicode-Escape encoding). Наступний приклад пояснить:

>>> "Hello 0020World!""Hello World!"

Екранована послідовність \u0020 задає символ Unicode з порядковим номером 0x0020 (символ пробілу).

Інші символи інтерпретуються з використанням відповідних їм порядкових значень тим самим способом, як і порядкові номери Unicode. Перші 128 символів кодування Unicodeповністю збігаються зі 128 символами кодування Latin-1, що використовується в багатьох західних країнах.

Крім стандартних способів кодування, Python надає цілий набір різних способів створення Unicode-рядків, ґрунтуючись на відомому кодуванні.

Для конвертування Unicode-рядка в послідовність байтів з використанням бажаного кодування, рядкові об'єкти надають метод encode() , який приймає єдиний параметр - назву кодування. Віддають перевагу назвам кодувань, записані в нижньому регістрі.

>>> "Äpfel" .encode ("utf-8" ) b" \x c3\x 84pfel"

Списки

У мові Python є кілька складовихтипів даних, що використовуються для групування інших значень разом. Найбільш гнучкий з них – список (list). Його можна висловити в тексті програми через розділені комами значення ( елементи), укладені у квадратні дужки. Елементи списку можуть бути різними типами.

>>> a = ["spam", "eggs", 100, 1234] >>> a ["spam", "eggs", 100, 1234]

Подібно до індексів у рядках, індекси списків починаються з нуля, списки можуть бути зрізані, об'єднані ( конкатеновані) і так далі:

>>> a[ 0 ] "spam" >>> a[ 3 ] 1234 >>> a[ -2 ] 100 >>> a[ 1 :-1 ] [ "eggs" , 100 ] >>> a[ : 2 ] + [ " bacon " , 2 * 2 ] [ " spam " , " eggs " , " bacon " , 4 ] >>> 3 * a[ :3 ] + [ " Boo!" ] ["spam", "eggs", 100, "spam", "eggs", 100, "spam", "eggs", 100, "Boo!" ]

На відміну від рядків, що є незмінними, змінити індивідуальні елементи списку цілком можливо:

>>> a [ "spam" , "eggs" , 100 , 1234 ] >>> a[ 2 ] = a[ 2 ] + 23 >>> a [ "spam" , "eggs" , 123 , 1234 ]

Привласнення зрізу також можливе, і ця дія може навіть змінити розмір списку або повністю його очистити:123, "bletch", "xyzzy", 1234] # Вставимо (копію) самого себе на початок>>> a[ :0 ] = a >>> a [ 123 , "bletch" , "xyzzy" , 1234 , 123 , "bletch" , "xyzzy" , 1234 ] >>> # Очищення списку: заміна всіх значень порожнім списком >>> a[:] = >>> a

Вбудована функція len() також застосовується до списків:

>>> a = [ "a", "b", "c", "d" 1 ].append ("xtra") >>> p [1, [2, 3, "xtra"], 4] > >> q [ 2 , 3 , "xtra" ]

Зверніть увагу, що в останньому прикладі p і q насправді посилаються на той самий об'єкт! Ми повернемося до семантиці об'єктівпізніше.

Перші кроки до програмування

Безумовно, Python можна використовувати для складніших завдань, ніж додавання двох чисел. Наприклад, ми можемо вивести початок послідовності чисел Фібоначчі таким чином:

>>> # Ряд Фібоначчі: ... сума двох елементів визначає наступний елемент... a , b = 0, 1 >>> while b< 10: ... print (b) ... a , b = b, a+b ... 1 1 2 3 5 8

Цей приклад показує деякі нові можливості.

  • Перший рядок містить множинне привласнення(multiple assignment): змінні a і b паралельно набувають нових значень - 0 і 1 . В останньому рядку цей метод використовується знову, демонструючи той факт, що вирази праворуч [від оператора присвоювання] завжди обчислюються раніше будь-яких присвоювань. Самі ж розділені комами вирази обчислюються зліва направо.
  • Цикл while (поки) виконується доти, доки умова (тут: b< 10) остается истиной. В Python, также как и в C, любое ненулевое значение является истиной (True); ноль является ложью (False). Условием может быть строка, список или вообще любая последовательность; все, что имеет ненулевую длину, играет роль истины, пустые последовательности - лжи. Использованная в примере проверка - простое условие. Стандартные операции сравнения записываются так же, как и в C: < (меньше чем), >(більше ніж), == (рівно),<= (меньше или равно), >= (Більше або одно) і! = (Не рівно).
  • Тілоциклу виділено відступом(indented). Відступи - це засіб угруповання операторів у Python. Інтерактивний режим Python (поки що!) не має будь-якого розумного та зручного засобу для редагування рядків введення, тому необхідно використовувати табуляції або пробіли для відступу в кожному рядку. На практиці складніший текст на Python готується в текстовому редакторі, а більшість з них мають функцію авто-відступу. Після закінчення введення складного виразу в інтерактивному режимі необхідно закінчити його порожнім рядком- ознакою завершення (оскільки інтерпретатор не може вгадати, коли вами було введено останній рядок). Зверніть увагу, що розмір відступу в кожному рядку основного блоку повинен бути тим самим.
  • Функція print() виводить значення переданих їй виразів. Поведінка цієї функції відрізняється від звичайного виведення виразу (як відбувалося вище у прикладах з калькулятором) тим, яким способом обробляються ряди виразів, величини з плаваючою точкою та рядки. Рядки виводяться без лапок і між елементами вставляються прогалини, завдяки чому форматування виводу покращується - як, наприклад, тут:
  • 987
| |

Коментарі – це рядки, які існують у коді програми, але ігноруються компіляторами та інтерпретаторами. Коментарі роблять код більш зручним для читання, оскільки дозволяють надати користувачам додаткову інформаціюабо додати пояснення того чи іншого блоку коду.

Залежно від мети програми, коментарі можуть служити як примітки. Також з їх допомогою можна пояснити іншим програмістам, що робить та чи інша частина коду програми.

Синтаксис коментарів

Коментарі в Python починаються з хеша (символу #), після якого ставиться пробіл.

Загальний вигляд коментаря:

# This is a comment

Рядки коментарів не виконуються, тому при запуску програми ви не побачите жодних ознак наявності в ній коментарів. Коментарі знаходяться у вихідному коді для простоти читання коду програми іншими користувачами, а не для виконання.

У найпростішій програмі Hello, World! коментар може виглядати так:

# Print “Hello, World!” to console
print("Hello, World!")

У циклі for, що ітерує списки, можуть бути такі коментарі:

# Define sharks variable as a list of strings
sharks = ["hammerhead", "great white", "dogfish", "frilled", "bullhead", "requiem"]
# Для клопоту, що iterates over sharks list and prints each string item
for shark in sharks:
print(shark)

При розміщенні коментаря слід враховувати відступи коду, для якого він призначений. Тобто якщо визначення функції не має відступів, то і коментар до цього визначення не повинен мати відступів.

Наприклад розглянемо функцію again() з посібника :

...
# Define again() function to ask user if they want to use the calculator again
def again():
# Такий вхід від користувача
calc_again = input("""
Do you want to calculate again?
Please type Y для YES або N для NO.
""")
# If user types Y, run the calculate() function
if calc_again == "Y":
calculate()
# If user types N, say good-bye до користувача і кінець програми
elif calc_again == "N":
print("See you later.")
# If user types інший key, run the function again
else:
again()

Коментарі мають допомагати програмістам працювати з кодом. Якщо ж з якоїсь причини ви не можете надати належну підтримку та своєчасне оновлення коментарів, краще їх взагалі не використовувати. Код без коментарів краще, ніж код із неправильними коментарями.

У коментарі рекомендується вказувати, чому цей код виконує ту чи іншу дію (а не як, або що він робить). У більшості випадків програміст, ознайомившись із кодом, може сам визначити, що саме виконує код і яким чином він це робить.

Блокові коментарі

Блокові коментарі можуть пояснити складніший код або код, з яким користувачам буде важко розібратися самостійно. Такий блок коментарів повинен мати стільки ж відступів, скільки блок коду, який він пояснює.

У блокових коментарях кожен рядок починається з хешу та пробілу. Щоб розділити блок коментарів на абзаци, поставте з нового рядка хеш і залиште порожній рядок.

Наступний блоковий коментар описує дії функції main().

# The main function will parse arguments via the parser variable. These
# arguments will be defined by the user on the console. This will pass
# the word argument the user wants to parse along with the filename the
# user wants to use, and also provide help text if the user does not
# Коректно pass the arguments.
def main():
parser = argparse.ArgumentParser()
parser.add_argument(
"word",
help="word для пошуку в текстовому файлі."
parser.add_argument(
"filename",
help="Стать до текстового файлу для пошуку через"
...

Блокові коментарі зазвичай використовуються у разі, якщо код вимагає докладного пояснення. Однак слід уникати надмірної кількості коментарів у коді програми.

Рядкові коментарі

Рядкові коментарі йдуть за кодом (тобто знаходяться в одному рядку з тими виразами, які вони пояснюють).

Рядковий коментар виглядає так:

# Inline comment about the code

Рядкові коментарі дозволяють дати коротке пояснення для незрозумілої частини коду, але їх потрібно використовувати з обережністю. Часто їх використовують як короткі примітки для інших користувачів.

Наприклад, якщо ви припускаєте, що інші розробники з вашої команди не знають, що такий вираз створює комплексне число, ви можете додати рядковий коментар:

z = 2.5 + 3j # Create a complex number

Також малий коментар може пояснити, чому ви використовуєте тут той чи інший елемент:

x = 8 # Initialize x with arbitrary number

Рядкові коментарі слід використовувати дуже рідко.

Синтаксис мови Pythonбагато в чому схожий на синтаксис таких мов як Perl, C і Java, але разом з цим має ряд відмінностей від цих мов програмування. У цій статті ми розглянемо необхідні основицього мови програмування.

Перша програма на Python:

По-перше, слід зазначити, що на Pythonви можете програмувати у двох режимах: інтерактивномуі скриптовому

Інтерактивний режим програмування:

Без передачі як аргумент назви файлу запустить інтерпретатор Python:

Введіть наступний текст після запрошення. Pythonта натисніть Enter:

>>> print "Hello, Python!"

Якщо ви все зробили правильно, інтерпретатор видасть рядок:

Якщо ви отримали помилку - переконайтеся, що правильно переписали код і використовуєте інтерпретатор версії 2.х (для версії 3.х слід використовувати команду print ("Hello, Python"))

Скриптовий режим програмування:

Запуск у командному рядку pythonз назвою файлу (він ще називається скрипт) як параметр, почне виконання коду, записаного в даному файлі. Після завершення виконання скрипта інтерпретатор буде знову неактивний.

Давайте, створимо просту програму-скрипт на Python. Відкрийте будь-який текстовий редактор(Sublime, Notepad++, gedit...), створіть у ньому файл з ім'ям test і розширенням.py (всі файли, що містять код на Pythonповинні мати розширення .py) і запишіть у цей файл вже знайомий нам код і збережіть файл:

Print "Hello, Python!"

(Передбачається, що інтерпретатор Pythonу вас заданий в змінній PATH, тобто ви перебуваючи в будь-якій директорії, можете ввести python для запуску інтерпретатора)

Після цього введіть наступний рядок у командному рядку та натисніть Enter:

Ідентифікатори в Python:

Ідентифікатори в Pythonце імена, що використовуються для позначення змінної, функції, класу, модуля або іншого об'єкта. Ідентифікатор повинен починатися з літери (від a до Z) або зі знака підкреслення (_), після яких може йти довільна кількість літер, знаків підкреслення та чисел (від 0 до 9).

У Pythonнеприпустиме використання розділових знаків або спеціальних символів, таких як @, $ або % як ідентифікатори. Крім того, Pythonчутливий до регістру, тобто catі Catце два різні імені.

У Python існує така домовленість для назви ідентифікаторів:

  • Імена класів починаються з великої літери, решта ідентифікаторів - з маленької.
  • Використання символу підкреслення як перший символ ідентифікатора означає, що цей ідентифікатор є приватним (закритим від використання поза класом).
  • Якщо ідентифікатор починається і закінчується двома знаками підкреслення (наприклад, __init__), це означає, що він є спеціальним ім'ям, визначеним усередині мови.

Зарезервовані (ключові) слова в Python:

У цій таблиці зібрані всі ключові слова Python.

and elif if print
as else import raise
assert except in return
break exec is try
class finally lambda while
continue for not which
def from or yield
del global pass

Ці зарезервовані словане можна використовувати як ім'я змінної або будь-якого іншого ідентифікатора. Усе ключові слова Pythonскладаються лише з літер у нижньому регістрі. Отримати список ключових слівможливо в інтерпретаторі командою

Help("keywords")

Рядки та відступи:

Одна з перших особливостей Python, яка впадає у вічі програмістам, початківцям вивчати цю мову програмування, те, що у ньому не використовуються дужки для позначення окремих блоків коду. Замість них у Pythonвикористовуються двокрапки та відступи.

Кількість прогалин у відступах довільно і вибирається кожним на власний розсуд, проте за домовленістю дорівнює чотирьом пробілам. При цьому відступ всього блоку має бути однаковим.

Наприклад, цей блок коду буде працювати (хоча так писати не варто):

If True: print "Hi" else: print "Bye"

А це вже викличе помилку:

If True: print "Hi" print "Bye"

Таким чином, у Pythonкілька рядків коду з однаковим відступомформуватимуть окремий блок коду. Завдяки такій системі значно підвищується читаність коду та прищеплюється звичка писати зрозуміло та структуровано.

Багаторядкові вирази:

Вирази у Python, як правило, закінчуються новим рядком. Однак, у цій мові програмування існує спеціальний символ перенесення рядка (\), який показує, що з закінченням рядка не закінчується код. Наприклад:

Total = item1 + \ item2 + \ item3

Вирази, що знаходяться всередині дужок: квадратних (), фігурних (( )) або круглих (()) не потребують символу перенесення рядка. Наприклад:

Days = ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

Пластини в Python:

У Pythonможна використовувати одинарні ("), подвійні (") і потрійні (""" або """) лапки щоб позначити малий тип даних, при цьому починатися і закінчуватися рядок повинен однаковими лапками. Рядок, що займає кілька рядків коду, повинен бути обрамлений потрійними лапками. Наприклад:

Name = "wasd" description = "Якщо текст" biography = """ Один довгий текст для кількох ліній з коду """