Функция представляет собой блок, организованный повторно используемый код, который используется для выполнения одного, связанного действия. Функции обеспечивают лучшую модульность для применения и высокую степень кода повторного использования.
Как вы уже знаете, Python предоставляет множество встроенных функций, таких как print() и т.д., но вы также можете создавать свои собственные функции. Эти функции называются определяемые пользователем функции.
Вы можете определить функции, чтобы обеспечить требуемую функциональность. Вот простые правила, чтобы определить функцию в Python.
def functionname( parameters ): "function_docstring" function_suite return [expression]
По умолчанию параметры имеют позиционное поведение, и вы должны информировать их в том же порядке, в чем они были определены.
Следующая функция принимает строку в качестве входного параметра и выводит его на стандартный экран.
def printme( str ): "Это печатает переданную строку в эту функцию" print (str) return
Определение функции дает ему имя, определяет параметры, которые должны быть включены в функции и структуры блоков кода.
После того, как основная структура функции завершена, вы можете выполнить его, вызвав его из другой функции или непосредственно из командной строки Python. Ниже приведен пример для вызова функции PrintMe():
#!/usr/bin/python3 # FЗдесь вызов функции def printme( str ): "Это печатает переданную строку в эту функцию" print (str) return # Теперь вы можете вызвать функцию printme printme("Это первый вызов определяемой пользователем функции!") printme("Опять второй вызов той же функции")
Когда этот код выполниться, он выведет следующий результат:
Это первый вызов определяемой пользователем функции! Опять второй вызов той же функции
Все параметры (аргументы) в языке Python передаются по ссылке. Это означает, что если вы измените то, к чему относится параметр в пределах функции, изменение также отражается в вызывающей функции. Например:
#!/usr/bin/python3 # Здесь определение функции def changeme( mylist ): "Это изменяет переданный список в эту функцию" print ("Значения внутри функции перед изменением: ", mylist) mylist[2]=31 print ("Значение внутри функции после изменения: ", mylist) return # Теперь можно вызвать функцию changeme mylist = [10,20,30] changeme( mylist ) print ("Значения вне функции: ", mylist)
Здесь мы поддерживаем обращение переданного объекта и добавление значения в одном объекте. Таким образом, это будет производить следующий результат —
Значения внутри функции перед изменением: [10, 20, 30] Значение внутри функции после изменения: [10, 20, 31] Значения вне функции: [10, 20, 31]
Существует еще один пример, в котором аргумент передается по ссылке, а ссылка перезаписи внутри вызываемой функции.
#!/usr/bin/python3 # Здесь определение функции def changeme( mylist ): "Это изменяет список в этой функции" mylist = [1,2,3,4] # This would new reference in mylist print ("Значения внутри функции: ", mylist) return # Теперь можно вызвать функцию changeme mylist = [10,20,30] changeme( mylist ) print ("Значения вне функции: ", mylist)
Параметр MyList является локальным по отношению к функции ChangeMe. Изменение MyList внутри функции не влияет на MyList. Функция ничего не выполняет, и, наконец, это произведет следующий результат:
Значения внутри функции: [1, 2, 3, 4] Значения вне функции: [10, 20, 30]
Вы можете вызвать функцию с помощью следующих типов формальных аргументов:
Обязательными аргументами являются аргументы, передаваемые функции в правильном позиционном порядке. Здесь количество аргументов в вызове функции должны совпадать с определением функции.
Для вызова функции PrintMe(), вам обязательно нужно передать один аргумент, в противном случае она выдаст синтаксическую ошибку следующим образом:
#!/usr/bin/python3 # Здесь определение функции def printme( str ): "Это печатает переданную строку в эту функцию" print (str) return # Теперь вы можете вызвать функцию printme printme()
Когда этот код выполниться, он выведет следующий результат:
Traceback (most recent call last): File "test.py", line 11, in <module> printme(); TypeError: printme() takes exactly 1 argument (0 given)
Аргументы ключевых слов связаны с вызовами функций. Когда вы используете аргументы ключевого слова в вызове функции, вызывающая сторона идентифицирует аргументы по имени параметра.
Это позволяет пропускать аргументы или размещать их не по порядку, поскольку интерпретатор Python может использовать предоставленные ключевые слова для сопоставления значений с параметрами. Вы также можете сделать ключевые слова для функции printme () следующими способами:
#!/usr/bin/python3 # Здесь определение функции def printme( str ): "Это печатает переданную строку в эту функцию" print (str) return # Теперь вы можете вызвать функцию printme printme( str = "Моя строка")
Когда этот код выполниться, он выведет следующий результат:
Моя строка
Следующий пример дает более четкую картину. Обратите внимание, что порядок параметров не имеет значения.
#!/usr/bin/python3 # Здесь определение функции def printinfo( name, age ): "Это печатает переданную информацию в эту функцию" print ("Имя: ", name) print ("Возраст ", age) return # Теперь можно вызвать функцию printinfo printinfo( age = 31, name = "AndreyEx" )
Когда этот код выполниться, он выведет следующий результат:
Имя: AndreyEx Возраст 31
Аргументы по умолчанию является аргументами, которые принимают значение по умолчанию, если значение не предусмотрено в вызове функции для этого аргумента. Следующий пример дает представление о аргументах по умолчанию, он печатает по умолчанию возраст, если он не прошел:
#!/usr/bin/python3 # Здесь определение функции def printinfo( name, age = 35 ): "Это печатает переданную информацию в эту функцию" print ("Name: ", name) print ("Age ", age) return # Теперь можно вызвать функцию printinfo printinfo( age = 31, name = "AndreyEx" ) printinfo( name = "AndreyEx" )
Когда этот код выполниться, он выведет следующий результат:
Имя: AndreyEx Возраст 31 Имя: AndreyEx Возраст 35
Вам может понадобиться обработать функцию для большего числа аргументов, чем вы указали при определении функции. Эти аргументы называются аргументы переменной длины и не названы в определении функции, в отличие от необходимости и аргументов по умолчанию.
Синтаксис для функции с не-ключевыми словами переменными аргументами приводятся ниже:
def functionname([formal_args,] *var_args_tuple ): "function_docstring" function_suite return [expression]
Звездочкой (*) ставится перед именем переменной, которая содержит значения всех nonkeyword переменных аргументов. Этот кортеж остается пустым, если никакие дополнительные аргументы не указаны при вызове функции. Ниже приведен простой пример:
#!/usr/bin/python3 # Здесь определение функции def printinfo( arg1, *vartuple ): "Эта печать переменные аргументы" print ("Вывод: ") print (arg1) for var in vartuple: print (var) return # Теперь можно вызвать функцию printinfo printinfo( 10 ) printinfo( 70, 60, 31 )
Когда этот код выполниться, он выведет следующий результат:
Вывод: 10 Вывод: 70 60 31
Эти функции называются анонимными, потому что они не объявлены стандартным способом, используя ключевого слова def. Вы можете использовать ключевое слово lambda, чтобы создать небольшие анонимные функции.
Синтаксис Lambda — функций содержит только один оператор, который выглядит следующим образом:
lambda [arg1 [,arg2,.....argn]]:expression
Ниже приведен пример, чтобы показать, как работает форма функции Lambda:
#!/usr/bin/python3 # Здесь определение функции sum = lambda arg1, arg2: arg1 + arg2 # Теперь вы можете вызвать sum как функцию print ("Общая стоимость : ", sum( 10, 20 )) print ("Общая стоимость : ", sum( 20, 20 ))
Когда этот код выполниться, он выведет следующий результат:
Общая стоимость : 30 VОбщая стоимость : 40
Заявление return [выражение] выводит из функции, необязательно передавая обратно выражение для вызывающего. Ответное заявление без аргументов такое же, как возвратный none.
Все примеры, приведенные ниже, не возвращает значение. Вы можете вернуть значение из функции следующим образом:
#!/usr/bin/python3 # Здесь определение функции def sum( arg1, arg2 ): # Добавьте оба параметра и верните их." total = arg1 + arg2 print ("Внутри функции : ", total) return total # Теперь можно вызвать функцию sum total = sum( 10, 20 ) print ("Вне функции : ", total )
Когда этот код выполниться, он выведет следующий результат:
Внутри функции : 30 Вне функции : 30
Все переменные в программе не могут быть доступны во всех местах, в этой программе. Это зависит от того, где вы объявили переменную.
Область видимости переменной определяет часть программы, где вы можете получить доступ к конкретному идентификатору. Есть две основные области видимости переменных в Python:
Переменные, определенные внутри тела функции имеют локальную область видимости, а также те, которые определены вне имеют глобальный масштаб.
Это означает, что локальные переменные могут быть доступны только внутри функции, в которой они объявлены, в то время как глобальные переменные могут быть доступны по всему телу программы всеми функциями. При вызове функции, переменные, объявленные внутри него вводятся в сферу. Ниже приведен простой пример —
#!/usr/bin/python3 total = 0 # Это глобальная переменная. # Здесь определение функции def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2; # Здесь локальная переменная как глобальная. print ("Итого локально внутри функции : ", total) return total # Теперь можно вызвать функцию sum sum( 10, 20 ) print ("Итого глобально вне функции : ", total )
Когда этот код выполниться, он выведет следующий результат:
Итого локально внутри функции : 30 Итого глобально вне функции : 0
kak nachat rabotat s python3.8.6 iz ubuntu,chto nabirat v terminale?
Наберите Python