Єдина Країна!

Головне меню

Наша кнопка

Українські уроки про ІТ

Друзі

Підтримка української армії



Основи Python
Написав Invader   
Понеділок, 26 листопада 2012 12:47
Переглядів: 24965

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

Офіційне введення в мову Python наступне:

Python легка у вивченні, потужна мова програмування. Вона має ефективні високорівневі структури даних і простий, але ефективний підхід до об’єктно- орієнтованого програмування. Елегантний синтаксис мови і динамічна типізація поєднані з командно-інтерпретованою природою роблять Python ідеальною мовою для написання скриптів та швидкої розробки програм в багатьох сферах та на різних платформах.

Просто вивести на екран “Привіт, світе” недостатньо, чи не так? Ти хочеш зробити більше за це — ти хочеш отримати якісь дані від користувача, виконати над ними якісь дії і щось із цього отримати. Ми можемо досягти цього у Python викор. константи і змінні.

 

Літеральні константи

Прикладом літеральної константи може бути число, напр. 5, 1.23 чи, наприклад, рядок: "Це рядок!". Домовимося що під літеральною константою тут розуміється константа (після визначення її не можна змінити), яка включена в текст програми безпосередньо, буквально, тобто до неї не можна отримати доступ, зіславшись на неї, наприклад зі змінної. Трохи мутно, але це дані числового чи рядкового типу включені в програму як вони є (змінна не може вважатися літеральною константою).

Числа

В Python існують числа трьох типів: цілочисельні(integers), числа з плаваючою комою(floating point) і комлексні числа.

 

- Прикладом цілочислового числа може бути число 2.

- Прикладом чисел з плаваючою комою є 3.23.

- Прикладом комплексних чисел є: 52.3E-4.

 

 

Зауваження для досвідчених програмістів

В Python не існує окремого типу даних "long int". Тип int може бути як завгодно довгим.

 

Рядки

Рядок — це послідовність символів. Загалом, рядки це просто жмут слів. Слова можуть бути написані на будь-якій мові яку підтримує стандарт Unicode, що значить — майже будь-яка мова на Землі.

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

Одинарні лапки

Ти можеш створити рядок використовуючи одинарні лапки такі як 'Quote me on this'. Всі розділові знаки показується як є.

Подвійні лапки

Рядки у подвійних лапках обробляються так само як і рядки в одинарних лапках. Приклад: "Як твоє ім'я?".

Потрійні лапки

Можна визначати багаторядкові рядки викор. потрійні лапки (""" або '''). Подвійні і одинарні лапки можна вільно використовувати всередині потрійних. Приклад:

 

'''This is a multi-line string.This is the first line.
This is the second line.
"What's your name?," I asked. He said "Bond, James Bond". '''

Керуючі послідовності

Припустимо, що ти хочеш мати рядок який містить одинарну лапку ('), як ти визначиш рядок? Наприклад, рядок What's your name?. Ти не можеш написати 'What's your name?' тому що Python не зможе визначити де рядок починається, а де він закінчується. Тому, потрібно вказати, що та лапка не вказує на кінець рядка. Це можна зробити скориставшись так званими керуючими послідовностями. Треба написати \' — зауваж зворотню косу лінію. Тепер, ти можеш визначити рядок так: 'What\'s your name?'.

Інший спосіб, яким можна визначити цей специфічний рядок, написати ось так: "What's your name?". Використовуючи подвійні лапки. Таким же чином ти повинен викор. подвійні лапки у рядку, що оточений подвійними лапками. Для того щоб вказати на те що потрібен саме зворотній слеш, пишемо ось так: \\.

Що якщо ти захотів вказати логічний рядок розташований на двох фізичних рядках? Один із можливих способів використання потрійних лапок, але існує також інший варіант — використання керуючого символу для позначення початку нового рядка — \n. Приклад використання:

{pre class="brush: python; gutter:false;" }This is the first line\nThis is the second line{/pre}

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

Слід зауважити, що один символ \ в кінці рядка позначає те, що рядок продовжується на наступній лінії, але ніяких символів до нового рядка не додається! Приклад:

"This is the first sentence.\
This is the second sentence."

що еквівалентно “This is the first sentence. This is the second sentence.”.

Необроблювані рядки

Якщо потрібно визначити рядок де не відбувається обробка жодних спеціальних символів, треба написати букву r або R на початку рядка. Приклад:

r"Newlines are indicated by \n"

Рядки незмінні (immutable)

Це означає, що з того часу як ти створив рядок, ти не можеш його змінити. Наприклад, написати someString[0]='a'. Це може виглядати недобре, але насправді це не так.

 

Об’єднання рядків

Якщо ти розмістиш два рядки поряд, то вони будуть автоматично об’єднані (конкатеновані). Наприклад, 'What\'s' 'your name?' автоматично перетвориться на "What's your name?".

 

Зауваження для C/C++ програмістів

В Python не існує окремого типу даних char. В цьому не має реальної потреби, і я впевнений що ти в цьому переконаєшся.

Зауваження для Perl/PHP програмістів

Запам’ятай, що різниці між рядками у подвійних і одинарних лапках не існує.

Зауваження для користувачів регулярних виразів

Завжди використовуй необроблювані рядки, коли користуєшся регулярними виразами. Інакше може знадобиться багато екранування. Наприклад, зворотні ссилки можна позначати як '\\1' або r'\1'.

Метод format

Іноді ми можемо захотіти створити рядок з іншої якоїсь інформації. Ось де метод format() стане в нагоді.

#!/usr/bin/python
# Filename: str_format.py
age = 25
name = 'Swaroop'
print('{0} is {1} years old'.format(name, age))
print('Why is {0} playing with that python?'.format(name))

Виведе:

$ python str_format.py

Swaroop is 25 years old

Why is Swaroop playing with that python?

Як це працює?

Всередині рядка ми вставили певні специфікатори і викликали метод format. Який заміняє ці специфікатори відповідними аргументами переданими методу. Перший специфікатор це — {0}, він відповідає змінній name, яка є першим аргументом для вищевказаного методу format. Та ж історія із другим специфікатором — {1}, він відповідає другому аргументу — age.

Зауваж, що ми також можемо досягти того ж результату скориставшись конкатенацією рядків: name + ' is ' + str(age) + ' years old', але зверни увагу на те, що це більш незручно, крім того такий спосіб може збільшити к-ть помилок. Перетворення в рядковий тип відбувається автоматично (це робить метод format). Не потрібно це робити явно, в ручну. Коли викор. метод format можна змінювати повідомлення не маючи справи зі змінними.

Що Python робить так це замінює аргументами відповідні специфікатори. Можна скористатися і більш деталізованими специфікаторами:

>>> '{0:.3}'.format(1/3)# число з дробною часткою (.). Точність 3 знаки
'0.333'
>>> '{0”__^11}'.format('hello')# заповнити нижнім підкреслюванням. Текст #відцентровано (^) до довжини 11
'___hello___'
>>> '{name} wrote {book}'.format(name='Swaroop', book='A Byte of Python')#ключові слова
'Swaroop wrote A Byte of Python'

Деталі форматування специфікацій пояснені в Python Enhancement Proposal No. 3101 (http://www.python.org/dev/peps/pep-3101/ ).

Поняття змінної

Використання тільки літеральних констант може дуже швидко стати нудним — нам потрібен спосіб який би дозволив зберігати будь-яку інформацію і маніпулювати цією інформацією. Ось тут змінні стануть нам в нагоді. Поняття змінної означає саме те що значить саме слово — їхні значення можуть змінюватися, іншими словами ти можеш зберігати будь-які дані користуючись змінною. Змінні це — просто іменована частина пам’яті твого комп’ютера де ти тримаєш певну інформацію. На відміну від літеральних констант потрібен якийсь спосіб для отримання доступу до змінних і саме тому ти даєш їм імена.

r

Іменування ідентифікаторів

Змінні є прикладом ідентифікаторів. В свою чергу ідентифікатори це імена які на щось вказують (ідентифікують). Існують певні правила яким ти повинен слідувати при іменуванні ідентифікаторів:

 

1) Першим символом ідентифікатора має бути літера (символ з набору ASCII або Unicode-символ. Байдуже у якому регістрі.) чи знак нижнього підкреслювання (underscore) — '_'.

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

3) Імена ідентифікаторів чутливі до регістру символів. Наприклад, myname і myName це не одне й теж саме (це різні змінні).

4) Прикладом правильних імен ідентифікаторів є i, __my_name, name_23, a1b2_c3 і resumÃÆâ€TMƒÂ©_count.

5) Приклад неправильних імен ідентифікаторів: 2things, this is spaced out, my-name, "this_is_in_quotes".

 

Типи даних

Змінні можуть містити значення які відносяться до різних типів даних. Базовими типами є числа і рядки. Далі ми розглянемо як створювати власні типи даних користуючись класами.

Об’єкти

Запам’ятай, Python відноситься до всього, що використано в програмі як до об’єкта.

Зауваження для користувачів ООП

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

 

Зараз ми побачимо як використовувати змінні разом з літеральними константами. Збережи наступний приклад і запусти програму.

Приклад: використання змінних і літеральних констант

#Filename : var.py

i = 5
print(i)
i=i+1 #або i+=1. Така конструкція є більш вживаною
print(i)

s='''This is a multi-line string.
This is the second line'''
print(s)

Що виведе на екран:

$ python var.py

5

6

This is a multi-line string.

This is the second line.

Як це працює:

Спершу ми присвоїли число 5 змінній з іменем i використовуючи оператор присвоєння (=). Цей рядок називається твердженням тому що він наголошує на тому, що щось має бути зроблено, у даному випадку ми поєднали ім’я змінної iз числом 5. Далі, ми вивели на екран значення змінної i використовуючи вбудовану функцію print, яка, як це не дивно, просто виводить на екран значення змінної.

Потім ми додали 1 до значення яке міститься в змінній i і повернули його назад в ту ж саму змінну. Все що робить конструкція i=i+1 так це додає до значення, яке міститься у змінній i число 1, а потім перевизначає змінну i новим значенням (повертає результат операції 5+1 у змінну). Вираз слід читати зправа наліво (Запусти інтерпретатор Python в інтерактивному режимі і спробуй спочатку написати i=5 а потім i+1. Після кожної операції виводячи значення змінної (достатньо просто написати ім’я змінної)).

Зауваження для програмістів на статичних мовах програмування

Змінні визначаються (їх можна починати використовувати) відразу після присвоєння їй якогось значення (достатньо написати ім’я змінної оператор присвоєння і значення для змінної). Ніяких оголошень чи визначення типу даних не потрібно.

 

Різниця між логічними та фізичним рядками тексту

Під логічним рядком слід розуміти ОДНУ завершену інструкцію (будемо вважати, що одна така завершена конструкція є оператором) для Python. Фішка в тому що зазвичай, кожна така інструкція має в кінці якийсь знак який і вказує на її завершеність (ніби крапка в реченні, якщо в кінці речення не вказати крапку, то буде не зрозуміло чи це завершене твердження чи ти ще щось хотів сказати). Зазвичай таким знаком є ;. В таких мовах програмування як С, С++ etc в кінці кожної інструкції ОБОВ’ЯЗКОВО ставиться крапка з комою. Python же є винятком — тут це робити необов’язково і більшість програмістів на Python цього не роблять. Але зауваж, що якщо ти цього не робиш, то кожен оператор має розташовуватися на одному рядку, тобто

a=5 print(a)

неправильно, а от

a=5
print(a)

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

a=5; print(a); b=input('How old are you?')#даний код працює. В кінці немає ; бо це була остання ірструкція в цьому фізичному рядку

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

Також не варто змішувати різні стилі в одній програмі.

Якщо виникне необхідність вивести на екран довгий рядок тексту, який бажано було б розбити на декілька фізичних рядків в тексті програми, і який повинен знаходитися на одному фізичному рядку на екрані слід писати так:

s='This is a string. \
This continues the string.'
print(s)

Після виконання даного коду на екрані відобразиться:

This is a string. This continues the string

Схожим чином,

print\

(i)

те ж саме що й

print(i)

Існують випадки коли не потрібно використовувати явне об’єднання рядків. Це стосується рядків які знаходяться всередині дужок, квадратних чи фігурних дужок.

Відступи

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

Це означає що оператори які йдуть разом повинні мати однаковий рівень вкладеності. Кожен такий набір операторів називається блоком. Пізніше ми побачимо наскільки блоки важливі.

Одну дуже важливу річ яку ти маєш запам’ятати це те що невірна к-ть відступів може призвести до виникнення помилок.. Для прикладу:

i=5
    print('Value is ', i) #Помилка! Зауваж пробіл на початку 
print('I repeat, the value is', i)

Коли ти це запустиш, то отримаєш помилку:

File "whitespace.py", line 4

print('Value is ', i) #Помилка! Зауваж пробіл на початку

^

IndentationError: unexpected indent

 

Як правильно робити відступи?

Ні в якому разі не використовуй мішанину з пробілів і відступів! Варто використовувати тільки або 4-и пробіли або один відступ (клавіша Tab)

 

 

Автор перекладу - Дмитро Юрченко.


( 14 Проголосувало )
Коментарі
Добавити новий
32232  - 323223   |2018-05-31 13:23:57

Залишити коментар
Ім`я:
e-mail:
 
Тема:
 
:angry::0:confused::cheer:B):evil::silly::dry::lol::kiss::D:pinch:
:(:shock::X:side::):P:unsure::woohoo::huh::whistle:;):s
:!::?::idea::arrow:
 
Введіть цей настирливий код
Русская редакция: www.freedom-ru.net & www.joobb.ru

3.26 Copyright (C) 2008 Compojoom.com / Copyright (C) 2007 Alain Georgette / Copyright (C) 2006 Frantisek Hliva. All rights reserved."

 

Підписка

Хто онлайн?

Немає
На даний момент 25 гостей на сайті

Український рейтинг
TOP.TOPUA.NET