Форум русскоязычного сообщества Ubuntu


Хотите сделать посильный вклад в развитие Ubuntu и русскоязычного сообщества?
Помогите нам с документацией!

Автор Тема: Уроки по Python [А ВОТ И УРОК 7 - ООП!]  (Прочитано 44965 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Наверняка ты зашел в эту тему, чтобы научиться отличному языку программирования Python. И правильно, по этим урокам очень легко обучаться и они довольно интересны. Возможно, именно ты станешь настоящим гуру-питонистом!

Оглавление
Все эти уроки есть на Дафтере. Начинай с первого!
Обсуждение
Обсуждение всех уроков происходит в специальной теме.

Удачного обучения!
« Последнее редактирование: 12 Января 2014, 19:23:50 от Grigory Smirnov »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python
« Ответ #1 : 29 Июля 2013, 12:03:56 »
Здравствуйте! Как я и обещал, начинаю публиковать уроки по Python. Я начал делать это скорее для себя, чтобы лучше разобраться или просто повторить пройденный материал. Хочу сразу оговориться, что уроки предназначены для новичков в программировании, гуру ничего полезного в первых уроках не найдут.

Итак, первая часть будет посвящена переменным, типам данных, вводу и выводу данных. Приступим.

Python — интерпретируемый язык, то есть код выполняется частями и преобразуется в машинный также. Вам не обязательно компилировать (собирать программу из исходного кода) программу, вы можете запустить интерпретатор, где код будет выполняться сразу же после его ввода и нажатия клавиши Enter. Если вам непонятно, то запустите интерпретатор:
  • Откройте терминал
  • Напишите Python
Вы увидите вот такое окошко:

Смело вводите код и нажимайте Enter. Но все же рекомендую сразу использовать полноценную рабочую среду. Я использую Geany, можете тоже установить из "Центра приложений Ubuntu".

Типы данных

Существуют разные типы данных - числа, строки и т.д. В Python существуют специальные обозначения для разных типов данных:
Код: (python) [Выделить]
str('56') '56' #Строки (# в python однострочные комментарии)
int('7.2') '7' #Целое число
float('34') '34.0' #Числа с запятой, дроби

Конечно же, если мы попытаемся преобразить слово в целое число, то увидим ошибку. Будьте внимательны!

Переменные

Данные находятся в ячейках памяти компьютера. Раньше, чтобы получить к ним доступ, указывали регистр. Но уже давно используются переменные. Переменная состоит из имени и значения. Имя может начинаться только с буквы. Пример:
Код: (python) [Выделить]
retro = 3
name = 'Grigory'
Учтите, что если значение переменной слово, то оно должно заключаться в кавычки. Если же значение переменной другая переменная или цифра, то кавычки не нужны. Переменные можно вызывать, например:
Код: (python) [Выделить]
b=6
b
Мы увидим
Код: (python) [Выделить]
6
Над переменными можно выполнять действия. Пример:
Код: (python) [Выделить]
a=4
b=3
c=a + b
Если затем мы вызовем c, то увидим результат сложения a и b. Кстати, действия в Python почти ни чем не отличаются от действий в реальном мире. Приведу основные:
Код: (python) [Выделить]
*  #Умножение
+  #Сложение
-  #Вычитание
/  #Деление
**  #Возведение в степень
% # остаток от деления %
// #  целочисленное деление //

>>> 5.0%3.0
2.0
>>> 6.0%3.0
0.0
>>> 11.0//2.0
5.0
Больше действий вы найдете в модуле
Код: (python) [Выделить]
math
Вывод данных

Согласитесь, что использовать переменные для вывода данных - неудобно и не экономично. Поэтому в Python существует функция print, которая позволяет выводить произвольные данные на экран. Как она действует:
Код: (python) [Выделить]
#Пример 1
a='hello'
print(a) #() только в python 3, в python 2 без скобок

#Пример 2
print('ice-cream') #Не забывайте про кавычки!

#Пример 3
b='lazy'
print('Are you' + b) #Используем + для подстановки не слов

Ввод данных

Вряд ли пользователю будет интересно просто смотреть на экран или нажимать Enter. Программе нужно добавить интерактивности! Для этого (и не только) существует функция ввода данных. Давайте посмотрим на нее внимательней:
Код: (python) [Выделить]
#Пример 1
b=input() #Просто ждем ввода, после этого продолжится выполнение программы

#Пример 2
b=input('My name is... ') #Можно добавить текст-подсказку...
print('Your name is' + b) #и отобразить введенные данные

Думаю, сегодня на этом все. Экспериментируйте с кодом и... домашнее задание! Код можно написать здесь или на dafter.ru, где размещен этот же урок. Если что-то непонятно, то спрашивайте.

Д/З
1. Напишите программу, где одна переменная числовая, другая состоит из слов. Поделите числовые переменные, а слова отобразите вместе.
2. Спросите у пользователя данные о его возрасте и имени, отобразите их.

В следующем выпуске: if, while и логические операторы... Всем спасибо!
« Последнее редактирование: 12 Сентября 2013, 18:27:47 от Grigory Smirnov »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python
« Ответ #2 : 29 Июля 2013, 12:07:19 »
Приветствую! Это тот самый долгожданный урок по замечательному языку программирования Python. Сегодня мы разберем:
  • Логические выражения
  • Оператор if
  • Оператор else
  • Оператор elif
Приступим!

Логические выражения
Наверняка все мы помним, как в начальной школе сравнивали числа: 5<8, это правда; 5>2, тоже правда; 5<4, а вот это ложь. Также и в языке Python, только операторов здесь немного больше. Вот список:
Код: (python) [Выделить]
x == 8 # x равен 8
x != 3 # x не равен 3
x > 5 # x больше 5
x < 5 # x меньше 5
x >= 7 # x больше или равен 7
x <= 6 # x меньше или равен 6
Это простые выражения.

Также можно использовать сложные выражения. На их выходе мы получаем либо True (правда), либо False (ложь). Чтобы использовать сложные выражения, нужно знать еще несколько операторов, а именно and и or. Думаю, их значение понятно, и и или соответственно. Итак, небольшой пример:
Код: (python) [Выделить]
x = 6
y = 13
x == 6 and y < 15 #  x равен 8 и y меньше 15
x > 6 and y < 15 #  x больше 8 и y меньше 15
x != 0 or y >15 #  x не равен 0 или y больше 15
x < 0 or y >15 #  x меньше 0 или y больше 15
Чтобы получить правду с оператором or, необходимо, чтобы результаты хотя бы одного простого выражения был истинным. Ложным выражение становится тогда, когда ложны все составляющие его простые выражения.

Чтобы получить истину при использовании оператора and, необходимо, чтобы результаты обоих простых выражений, которые связывает данный оператор, были истинными. Если хотя бы в одном случае результатом будет False, то и все сложное выражение будет False. Строки тоже можно сравнивать, попробуйте сами это сделать.

Думаю, понятно, если вы что-то не поняли, то спрашивайте. Иначе не получится выполнить домашнее задание  :-\

Условные операторы
Обычно в наших программах все было понятно - за таким-то действием идет второе, за вторым третье и т.д. И ничего не могло этому помешать (ну кроме ошибок  ;) ). Теперь вы сможете использовать условный оператор if, что поможет создавать условия. Конструкция выглядит так:

if переменная условие вторая_переменная:
    что_выполнить_если_выражение_выше_правда

Обратите внимание, что после первой строки обязательно должно быть двоеточие и отступ в 4 пробела!
Пример простого условия:
Код: (python) [Выделить]
#Условие
g=7
c=8
if c == g:
    print('Hooray!')

#А вы не забыли про логические операторы?
t=5
b=2
j=7
if t > b and t < j:
    print('It is magic')

"Но ведь условия не всегда правдивы!", скажете вы. И будете правы - для этого существует конструкция if-else. Вот пример, после которого вы все поймете.

Код: (python) [Выделить]
h=int(input('Enter... ')) #Мы не знаем, какое число введет пользователь
if h == 4: #Если 4, то...
    print('All right')
elif h < 6: #Если у вас не одно условие, то второе можно задать с помощью elif
    print('Empty')
else: #Как видите, else без аргументов
    print('You are fool') #Тоже 4 отступа!

Если ни одно условие выше не True, то тогда выполняется блок else. Если хоть одно условие выше правда, то блок else просто пропускается, а правдивое условие выполняется. Я использовал elif - если первое условие не выполняется, то смотри дальше, если опять false, то дальше, до else. Вот так сделать не получится:
Код: (python) [Выделить]
dogs=4
if dogs == 3:
    print('Dogs are beautiful')
if dogs > 6:  #Ошибка! Используйте elif
    print('OK')
else:
    dogs=6
    print(dogs)

Можно делать вложенные инструкции :P :
Код: (python) [Выделить]
cats=5
if cats < 7:
    print('And')
    if cats == 6:
        print('Cats!!!')
    else:
        print('Funny cats were lost')
else:
    cats=3
Будьте аккуратнее с пробелами - каждый новый уровень, 4 новых пробела. Да, в том же Java блоки помечаются { и }. Но отступы все равно чаще всего делают, хотя они никак не влияют на процесс выполнения программы - это делают только ради чистоты и читаемости кода.

Домашнее задание  :coolsmiley:
1. Напишите 5 сложных выражений (использовать or и and)
2. Напишите скрипт, который спрашивает у пользователя какие либо данные. Если они совпадают (допустим, с переменной b), то выведите ему сообщение, что он прошел тест. Иначе, напишите, что он не прошел его.
3. Напишите скрипт, где используются вложенные условия, а в условиях есть операторы or или end.

Также вы можете прочитать этот урок на Дафтере: http://dafter.ru/duf/python/52.html, или просто посетить его, тем самым помочь автору этого урока. А особо активных я хочу спросить - как развивать сайт? Как приобрести постоянных пользователей (спамеры не в счет  :2funny: ) Большое спасибо за советы!

На этом все, сообщайте об ошибках и публикуйте свое выполнение домашнего задания. До скорых встреч!

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python
« Ответ #3 : 29 Июля 2013, 12:11:05 »
Всем доброго дня.

Итак, сегодня мы поговорим о циклах. Это очень важная тема, циклы широко применяются в дальнейшем, поэтому прочитайте урок внимательно.

Цикл While
Циклы выполняют что-нибудь, пока условие не будет выполнено. While - довольно простой цикл, вот его схема:

while переменная условие вторая_переменная:
    действие_пока_цикл_правдив

С каждым "оборотом" цикла, действие внутри него происходит снова. Обратите внимание, что как и с условными операторами, требуется делать отступы, тем самым обозначая блок, который будет выполняться. Пример просто цикла, который мы детально разберем:
Код: (python) [Выделить]
x='!'
i=2
while i < 8:
    print(x)
    i = i + 1

В первой строчке мы присваиваем переменной x значение !, а второй делаем тоже самое для переменной i, значение 2. Затем идет цикл, то есть: пока i меньше 8, выводить на экран x. Самая интересная последняя строчка. Так мы с каждым оборотом цикла увеличиваем значение i на 1, следовательно, цикл не бесконечен. Когда значение i станет больше 8, цикл остановится.

А вот очень популярный цикл, который генерирует числа Фибоначчи - ряд чисел, в котором каждое последующее число равно сумме двух предыдущих: 0, 1, 1, 2, 3, 5, 8, 13 и т.д. Попробуйте в нем сами разобраться. Если у вас это не получится, то смотрите объяснение под спойлером. Или просто проверьте себя :)

Код: (python) [Выделить]
fib1 = 0
fib2 = 1
print (fib1)
print (fib2)
r = 10
i = 0
while i < r:
fib_sum = fib1 + fib2
print (fib_sum)
fib1 = fib2
fib2 = fib_sum
i = i + 1
Объяснение:
(Нажмите, чтобы показать/скрыть)

Цикл for
В отличие от других языков программирования (я изучаю Java, говорю про нее, возможно в других языках также), цикл for в Python не просто цикл со счетчиком. Он как бы перебирает по одному элементы. Разберем состав цикла:

for переменная

создаем новую переменную, в которой будет храниться результат выполнения цикла.

in переменная2

in - обязательно, а из второй переменной берем значение, которое и будем перебирать. Если вам сейчас не очень понятно, то вот пример:

Код: (python) [Выделить]
word='hello'
for letter in word: #Опять отступы!
    print(letter, end=' * ')   #end - на конце буквы будет ставится *

#Вывод это цикла:
п * р * и * в * е * т *

Также можно использовать счетчик для цикла:

Код: (python) [Выделить]
for i in range(100): #100 - количество повторов цикла
print(i,end=' ')

Также цикл for используется для работы со словарями и списками. Следующий урок так раз будет про них. Мы изучим словари, списки, строки; повторим работу с циклом for и научимся применять его не только со словами.

Домашнее задание:
1. Можно сделать бесконечный цикл, используя логические операторы, которые мы изучили в прошлом уроке. Попробуйте написать такой цикл. Не используйте pass!
2. Напишите цикл с for, где выводится слово по буквам

К сожалению, следующий урок выйдет не скоро, т.к. я буду занят :'(. Но ждите и осваивайте текущий материал!

P.S. Зачем я сделал такое "нелогичное" изучение материал? На самом деле я просто хочу, чтобы старый материал не забывался, а изучение новых возможностей и применение их со старыми помогут в этом.

Прочитайте урок на Дафтере: http://dafter.ru/duf/python/53.html. Подсветка кода там лучше :)

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python
« Ответ #4 : 09 Августа 2013, 13:16:52 »
Приветствую всех! Вы еще не забыли, что здесь происходит? Если нет, то давайте окунемся в замечательный мир Python! Тема сегодняшнего урока - списки, словари и строки. Перед началом чтения советую повторить материалы третьего урока, особенно про цикл for, т.к. мы будем широко его применять.

Не дай помереть с голоду, зайди на dafter.ru и опубликуй свою статью. Или хотя бы прочитай там этот урок: http://dafter.ru/duf/programming/58.html

Строки
Мы уже встречались со строками, хотя сами это не понимали. Вот пример строки и преобразования в строку:
Код: (python) [Выделить]
#Я работаю в интерпретаторе, чтобы наглядно показать тип переменной
>>> stroka = 'Привет!'
>>> type(stroka)   #Type - полезная функция, которая определяет тип переменной.
<type 'str'>
>>> ch = 4
>>> type(ch)
<type 'int'>
>>> ch = str(4)
>>> type(ch)
<type 'str'>
>>>
Конечно же, имя переменной для строки может быть любым.

Есть интересные возможности у строк. Покажу их в этом примере, комментарии поясняют.
Код: (python) [Выделить]
#Я опять в интерпретаторе
good = 'Все хорошо!'
>>> len(good) #Определяем длину строки
20
>>> good[1]  #У каждой буквы есть индекс в строке. Отсчет начинается с нуля!
'с'
>>> good[5]
'о'
>>> time = 'morning'
>>> time[0:7]  #Мы произвели срез строки; отобразятся элементы с 0 по 7 индекс
'morning'
>>> '+' * 3   #Мы продублировали строку 3 раза
'+++'
#Также можно склеить одну строку с другой, что мы уже видели в прошлых уроках (b + c)

Еще раз повторюсь - индексы букв начинаются с нуля (0). Также строки - неизменяемый тип данных! У вас не получится заменить одну букву другой используя индексы. Впрочем, если интересно, можете попробовать.

Я вас просил вспомнить про цикл for. Почему? Потому что символы в строке можно перебрать посредством этого цикла!
Код: (python) [Выделить]
rt='rule'
for i in rt:
    print(i)
#Вывод этого цикла:
r
u
l
e
Задание: попробуйте вывести отдельно каждый элемент строки, не используя цикл for. Решение вы можете опубликовать в обсуждении уроков.

Списки
Если честно, то больше всего из элементов питона я люблю списки! Они гибкие, простые, удобные... Я уверен, они вам тоже понравятся  :smitten:

Списки могут содержать числа, строки и даже... еще один список (т.е. вложенные списки уже получаются)! Списки заключаются в квадратные скобки []. Небольшой пример:
Код: (python) [Выделить]
c=['apple', 56, 'yast'] #Список из строк и чисел
print(len(c))  #Длина списка (учитывается количество элементов)
print(c[2])    #Угадайте, что отобразится в терминале (yast)
[[6, 5, 2], ['ubuntu 12.04', 67]] #Вложенный список

А теперь перед вами раскроется вся магия списков!
Код: (python) [Выделить]
c=['uh', 'bh', 'tfedc']
c[1]='haha'  #Мы изменили 1 элемент в списке на haha
c[0:2]=[45, 'gg']  #Мы заменили целый срез в списке
c.append(3)  #Мы добавили 3 в конец списка (функция append всегда добавляет в конец списка)
#Также список может содержать переменную как элемент. При запросе вывода списка, элемент-переменная отобразит значение переменной

Цикл for тоже применяется со списками. Он перебирает каждый элемент

Вам понравилось? Нет? Значит понравится!

Словари
В Python (читается как "пайтон"!) есть еще одни мощные инструменты - словари. Давайте вспомним обычный словарь. Элементы в нем располагаются так: ключ (слово) - значение и т.д. Питон-словари от этого принципа не отличаются.
Код: (python) [Выделить]
#Пример словаря
eng={'frog':'лягушка', 'seven':'7'}
#Найдем значение у ключа frog
print(eng['frog']) #Мы получим "лягушка"
#Изменим значение у seven
eng[seven]='семь'
#Удалим все про лягушку
del(eng['frog'])

Вы можете создать пустой словарь вот такой конструкцией: переменная{}, чтобы потом в него что-нибудь добавлять. Кстати, словарь может содержать и другие типы данных, не только строки. Цикл for тоже работает со словарями, но гибкости - 0.
Tip: если вы в интерпретаторе выведите ранее сделанный словарь, то увидите, что порядок изменился.

Домашнее задание:
1. Повторите строки
2. Напишите программу, которая спрашивает пользователя числа и добавляет их в конец списка, пока количество всех элементов меньше 5. Затем с помощью цикла for выведите все числа, предварительно прибавив к первому числу 1, ко второму 2, к третьему 3 и т.д.
3. Напишите простой русско-английский словарь, который отображает перевод введенного пользователем слова. Если такого слова нет, то его надо добавить в словарь.

Выполнение домашнего задания выкладывайте в тему обсуждения уроков. До встречи!
« Последнее редактирование: 09 Августа 2013, 15:41:11 от Grigory Smirnov »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python
« Ответ #5 : 06 Сентября 2013, 17:45:00 »
Всем доброго дня, это опять я! Сегодня мы разберем функции и это будет уже пятый урок. Надеюсь, питон вам понравился и вы горите желанием написать что-нибудь серьезное. Итак, функции нам в это отлично помогут.

Дафтер - это интересные новости и лучшие статьи из мира IT. Если ты не равнодушен к судьбе молодого проекта, то, пожалуйста, прочитай этот урок на Дафтере. Или присоединяйся к Дафтеру. Или просто зайди на Дафтер.

Строение
Функции обозначаются так:
Код: (python) [Выделить]
def hello():
    print('hello')
Давайте разберем этот код. def - ключевое слово, обозначает начало функции. Далее следует имя функции, любое (но правила имен переменных учитываются). Скобки, которые нужны для передачи параметров, но об это позднее. Далее двоеточие, которое обозначает блок функции. И само тело - в нем можно писать любой код.

Вы спросите - "А как же запустить функцию?". Легко, просто напишите в коде имя функции со скобками. Например, так:
Код: (python) [Выделить]
hello()Функция автоматически начнет выполняться.

Передаваемые параметры
Думаю, вы уже поняли, зачем нужны функции. А именно, чтобы по сто раз не писать повторяющийся код. Еще у функции есть очень удобная штука как передаваемые параметры. Допустим, нам надо вывести в скрипте несколько раз имя человека, которое он сам ранее указал. Писать несколько раз один код будет неудобно и мы воспользуемся функцией:
Код: (python) [Выделить]
name = input('Имя...')
def print_name(name):  #В скобках - параметр, который получает функция
    print('Твое имя - ' + name)
a=input('Да?')
if a == 'да':
    print_name(name) 
elif a== 'нет':
    print_name('нет :(') #Передаем "нет :(" как параметр
#Еще какой-нибудь код, где мы вызываем эту функцию
Как видите, функции очень универсальны и полезны. Передаваемых значений может быть несколько, а также они могут иметь значения по-умолчанию, например:
Код: (python) [Выделить]
name = input('Имя...')
def print_name(name='none'):  #В скобках - параметр, который получает функция
    print('Твое имя - ' + name)
То есть если мы просто вызываем функцию, то печатается параметр по-умолчанию, а чтобы указать свой надо это явно указать. Есть два способа для этого:
Код: (python) [Выделить]
def print_name(name='none'): 
    print('Твое имя - ' + name)
#Значение по-умолчанию
print_name()
#Способ 1, свое значение
print_name('царь')
#Способ 2, свое значение
print_name(name='котик')
Ну вроде бы с этим разобрались. Давайте разберем еще кое-что.

Возвращаемые значения и глобальные переменные
Функция может возвращать что-нибудь с помощью оператора return. Внимание! После выполнения оператора return, функция сразу же прекращает себя, т.е. закрывает и переходит обратно на то место, где функцию запустили, т.е. в основную ветку программы.
(Нажмите, чтобы показать/скрыть)
Давайте на примере посмотрим, как использовать этот return.
Код: (python) [Выделить]
def print_name(name): 
    return name
На выходе мы получаем значение name.
Совет: если вам надо завершить функцию, то вы можете воспользоваться оператором return без значения. На выходе вы получите None (т.е. все равно что-то вернется). Скрипт сразу завершит свое выполнение.
Итак, осталось разобрать последнею проблему; именно проблему, потому что у многих возникает много проблем и путаницы с этим. А именно с глобальными и локальными переменными.

Все переменные, которые были созданы в функции, являются локальными. Это значит, что за пределами функции вы не сможете их использовать, а после завершения выполнения функции, эти переменные и вовсе удаляются. Будьте внимательны!

Глобальные переменные доступны отовсюду. Их можно создать просто в коде или в функциях. Да, вы не ослышались. Вот как это делается:
Код: (python) [Выделить]
def simple():
    global b
    b='Дафтер'
После объявления переменной как глобальной, она доступна из всех пространств имен. Не рекомендуется все время использовать глобальные переменные; скоро вы поймете, почему так (или не поймете, что печально  :'()

Домашнее задание
1. Создайте вложенную функцию (догадайтесь, как это сделать)
2. Создайте функцию, которое обрабатывает что-либо (например, получает в качестве аргумента список), делает что-нибудь с аргументом (например, добавляет один элемент) и возвращает это что-либо в основную ветку программы.

Обсудить этот урок, выложить домашнее задание или сообщить об ошибках вы можете на Дафтере. Также обсуждение уроков происходит здесь, на форуме Ubuntu.

На этом все, постигайте дзен и не болейте!
« Последнее редактирование: 08 Сентября 2013, 15:22:02 от Grigory Smirnov »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python [НОВЫЙ УРОК 6 - МОДУЛИ!]
« Ответ #6 : 28 Октября 2013, 18:10:54 »
Всем привет. Мы почти закончили обучение основам питона и сегодня узнаем об еще одной интересной штуке - о модулях. Затем будет еще одни урок с различными полезными функциями, потом мини обзор всего пройденного в одном коде, а дальше... ООП! Да, объектно ориентированное программирование! Вот так быстро мы двигаемся.

Честно говоря - для полной понимании структуры модулей необходимо знать начальные понятия ООП, но мы попробуем обойтись без этого.


Что это

Итак. Модуль - это обычная программа. Только мы ее импортируем в другую, чтобы использовать ее возможности (функции, переменные и т.д.). Модули бывают стандартными, т.е. которые включены в стандартную библиотеку, а можно создать и свои. Давайте подключим очень полезный модуль os:
Код: (python) [Выделить]
import os #сделали импорт. os - название модуля
os.getcwd()  #указываем имя модуля, а после него имя функции, которая есть в этом модуле


МОДУЛЬ МОЖЕТ БЫТЬ НАПИСАН НЕ ТОЛЬКО НА PYTHON, А ТАКЖЕ И НА ДРУГИХ ЯЗЫКАХ. НА C++, НАПРИМЕР.


Также можно перечислять имена модулей через запятую, эффект будет тот же. После импорта модуля, мы можем получить доступ к его:
  • Переменным
  • Функциям
  • Классам

ЕСЛИ ИМЯ МОДУЛЯ СЛИШКОМ ДЛИННОЕ, ТО МОЖНО ИСПОЛЬЗОВАТЬ ПСЕВДОНИМЫ

Стандартные модули располагаются в папке питона (/usr/lib/python3). Заметили, что имена не у всех такие короткие, как у os? Вот. И чтобы не писать длиннющие имена, можно использовать вот такую конструкцию:
Код: (python) [Выделить]
import os as oВсе, теперь надо писать не os.что-то, а o.что-то. Псевдоним может быть любой (согласно с правилами обозначений переменных).

Подробнее
Также можно проводить выборочный импорт. Работает он так:
Код: (python) [Выделить]
from math import e, ceil  #as здесь тоже можно использовать
from math import * #так мы импортируем ВСЕ
Небольшое примечание - лучше не используйте import *. Так может нарушиться глобальное пространство имен, т.е. некоторые переменные могут быть перезаписаны. Особенно опасно для больших проектов.

Также можно задать переменную __all__ и в ней указать модули, которые можно импортировать. В таком случае будет импортироваться только то, что указано в этой переменной при import *.

Свой модуль
Тут нет ничего особенного :)
  • Создайте два файла с разными именами
  • В первом файле разместить какой-то код
  • Во втором импортируйте первый файл
Все! Теперь можно получить доступ к функциям, переменным и т.д.

Полезные модули
Небольшой список полезных модулей, которые вам сильно помогут:
  • os
  • pickle
  • datetime
  • random
  • sys
  • math
Их описание вы можете найти в Интернете или на ман страничке.

На этом все (сегодня без Д/З!), учите питон и пишите код!
« Последнее редактирование: 28 Октября 2013, 18:30:32 от Grigory Smirnov »

Оффлайн Grigory Smirnov

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1339
  • Дайте мне исходники, и я переверну Землю.
    • Просмотр профиля
    • Дафтер
Re: Уроки по Python [А ВОТ И УРОК 7 - ООП!]
« Ответ #7 : 12 Января 2014, 19:15:15 »
Добрый вечер, друзья. Я совсем перестал заходить на наш уютный форум, но по старой памяти и по настойчивым просьбам решил опубликовать еще один урок по Python. И сегодня мы поговорим про ООП.

Поскольку этот урок на Дафтере не опубликован, просто посоветую зайти на него. А также поинтересоваться проектом startapper.


ТЕМА ДЛЯ ПОНИМАНИЯ СЛОЖНАЯ, НЕ ВОЛНУЙТЕСЬ


Начали
ООП расшифровывается как объектно-ориентированное программирование. То есть мы можем представить, допустим, тело человека.
-Человек
--Голова
---Мозг
---Язык
--Туловище
---Руки
--Ноги

А с помощью ООП мы можем представить тело человека в коде. Ниже я приведу пример кода. Пока не разбирайтесь в нем, все равно не будет понятно. Ну а в конце урока вы вернетесь к нему и попробуете понять.

Код: (python) [Выделить]
class human():
    class head(human):
        def brain():
            #we do something
        def tongue():
            #we do something again
    class body(human):
И так можно описать все тело. Давайте разберем основные части кода.

Классы
Класс - основной объект. В примере выше мы использовали класс human (человек), чтобы обозначить все тело человека. Класс составляют так:

class имя():
    #отступы как в функциях

Также существуют подклассы, но о них в следующих уроках. Скажу лишь, что они наследуют методы родительского класса. Составляются так:

    class имя(имя_родительского_класса):
        #отступы как в функциях

Методы
Тут можно прочитать заумные учебники и понаписать много текста, но я скажу лишь одно: методы - те же функции, только в парадигме ООП. Составляются так же, как и обычные функции. Единственно, в аргументах на первом месте должно быть слово self, которое показывает принадлежность к классу. Состав:

def имя(self, argument1):
    #код

Объекты
Итак, допустим у нас есть класс с одним методом.

Код: (python) [Выделить]
class printer():
    def printme(self):
        print('I am small programm with OOP')

При запуске программы с таким кодом, ничего не происходит. И правильно. Ибо сначала мы должны объект класса, через который этот класс вызывать и будем.

Код: (python) [Выделить]
class printer():
    def printme(self):
        print('I am small programm with OOP')
obj=printer()
obj.printme()

И мы увидим надпись. Все дальнейшие методы и переменные надо также вызывать через объект. Также можно создавать и изменять переменные&методы через объект. Пример:

Код: (python) [Выделить]
class test():
    a='now'
obj=test()
print(obj.a) #увидим now
obj.a='not now'
print(obj.a) #увидим not now

TIP: Если говорить точнее, создается экземпляр класса. То есть если мы присвоим двум разным объектам один и тот же класс и изменим у одного объекта какое-либо свойство, то у другого объекта это свойство не поменяется.

(Нажмите, чтобы показать/скрыть)

Надеюсь, на этом достаточно. Пока осмысливайте все пройденное. Лично я где-то день во все это (а это еще не все) "врубался". Удачи и постигайте дзэн!


Григорий Смирнов 2014.
Grigory Smirnov 2014.
Все права на публикацию принадлежат автору и сайту dafter.ru. Копирование запрещено.
« Последнее редактирование: 02 Февраля 2014, 17:59:48 от Grigory Smirnov »

 

Страница сгенерирована за 0.05 секунд. Запросов: 25.