Функции python: 7 примеров. базовые, встроенные и пользовательские функции

range

Чтобы повторить действия пишут циклы.

Операторы внутри цикла (что нужно повторить) пишут с отступом.

4 раза напечатать Hello:

for переменная in последовательность — это оператор python, который перебирает по 1 элементу из последовательности и записывает ее в переменную.

x — имя переменной. Может быть любое.

range — функция python. Она возвращает последовательность целых чисел.

Не забудьте поставить двоеточие :

range(4) вернет последовательность из 0, 1, 2, 3. То есть 4 целых числа, от 0 (включая) до 4 (не включая).

Чтобы напечатать эти числа в 1 строку, будем ставить после каждого числа пробел. В функции print укажем end=’ ‘ (в конце ставить пробел, а не символ новой строки, как обычно).

Функция range(3, 10) вернет последовательность чисел от 3 (включая) до 10 (НЕ включая):

Третий аргумент функции range — на сколько увеличить число:
Функция range(3, 10, 2) вернет последовательность чисел от 3 (включая) до 10 (НЕ включая) +2 каждый раз:

Лямбда-функции Python

Другим способом определения функций в Python является использование ключевого слова . Этот метод определения функций в основном используется для создания ; функций, у которых нет имени, отсюда и слово . По синтаксису могут иметь несколько аргументов, но ограничены только одним . Давайте переопределим нашу функцию с помощью ключевого слова :

lambda value1, value2: value1 + value2

Несколько вещей, которые следует отметить:

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

Вы найдете лямбда-функции полезными, когда вам нужно передать функцию в качестве аргумента в . Функции более высокого порядка-это функции, которые работают с другими функциями, либо принимая функцию в качестве аргумента, либо возвращая функцию. Примером функции более высокого порядка является функция . В Python функция map принимает в качестве аргументов функцию и список. Это один из случаев, когда нам не нужно, чтобы наша функция была повторно использована, следовательно, необходима функция . Давайте используем функции и для возврата половины каждого числа в списке:

#editor
list_of_numbers = 
halved_list = list(map(lambda value: value/2 , list_of_numbers)) 

print(halved_list)
#console
halved list: 

Чтобы иметь возможность повторно использовать лямбда-функцию, мы можем назначить ее переменной:

#editor
sum = lambda value1, value2: value1 + value2
result = sum(7, 9)

print(result)
#console
16

Вызов функции

В определении функции указывается имя функции, её параметры, а также тело функции (реализация требуемой функциональности).

Как только базовая структура функции создана, вы можете выполнить ее, вызвав ее из другой функции или непосредственно из Python prompt (командной оболочки). Ниже приведен пример вызова функции printme():

# Определение функции
def printme( str ):
    """This prints a passed string into this function"""
    print(str)
    return

# Теперь вы можете вызвать функцию printme
printme("I'm first call to user defined function!")
printme("Again second call to the same function")

Результат:

I'm first call to user defined function!
Again second call to the same function

Аргументы функции

Вы можете вызвать функцию, используя следующие типы аргументов:

  • Обязательные аргументы
  • Ключевые аргументы
  • Аргументы по умолчанию
  • Аргументы переменной длины

Библиотека math

Для проведения вычислений с действительными числами язык Python содержит много дополнительных функций, собранных в библиотеку, которая называется math. Для использования этих функций в начале программы необходимо подключить библиотеку, что делается командой

import math           # подключение модуля библиотеки

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

имя_модуля.имя_функции

Например, пусть мы хотим вызвать функцию вычисления Синус угла, задаваемого в радианахimport math y = sin(5)         # ошибка не подключен модуль mathx = math.sin(5)    # записываем имя модуля и через точку имя функции

Можно подключать не весь модуль, а какую-то его часть. Например, программист хочет использовать только одну функцию из математической библиотеки math. Если он подключит всю библиотеку, то будет добавлено более 40 функций, которые будут занимать место. Чтобы добавить в проект какую-то часть, используют ключевое слово from

from <имя подключаемого модуля> import <название функции>

Например.

from math import sin       # подключена только одна функция siny = sin(5)                 # операция выполненаx = cos(5)               # ошибка функция cos не подключена

Ниже приведен список основных функций модуля math. Некоторые из перечисленных функций (int, round, abs) являются стандартными и не требуют подключения модуля math для использования.

Использование встроенной функции с несколькими итерируемыми объектами

Помимо функций и определяемых нами функций, мы можем использовать вместе с встроенные функции Python. Для применения функции с несколькими итерируемыми объектами мы передаем имя другого итерируемого объекта после первого. Рассмотрим в качестве примера , которая принимает два числа и возводит базовое число в указанную степень.

Здесь у нас списки целых чисел, которые мы хотим использовать с :

Затем мы передадим в качестве функции в и укажем два списка в качестве итерируемых объектов:

применит функцию к тому же элементу в каждом списке для возведения в степень. Поэтому в результатах мы увидим , , и т. д.:

Если мы передадим итерируемый объект, который будет длиннее другого итерируемого объекта, остановит расчеты после достижения конца наиболее короткого объекта. В следующей программе мы дополним тремя дополнительными числами:

В расчетах программы ничего не изменится, и результат будет точно таким же:

Мы использовали функцию со встроенной функцией Python и посмотрели на одновременную обработку нескольких итерируемых объектов. Мы увидели, что продолжит обрабатывать несколько итерируемых объектов, пока не достигнет конца объекта, содержащего меньше всего элементов.

Reduce

Функция полезна для “обобщения”, получения общей картины набора данных. Например, если необходимо вычислить сумму всех оценок, то прекрасно с этим справится:

sum_scores = reduce((lambda x, y: x + y), scores)# sum_scores = 32

Это гораздо проще, чем писать цикл

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

Все вышесказанное поможет основательно начать знакомство с функциональным программированием в Python.

  • 3 инструмента для отслеживания и визуализации выполнения кода на Python
  • Как оптимизировать набор текста с помощью Python
  • Как создать простого командного бота в Python

Читайте нас в Telegram, VK и

Что такое функция?

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

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

Синтаксис функции


def name_functions(parameters):

"""

Описание функции, желательно всегда писать.
Что бы спустя время, вы могли понять, что делает эта функция

"""

    pass

Выше я привел пример определения функции, оно состоит из следующих элементов.

Ключевое слово def — определяет начало функции
Затем следует указать название функции (обратите внимание, нельзя называть функции зарезервированными именами Python)
Далее после название идут круглые скобки, в них мы передаем (аргументы функции). Они необязательны
Знак двоеточия, как и в циклах и в условиях, означает конец заголовка
Внутри функции желательно указать комментарии, что бы мы всегда знали, что делает эта функция
Далее 4 отступа, и создаем тело функции
return — необязательный оператор, который возвращает значения из функции

Пример функции


def hello(name):

"""

Эта функция приветствия.
Аргумент name передается в качестве параметра

"""

    print("Привет, "+ name + " Доброе утро")

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

Как вызвать функцию?

Мы определили функцию, дали ей название hello. Вызывать эту функцию можно по разному, например из другой функции, или даже из другой программы. Сейчас вызовем эту функцию, просто введя имя этой функции, и ее параметр.


hello("Тимур")
Результат:

Привет, Тимур Доброе утро

Уловили суть? Мы в самом начале создали функции, в парметр функции передаем переменную name, и в print выводим переданный параметр. Затем, мы в любом месте нашей программы, можем написать имя нашей функции, передать ей параметр, и она выведет наше приветствие.  Откройте свой Pycharm, и введите приведенный ниже листинг кода, и вы увидите результат.


def hello(name):

""" Эта функция приветствия.

Аргумент name передается в качестве параметра """

    print("Привет, "+ name + " Доброе утро")

hello("Тимур")
Результат:

Привет, Тимур Доброе утро

return — оператор возврата

Оператор return возвращает значение, если отсутствует значение, или отсутствует сам оператор return — мы получаем None объект. None объект — это пустой объект, то есть нечего ему возвращать. Рассмотрим пример:


def value(number):

"""

Возвращаем значение введенного числа

"""

    if number >= 0:

        return number

    else:

        return -number

print(value(2))

print(value(-4))

Результат:

2

4

Время жизни переменных, и область работы переменных

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

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


def testfunc():

    x = 10

    print("Значение внутри функции: ", x)

x = 20

testfunc()

print("Значение переменной за пределами функции: ", x)

Результат:

Значение внутри функции: 10

Значение переменной за пределами функции: 20

На примере выше, мы видим что изначальное значение переменной x равно 10, при вызове функции мы присвоили переменной х значение 20. В результате, как мы видим одна и та же переменная выводит разное значение. Это объясняется тем, что переменная внутри функции, это локальная переменная для функции, соответственно внешняя переменная, даже если имеет такое же название, будет другой, так как области действия этих переменных разное.

Программирование иногда сильно утомляет, тяжело всегда думать головой, поэтому не забывайте время от времени немного расслабляться, посмотрите лучшие моменты из ЧБД.

Аргументы

Позиционные

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

Значения в позиционных аргументах подставляются согласно позиции имён аргументов:

Именованные

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

При вызове соответствие будет определяться по именам, а не по позициям аргументов.

Необязательные параметры (параметры по умолчанию)

Python позволяет делать отдельные параметры функции необязательными. Если при вызове значение такого аргумента не передается, то ему будет присвоено значение по умолчанию.

Аргументы переменной длины (args, kwargs)

Когда заранее неизвестно, сколько конкретно аргументов будет передано в функцию, мы пользуемся аргументами переменной длины. Звёздочка «*» перед именем параметра сообщает интерпретатору о том, что количество позиционных аргументов будет переменным:

Переменная составляет кортеж из переданных в функцию аргументов.

Функции в питоне могут также принимать и переменное количество именованных аргументов. В этом случае перед названием параметра ставится «»:

Здесь kwargs уже заключает аргументы не в кортеж, а в словарь.

Если объект неизменяемый, то он передаётся в функцию по значению. Неизменяемые объекты это:

  • Числовые типы (int, float, complex).
  • Строки (str).
  • Кортежи (tuple).

В Python изменяемые объекты это:

  • Списки (list).
  • Множества (set).
  • Словари (dict).

Будьте внимательны при передаче изменяемых объектов. Одна из частых проблем новичков.

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

Функция в Python

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

Напишем функцию, которая вычисляет квадрат своего аргумента и выводит на экран:

>>> def square(number):
…     «»»Вычисление квадрата числа»»»
…     (number 2)

>>> square(5)25
>>> square(124.45)15487.802500000002

Определение функции начинается с ключевого слова def, за которым следует имя функции — square. Имя функции, как и имена переменных рекомендуется писать с букв нижнего регистра, а в именах, состоящих из нескольких слов, составляющие должны разделяться символами подчеркивания. Далее в круглых скобках записываются параметры (аргументы) функции, разделенные запятыми. Функция square имеет только один аргумент с именем number — значение, возводимое в квадрат. В случае отсутствия параметров у функции пустые круглые скобки обязательны. В конце строки за параметрами всегда ставится двоеточие ().

После двоеточия новая строка должна идти с отступом (4 пробела). Все строки с отступом образуют тело или блок функции. В «Руководстве по стилю кода Python» указано, что первой строкой блока функции должна быть doc-строка, кратко поясняющая назначение функции: «»»Вычисление квадрата числа»»». Сам код в теле функции состоит всего из одной строки (number 2).

Команда squre(5) вызывает функции square() и передает ей значение аргумента, для выполнения команды . Функция возводит число в квадрат и выводит на экран. 

Рекурсивная функция Python

Когда функция вызывает сама себя, она называется рекурсивной функцией. В программировании этот сценарий называется рекурсией.

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

def fibonacci_numbers_at_index(count):
    if count <= 1:
        return count
    else:
        return fibonacci_numbers_at_index(count - 1) + fibonacci_numbers_at_index(count - 2)


count = 5
i = 1
while i <= count:
    print(fibonacci_numbers_at_index(i))
    i += 1

Полезно знать о рекурсии, но в большинстве случаев при программировании это не нужно. То же самое можно сделать с помощью цикла for или while.

Условный оператор if

Оператор if позволяет изменить порядок выполнения операторов в зависимости от истинности или ложности некоторого условия. Формат оператора может быть записан в двух формах: полной и неполной форме.

if  условие:    # блок if    <операторы>else:    # блок else    <операторы>

Блок инструкций if будет выполнен, если условие истинно. Если условие ложно, будет выполнен блок инструкций else.

В условном операторе  может отсутствовать слово else и последующий блок. Такая инструкция называется неполным ветвлением.

Пример 5.  Записать следующее   выражение  на языке Python.Если a  >  0,  то  b  =  1,   иначе  a  =  0. 

print («Введите значение a: «) a = int(input())if a > :     b = 1       else:     b = print(«b = «, b)

Условный оператор  elif

if условие_1:   # блок if   <операторы>elif условие_2:   # первый блок elif   <операторы>elif условие_3:   <операторы>...else   # блок else   <операторы>   

Ключевое слово elifрасшифровывается, как else + if. Это конструкция позволяет  реализовать алгоритм  выбора   необходимого варианта из нескольких альтернативных вариантов.  Оператор elif позволяет упростить код. Сделать его легче читаемым и позволяет избежать написание несколько условий  if.

Когда исполняется инструкция if-elif-else, в первую очередь  проверяется условие_1.  Если условие истинно, тогда исполняется блок инструкций if .  Следующие условия и операторы пропускаются, и управление переходит к оператору  за  условным оператором if-elif-else.

Если условие_1 оказывается ложным, тогда управление переходит к следующему условию elif,  и проверяется условие_2.  Если оно истинно, тогда исполняются инструкции внутри первого блока elif. Последующие инструкции внутри этого блока пропускаются. Этот процесс повторяется, пока не находится условие elif, которое оказывается истинным. Если такого нет, тогда исполняется блок операторов else

 Пример.  

x = int(input())
y = int(input())if x > and y > print("Первая четверть")elif x > and y < print("Четвертая четверть")elif y > print("Вторая четверть")else: print("Третья четверть")

Разные строковые функции

isalnum() Функция isalnum() Python возвращает True, если она состоит только из буквенно-цифровых символов.
isalpha() Функция String isalpha() возвращает True, если все символы в строке являются алфавитными, в противном случае – False.
isdecimal() Функция String isdecimal() возвращает True, если все символы в строке являются десятичными символами, в противном случае – False.
isdigit() Функция String isdigit() возвращает True, если все символы в строке являются цифрами, в противном случае – False.
isidentifier() Функция String isidentifier() возвращает True, если строка является допустимым идентификатором в соответствии с определением языка Python.
islower() Python String islower() возвращает True, если все символы в регистре в строке строчные и есть хотя бы один регистр, в противном случае он возвращает False.
isnumeric() Функция String isnumeric() возвращает True, если все символы в строке числовые, в противном случае – False. Если строка пуста, эта функция возвращает False.
isprintable() Функция String isprintable() возвращает True, если все символы в строке печатаются или строка пуста, в противном случае – False.
isspace() Функция Python isspace() возвращает True, если в строке есть только пробельные символы, в противном случае она возвращает False.
список() Python String istitle() возвращает True, если строка заключена в заголовок и не пуста, в противном случае возвращается False.
isupper() Функция String isupper() возвращает True, если все символы в регистре находятся в верхнем регистре.
rjust(), ljust() Служебные функции для создания новой строки указанной длины из исходной строки с выравниванием по правому и левому краю.
swapcase() Функция String swapcase() возвращает новую строку с символами верхнего регистра, преобразованными в нижний регистр и наоборот.
partition() Функция String partition() разбивает строку на основе разделителя на кортеж из трех строк.
splitlines() Функция String splitlines() возвращает список строк в строке.
title() Функция String title() возвращает версию строки в заголовке.
zfill() Функция String zfill (width) возвращает новую строку указанной ширины. Строка заполняется 0 с левой стороны для создания указанной ширины.
Рейтинг
( Пока оценок нет )
Editor
Editor/ автор статьи

Давно интересуюсь темой. Мне нравится писать о том, в чём разбираюсь.

Понравилась статья? Поделиться с друзьями:
Люкс-хост
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: