def (функция/метод) в Python
18 sep. 16 20:22 02 aug. 17 12:56
Последовательность инструкций, возвращающая некое значение.
В функцию могут быть переданы ноль и более аргументов, которые могут использоваться в теле функции.Для возврата значения из функции используется инструкция return
. Допускается использование нескольких return
, в том числе для раннего выхода из функции.
return
(равно как и с нею, но без указания аргумента) всё равно возвращают результат — None
.Определение функции
Функцию можно определить при помощи ключевого слова def
, за которым должно следовать название функции и список её формальных параметров в круглых скобках. На следующих строках, выделенное отступом слева, должно располагаться тело функции.
Первой инструкцией в теле может быть литерал строки, который будет являться документацией для данной функции (строка документации — «docstring»).
def do_work(work, reverse=False):В примере выше объявляется функция
"""Выполняет работу.В случае удачного выполнения, возвращает True,
иначе - False.:param list work: Список для работы.
:param bool reverse: Флаг. Следует ли сделать
работу в обратном порядке
:rtype: bool
"""
do_work
, с формальными параметрами work
и reverse
. Функция задокументирована (испольузется формат описания сигнатуры reStructuredText). Кроме строки документации тело функции не содержит инструкций, тем не менее функция возвращает None
.Определение функции описывает пользовательский «объект функции» и является исполняемой инструкцией. В ходе исполнения происходит связывание имени функции в текущем локальном пространстве имён (локальной символьной таблице) с «объектом функции» — обёрткой вокруг исполняемого кода функции.
Объект функции содержит ссылку на текущее глобальное пространство имён, которое будет использовано при вызове функции. Объект функции может быть в последующем связан и с другим именем (это можно использовать для переименования функций и создания псевдонимов).Само определение функции не вызывает исполнения кода из тела функции. Код исполняется только при вызове функции.
def print_yes():Более того, ничто не мешает использовать «объект функции» как любой другой объект (например: передавать в функцию, использовать в качестве значения в словаре и т.п.).
print('yes')print_yes() # yes
print_yes_alias = print_yes
print_yes_alias() # yes
def print_yes():В ходе исполнения функции формируется новая символьная таблица с локальными переменными функции: все назначения переменных оказываются в ней. При обращении к переменной, сначала производится попытка отыскать её в локальной символьной таблице, далее в таблицах обрамляющих функций, далее в глобальной таблице, и, наконец, в таблице встроенных имён.Ввиду вышесказанного ссылаться на глобальные переменные внутри функции можно, а присвоить им значение (без использования инструкции
print('yes')def print_no():
print('no')my_functions = [print_yes, print_no]
for function in my_functions:
# Переменная function будет содержать объект
# функции. Его-то мы и вызываем в следующей строке.
function()
global
) нельзя.MY_GLOBAL = 1Аргументы, с которыми была вызвана функция, также оказываются в её локальной символьной таблице.def set_global_1():
MY_GLOBAL = 2def set_global_2():
global MY_GLOBAL
MY_GLOBAL = 2print(MY_GLOBAL) # 1
set_global_1()
print(MY_GLOBAL) # 1set_global_2()
print(MY_GLOBAL) # 2
В Питоне используется передача аргументов «по значению» (значением при этом всегда является ссылка на сам объект, но не на его значение). Однако, ввиду того, что в случаях, когда передаются изменяемые объекты, вызвавший увидит все изменения, сделанные вызываемым (например, при добавлении элементов в список), возможно лучше было бы назвать данный вид передачи «передачей по ссылке на объект».
def mutate_list(a_list):Когда функция вызывает другую функцию, для вызова создаётся новая локальная символьная таблица.
a_list.append(0)
return Truemy_list = [1]
print(my_list) # [1]mutate_list(my_list) # True
print(my_list) # [1, 0]
Вложенные определения
В Питоне можно вкладывать одно в другое не только определения функций (этим приёмом, в частости, пользуются при создании декораторов), но и классов (в случае необходимости).
def outer_func():# Определение функции внутри другой
# функции.
def inner_func():
return 'some'return inner_func()
print(outer_func()) # some
def get_my_class():
# Определение класса внутри определения
# функции.
class MyClass:my_attr = 1
return MyClass
my_class = get_my_class()
print(my_class.my_attr) # 1
Синонимы поиска: def (функция/метод), function, define, return, функции, procedure, вуа
Статьи раздела
Decorator (декоратор) | Функция, возвращающая другой объект, поддерживающий вызов. |
Generator (генератор) | Функция, возвращающая подвид итератора, генерирующий значения. |
В разделе «Callable (вызываемый)»: Аргументы вызова Параметры вызываемых объектов
У нас есть новостная группа в Telegram. Там же можно обсудить интересующие вопросы. Ссылка в самом низу страницы.
Python: Функции
Статья проплачена кошками — всемирно известными производителями котят.
Если статья вам понравилась, то можете поддержать проект.
Функции задаются через зарезервированное слово
def buttonC_wasPressed(): lcd.print(myfun(-9)) sum = add(3, 6) lcd. print(sum) pass btnC.wasPressed(buttonC_wasPressed) def myfun(x): if x > 0: return x else: return -x def add(a, b): return a + b def sayHello(): print('Hello Kitty')
Если имя глобальной переменной совпадает с именем локальной переменной в функции, то они обе сохраняют свои значения.
x = "awesome" def myfunc(): x = "fantastic" print("Cat is " + x) myfunc() print("The Cat is " + x) # The Cat is fantastic # The Cat is awesome
Если вы создаёте переменную внутри функции, но хотите, чтобы она была видна снаружи, то используйте ключевое слово global.
def myfunc(): global x x = "fantastic" print(x) myfunc() print("Cat is " + x) # fantastic # Cat is fantastic
Другой случай — вы хотите изменить глобальную переменную внутри функции.
x = "awesome" def myfunc(): global x x = "fantastic" myfunc() print("Cat is " + x)
Также распространены функции с позиционными и именованными аргументами, обязательными и необязательными.
Создадим функцию с аргументами по умолчанию.
def meow(message, times = 3): print(message * times) meow("Мяу") # МяуМяуМяу meow("Мяу", 1) # Мяу
Значения по умолчанию можно использовать только параметры, которые находятся в конце списка параметров. Нельзя, чтобы параметр со значением по умолчанию предшествовал параметру без значения по умолчанию. Это связано с тем, что значения присваиваются параметрам в соответствии с их положением.
Также можно использовать именованные параметры.
def someFunc(a, b = 1, c = 10): print(a + b + c) someFunc(3) # 14: 3 + 1 + 10 someFunc(1, 2) # 13: 1 + 2 + 10 someFunc(1, c = 3) # 5: 1 + 1 + 3 someFunc(4, c = 5, b = 3) # 12: 4 + 3 + 5
Функция имеет один параметр без значения по умолчанию, за которым следуют два параметра со значениями по умолчанию. При первом вызове параметр a получает значение 3, остальные параметры получают своё значение по умолчанию. При втором вызове переменная a получает значение 1 в силу позиции аргумента, b получает значение 2. Третий аргумент не указан, поэтому используется значение по умолчанию. Остальные примеры проходят по такому же сценарию.
Функция может принимать произвольное количество аргументов.
Если функция принимает переменное количество позиционных аргументов, тогда перед именем ставится *. Если функция принимает произвольное число именованных аргументов, тогда перед именем ставится **.
Оператор return используется для возврата из функции. При этом можно также вернуть некоторое значение из функции. Примеры были выше.
Оператор return без указания возвращаемого значения эквивалентен выражению return None. None – это специальный тип данных в Python, обозначающий ничего. К примеру, если значение переменной установлено в None, это означает, что ей не присвоено никакого значения. Каждая функция содержит в неявной форме оператор return None
Оператор pass используется в Python для обозначения пустого блока команд.
Анонимные функции могут содержать лишь одно выражение. Анонимные функции создаются с помощью ключевого слова lambda, аргументов, двоеточия и выражением, и ей не требуется инструкция return.
Синтаксис:
lambda args: expression
Пример сложения двух чисел при помощи лямбды-функции.
sumLambda = lambda x, y: x + y result = sumLambda(3, 6) # 9 print(result)
Смотри также пример с фильтрацией в списках.
Реклама
Python 3 Примечания[ ГЛАВНАЯ | ЛИНГ 1330/2330] | Пользовательские функции<< Предыдущее примечание Следующее примечание >> | |||||||||||||||||||||||||||||||||
На этой странице: def, return, строки документации, help(), функции, возвращающие значение, и функции void.Функции: основыДавайте разберемся с алгеброй старой школы. Вы выучили «функции» примерно так:f(x) = x 2 + 1 В Python определение функции работает следующим образом. def — это ключевое слово для определения функции. За именем функции следует параметр(ы) в (). Двоеточие : сигнализирует о начале тела функции, отмеченного отступом. Внутри тела функции оператор return определяет возвращаемое значение. После завершения определения функции вызов функции с аргументом возвращает значение.
Несколько параметров, строка документацииНиже приведена немного более сложная функция. Она принимает два аргумента, имеет условное выражение в теле функции и начинается со строки:
Функции: Возвращение против ПустотыВы можете подумать: «Подождите минутку, я не видел ни одного оператора возврата в учебнике по определению функций». Вы правы — функция get_legal(), определенная Эдом, не включала никаких операторов возврата, а только набор функций печати. В Python можно составить функцию без оператора возврата. Такие функции называются void и возвращают None, специальный объект Python для «ничего». Вот пример функции void:
|
Ключевое слово Python def — GeeksforGeeks
Ключевое слово Python def используется для определения функции, оно помещается перед именем функции, которое предоставляется пользователем для создания определяемой пользователем функции. В Python функция — это логическая единица кода, содержащая последовательность операторов с отступом под именем, заданным с помощью ключевого слова « def ». В Python ключевое слово def является наиболее часто используемым ключевым словом.
Синтаксис определения Python
по умолчанию имя_функции: операторы определения функции...
Использование ключевого слова def:
- В случае классов ключевое слово def используется для определения методов класса.
- Ключевое слово def также требуется для определения специальной функции-члена класса, такой как __init__().
Возможное практическое применение заключается в том, что он обеспечивает возможность повторного использования кода, вместо того, чтобы писать фрагмент кода снова и снова, мы можем определить функцию и написать код внутри функции с помощью по умолчанию ключевое слово. Это будет более понятно на иллюстрированном примере, приведенном ниже. Возможно, может быть много применений def в зависимости от вариантов использования.
Создание функции определения без аргументов
В этом примере мы создали определяемую пользователем функцию с использованием ключевого слова def. Функция просто печатает Hello в качестве вывода.
Python3
def python_def_keyword(): печать ( "Привет" ) python_def_keyword() | 9001 4
Вывод:
Привет
Создать функцию определения, чтобы найти вычитание двух чисел
В этом примере мы создали определяемую пользователем функцию, используя ключевое слово def. Имя функции — python_def_subNumbers(). Вычисляет разницу между двумя числами.
Python3
def python_def_subNumbers(x, y): возврат (x - y)
a = 90 b = 50
результат = 9 0261 |
Выход:
вычитание 90 и 50 = 40
Создание функции определения с первыми 10 простыми числами
В этом примере мы создали определяемую пользователем функцию, используя ключевое слово def. Программа определяет функцию с именем python_def_prime() с использованием ключевого слова def. Функция принимает единственный параметр n, который указывает количество простых чисел, которые нужно вывести.
Python3
def python_def_prime(n): количество = 0 , в то время как count < n: для d в диапазоне ( 2 , x, 1 ): если x % d 902 60 = = 0 : x + = 1 еще : печать (x) x 9 0260 + = 1 счет + = 1
n = 10
print ( "Первые 10 простых чисел: " ) python_def_prime(n) |
Вывод:
Первые 10 простых чисел: 2 3 5 7 11 13 17 19 23 27
Создание функции для нахождения факториала числа
В этом примере мы создали пользовательскую функцию, используя ключевое слово def. Программа определяет функцию с именем python_def_factorial() , используя ключевое слово def. Функция принимает единственный параметр n, представляющий число, факториал которого необходимо вычислить.
Python3
def python_def_factorial(n): если n = = 1 : 90 260 возврат n еще : возврат n * python_def_factorial(n - 1 )
число = 6 90 011 если число < 0 : печатать ( "К сожалению, факториала для отрицательных чисел не существует" ) elif num = = 0 : print ( "Факториал 0 равен 1" ) else : 90 260 print ( "Факториал" , число, "is" , python_def_factorial(num)) |
Вывод:
Факториал 6 равен 72090 019 Пример ключевого слова Python def с *args
Это программа Python, которая определяет функция под названием python_def_keyword() с использованием ключевого слова def. Функция использует специальный параметр *args , , который позволяет функции принимать произвольное количество аргументов. Внутри функции цикл for используется для перебора аргументов, переданных функции. Цикл перебирает переменную arg, которая по очереди представляет каждый аргумент, и выводит ее на консоль с помощью функции print() .
Python3
def python_def_keyword( * аргументы): для аргумент 90 261 |
Вывод:
1 2 3 яблоко банан вишня дата Истинный ЛОЖЬ Истинный ЛОЖЬ True
Пример ключевого слова Python def с **kwargs
Это программа на Python, которая определяет функцию с именем python_def_keyword() с использованием ключевого слова def. Функция использует специальный параметр **kwargs , который позволяет функции принимать произвольное количество аргументов ключевого слова.
Внутри функции цикл for используется для перебора пар ключ-значение, переданных в функцию. Цикл перебирает словарь kwargs , используя метод items(), который возвращает последовательность кортежей (ключ, значение). Для каждого кортежа цикл распаковывает переменные ключа и значения и выводит их на консоль с помощью команды 9.0218 функция print() и форматирование строки.
Python3
def python_def_keyword( * * kwargs): 9 0261 = 38000000 ) python_def_keyword(color = 'синий' , 9 0261 |
Вывод:
имя: Алиса возраст: 25 город: Нью-Йорк страна: Канада язык: французский население: 38000000 цвет синий форма: квадрат размер: большой материал: дерево
Передача функции в качестве аргумента
Это программа на Python, которая определяет функцию с именем apply_function() с использованием ключевого слова def. Функция принимает два параметра: func, который является функцией, и arg, который является аргументом, который должен быть передан в func. Затем функция возвращает результат вызова func с аргументом. Программа также определяет другую функцию, называемую квадратом, используя ключевое слово def. Эта функция принимает единственный параметр x и возвращает 90 218 квадратов 90 219 x.
После определения этих функций программа вызывает функцию apply_function с квадратом в качестве аргумента func и 5 в качестве аргумента arg. Это означает, что квадратная функция будет вызываться с 5 в качестве аргумента, и ее результат будет возвращен функцией apply_function() .
Python3
def apply_function(func, arg): return функция(аргумент)
по умолч. квадрат(x): возврат x * * 9 0260 2
результат = apply_function(квадрат, 5 (результат) Пример ключевого слова Python с классомВ этом примере мы определяем python_def_keyword с методом __init__() , который принимает два аргумента (имя и возраст) и инициализирует две переменные экземпляра (собственное имя и самостоятельный возраст). Оставить комментарий
|