Views Comments Previous Next Search

Я учусь программировать на Python: переменные и функции

Прежде чем перейти к разбору первого скрипта, Антон Мухатаев вкратце рассказывает об основах Python, чтобы никто не потерялся.

Я учусь программировать на Python: переменные и функции. Изображение № 1.

Предыдущий выпуск

Я учусь программировать
на Python: введение

 

Я учусь программировать на Python: переменные и функции. Изображение № 2.

В прошлый раз я рассказал, чем хорош язык Python. Те, кто с ним знаком, наверняка со мной согласны, но есть и те, кто учат другие языки программирования — или вообще не знают ни одного языка. Специально для них я посвящу ближайшие посты разбору основ, которые помогут нам не только с Python, но и с другими языками в будущем. Тем же, кто всё это хорошо знает (а я уверен, таких среди читателей много), никогда не помешает повторить основы.

Предупреждаю: этот пост ни в коем разе не претендует на первую главу учебника по программированию, но, чтобы он послужил хорошей мотивацией, я укажу в конце ссылки, где о тех же вещах рассказывают подробнее, а главное — точнее. Кроме того, учтите, что код приводится для версий 3.0 и старше и, вероятно, не будет работать на версии 2.7.

   

Вернёмся к двум строчкам кода, которыми я закончил предыдущий пост, и разберём каждую его составляющую в том порядке, в котором интерпретатор — программа, переводящая код на машинный уровень и запускающая его, — будет считывать код.

best_website = "Look At Me"
print("Hello, {}!".format(best_website))

 best_website — это название переменной. Переменная — это занятая нами область памяти, в которой мы храним данные. При желании переменной best_website можно присвоить другое значение. Допустим, вы считаете, что Look At Me — далеко не лучший сайт, и вам больше нравится «Метрополь». Тогда вы можете написать best_website = "Metropol", и у переменной best_website будет соответствующее значение. 

В Python названия переменных могут содержать только латинские буквы и целые числа, при этом названия должны всегда начинаться с буквы. Для разделения слов внутри названия в Python принято использовать подчёркивания — так названия удобнее читать (помните, что пробелы запрещены). Сразу рекомендую по возможности не называть переменные одной или двумя буквами: из названия должно быть понятно, что хранит эта переменная.

 Знак «равно» (=) — это оператор присваивания в Python и многих других языках. Иначе говоря, переменной, указанной слева от него, присваивается некое значение, указанное справа. Обычно этот оператор отделяют от названия переменной и присваиваемого ей значения одним пробелом.

 "Look At Me" — значение, присваиваемое переменной. Кавычки указывают на то, что тип хранимых данных — string, содержащий последовательность букв и других символов. Кавычки могут быть и одинарными — ' ', но если вы хотите использовать кавычки внутри кавычек, то внешние придётся делать двойными.

 Интерпретатор определяет конец строки, понимает, что наше утверждение (statement), то есть вся текущая строка, завершено, и переходит на следующую строку.

 print() — стандартная функция вывода в Python, в её скобках задаются аргументы — значения, которые мы хотим ей дать. Функции повышают уровень абстракции языка и позволяют вам не задумываться над всеми сложными вещами, которые скрываются за каждой строчкой кода. В нашем случае функция принимает один аргумент, но некоторые функции могут и не принимать аргументов — в таком случае скобки будут пустыми, но указывать их у функции нужно обязательно.

 "Hello, {}!" — аргумент функции. Кавычки указывают на то, что у него тип данных string. Надпись должна быть вам понятна, это классика, но, возможно, с толку собьёт символ {}. О нём чуть позже.

 .format() — это метод, частный случай функции. Разницу между понятиями функции и метода я поясню в одном из следующих постов, пока лишь обращу внимание на то, что метод .format() используется в нашем случае строго на объекте типа string, с которым его разделяет точка.

 (best_website) — аргумент метода format(), который выводится на месте символа {} из пункта 6. Следовательно, если вы задали своим любимым сайтом не Look At Me, а «Метрополь», то и выведется значение, хранимое в переменной, — "Metropol".

 Интерпретатор видит, что дошёл до конца кода и прерывает работу программы.

   

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

def square(number):
    return number * number

Квадрат числа — это число, умноженное само на себя. Следовательно, чтобы возвести number в квадрат, нужно умножить number на number. Давайте разберём эти две строки.

 def — ключевое слово, сообщающее интерпретатору, что следом дано определение (definition) функции.

 square — название функции. Мы называем функции по тем же правилам, что и переменные.

 (number) — название аргумента функции. В нашем случае мы ожидаем, что это будет целое число — тип данных integer.

 : — двоеточие обозначает, что на следующей строке будет блок кода, относящийся к текущей строке. Всё содержимое функции находится внутри этого блока, при этом он отделяется от текущей строки четырьмя пробелами.

 return — оператор, который говорит о том, что функция возвращает следующее за ним утверждение. В нашем случае это аргумент, умноженный сам на себя: int * int, где * — оператор умножения. Функция может и ничего не возвращать, если это не требуется.

Чтобы воспользоваться функцией, достаточно вызвать её после двух этих строк. Так, строка print(square(9)) приведёт к тому, что программа выведет квадрат девяти — 81.

   

Последнее, что мы добавим сегодня в скрипт, — стандартную для Python функцию input(), которая позволит нам после запуска программы ввести число, квадрат которого мы хотим получить. Так как введённое нами число будет типом данных string, нужно перевести его в тип данных integer — делается это с помощью функции int(). Вот полный код нашей программы:

def square(int):
    return int * int
number = int(input("Enter an integer: "))
print("The square of {} is {}.".format(number, square(number)))

Внутри функции input() находится текст, который будет выводиться при вводе числа. Пробел после двоеточия стоит, чтобы вводимое число не следовало сразу за двоеточием. Функция input() помещается в int(), и результат присваивается переменной number, которая затем используется методом .format(), один из аргументов которого — вызов функции square().

У этого скрипта есть как минимум две проблемы. Во-первых, он перестаёт работать, если мы введём после запуска не целое число, а что-нибудь ещё — например, букву. Во-вторых, он перестаёт работать и сразу после того, как выведет ответ, — а что если мы хотим посчитать квадраты нескольких чисел? Всё это мы исправим в следующий раз, а пока постарайтесь переварить то, что мы с вами изучили (или повторили) сегодня.

Пожалуйста, если вам что-то непонятно, пишите комментарии под постом и в социальных сетях — буду рад и любым другим отзывам. Если вы более опытный в программировании человек, чем я, то с удовольствием выслушаю содержательную критику. Спасибо, и до следующего раза!

Кстати, о скрипте из первого домашнего задания, которое я дал себе в дебютном выпуске блога: он сидит и ждёт своего часа.

Читайте также:

  Полные курсы Python на Codeacademy и Treehouse*

* — платные курсы, но есть пробный период

  Переменные в Python на Learnpython.org и Python Course

  Функции в Python на Learnpython.org и Python Course

Рассказать друзьям
11 комментариевпожаловаться

Комментарии

Подписаться
Комментарии загружаются