Декораторы
Содержание:
- Область действия переменной
- Required arguments
- Параметры функции
- Пишем универсальный шаблон для декоратора
- Docstrings
- The return Statement
- Python Tutorial
- Кавычки
- Global vs. Local variables
- Атрибуты и методы класса
- Основные встроенные функции в Python
- Объекты первого класса
- Функции python 3 — работа с параметрами
- Global vs. Local variables
- Логические операторы
- Как начать программировать на Python
- Еще несколько примеров
- Функции Python 3 — возврат значения
- Variable-length Arguments
- Библиотека math
Область действия переменной
Переменные| определенные внутри тела , имеют локальную область . Это означает, что доступ к ним возможен только внутри определения функции:
#editor def example_function(): word = "inevitable" return word print(word)
#console NameError: name 'word' is not defined
Обратите внимание, что наш оператор находится за пределами нашего определения функции. Поскольку это выходит за рамки нашего тела , переменная недоступна для операторов или выражений, которые находятся вне нашего определения функции
Чтобы сделать нашу переменную доступной для каждого оператора и выражения в нашем коде, мы должны объявить ее вне определения функции. Таким образом, он глобально ограничен :
#editor word = "inevitable" def example_function(): return word print(word)
#console inevitable
Required arguments
Required arguments are the arguments passed to a function in correct positional order. Here, the number of arguments in the function call should match exactly with the function definition.
To call the function printme(), you definitely need to pass one argument, otherwise it gives a syntax error as follows −
#!/usr/bin/python # Function definition is here def printme( str ): "This prints a passed string into this function" print str return; # Now you can call printme function printme()
When the above code is executed, it produces the following result −
Traceback (most recent call last): File "test.py", line 11, in <module> printme(); TypeError: printme() takes exactly 1 argument (0 given)
Параметры функции
Только что вы написали простую функцию без параметров: круглые скобки остались пустыми. Теперь попробуйте создать функцию с параметрами.
Параметр – это именованный объект, определяющий аргумент, который может принять функция.
Попробуйте написать простую программу с параметрами x, y и z. Создайте функцию, которая складывает эти параметры и выводит результат. Вызовите функцию и передайте ей числа. Создайте файл add_numbers.py и добавьте в него код:
Параметр x имеет значение 1, y – 2, а z – 3.
Значения присваиваются каждому параметру по порядку.
Программа выполняет следующие вычисления:
Также программа выводит значения a, b и c. Давайте запустим программу и посмотрим на результат:
Параметры – это аргументы, которые в функции определяются как переменные. При запуске метода им можно присваивать значения и передавать их функции.
Пишем универсальный шаблон для декоратора
Лично я нахожу излишним и обременительным то, что нам нужно использовать три слоя вложенных функций для определения более совершенного декоратора, который мы можем использовать с аргументами или без. Дэвид Бизли в своей книге Python Cookbook предлагает отличный способ для определения универсальных декораторов без использования трех уровней вложенных функций. Для этого используется функционал модуля . Ниже приведен пример кода, который можно использовать для определения универсальных декораторов более элегантным способом:
import functools def decorator(func=None, foo="spam"): if func is None: return functools.partial(decorator, foo=foo) @functools.wraps(func) def wrapper(*args, **kwargs): # Тут вы можете что-то сделать с `func` или `foo` pass return wrapper # Применяем декоратор без параметров @decorator def f(*args, **kwargs): pass # Применяем декоратор с параметрами @decorator(foo="buzz") def f(*args, **kwargs): pass
Давайте перепишем наш декоратор , используя этот шаблон кода.
import functools def retry(func=None, n_tries=4): if func is None: return functools.partial(retry, n_tries=n_tries) @functools.wraps(func) def wrapper(*args, **kwargs): tries = 0 while True: resp = func(*args, **kwargs) if resp.status_code == 500 or resp.status_code == 404 and tries < n_tries: print(f"retrying... ({tries})") tries += 1 continue break return resp return wrapper @retry def getdata(url): resp = requests.get(url) return resp @retry(n_tries=2) def getdata_(url): resp = requests.get(url) return resp resp1 = getdata("https://httpbin.org/get/1") print("-----------------------") resp2 = getdata_("https://httpbin.org/get/1")
>>> retrying... (0) retrying... (1) retrying... (2) retrying... (3) ----------------------- retrying... (0) retrying... (1)
И так, теперь нам не нужно писать три уровня вложенных функций, функция позаботится об этом. Метод может быть использован для создания новых производящих функций, которым передаются некоторые входные параметры для инициализации. При этом будет выполнять следующий код:
def partial(func, *part_args): def wrapper(*extra_args): args = list(part_args) args.extend(extra_args) return func(*args) return wrapper
Docstrings
The first string after the function header is called the docstring and is short for documentation string. It is briefly used to explain what a function does.
Although optional, documentation is a good programming practice. Unless you can remember what you had for dinner last week, always document your code.
In the above example, we have a docstring immediately below the function header. We generally use triple quotes so that docstring can extend up to multiple lines. This string is available to us as the attribute of the function.
For example:
Try running the following into the Python shell to see the output.
To learn more about docstrings in Python, visit Python Docstrings.
The return Statement
The statement return exits a function, optionally passing back an expression to the caller. A return statement with no arguments is the same as return None.
All the above examples are not returning any value. You can return a value from a function as follows −
#!/usr/bin/python # Function definition is here def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2 print "Inside the function : ", total return total; # Now you can call sum function total = sum( 10, 20 ); print "Outside the function : ", total
When the above code is executed, it produces the following result −
Inside the function : 30 Outside the function : 30
Python Tutorial
Python HOMEPython IntroPython Get StartedPython SyntaxPython CommentsPython Variables
Python Variables
Variable Names
Assign Multiple Values
Output Variables
Global Variables
Variable Exercises
Python Data TypesPython NumbersPython CastingPython Strings
Python Strings
Slicing Strings
Modify Strings
Concatenate Strings
Format Strings
Escape Characters
String Methods
String Exercises
Python BooleansPython OperatorsPython Lists
Python Lists
Access List Items
Change List Items
Add List Items
Remove List Items
Loop Lists
List Comprehension
Sort Lists
Copy Lists
Join Lists
List Methods
List Exercises
Python Tuples
Python Tuples
Access Tuples
Update Tuples
Unpack Tuples
Loop Tuples
Join Tuples
Tuple Methods
Tuple Exercises
Python Sets
Python Sets
Access Set Items
Add Set Items
Remove Set Items
Loop Sets
Join Sets
Set Methods
Set Exercises
Python Dictionaries
Python Dictionaries
Access Items
Change Items
Add Items
Remove Items
Loop Dictionaries
Copy Dictionaries
Nested Dictionaries
Dictionary Methods
Dictionary Exercise
Python If…ElsePython While LoopsPython For LoopsPython FunctionsPython LambdaPython ArraysPython Classes/ObjectsPython InheritancePython IteratorsPython ScopePython ModulesPython DatesPython MathPython JSONPython RegExPython PIPPython Try…ExceptPython User InputPython String Formatting
Кавычки
Одинарные кавычки
Строку можно указать, используя одинарные кавычки, как например, ‘Это строка’. Любой одиночный символ в кавычках, например, ‘ю’ — это строка. Пустая строка » — это тоже строка. То есть строкой мы считаем всё, что находится внутри кавычек.
Двойные кавычки
Запись строки в одинарных кавычках это не единственный способ. Можно использовать и двойные кавычки, как например, »Это строка». Для интерпретатора разницы между записями строки в одинарных и двойных кавычках нет.
ВниманиеЕсли строка началась с двойной кавычки — значит и закончиться должна на двойной кавычке. Если внутри строки мы хотим использовать двойные кавычки, то саму строку надо делать в одинарных кавычках.
Театр »Современник»print(‘Театр »Современник»’)
Тройные кавычки
Строка, занимающая несколько строк, должна быть обрамлена тройными кавычками (» » » или »’). Например:
Global vs. Local variables
Variables that are defined inside a function body have a local scope, and those defined outside have a global scope.
This means that local variables can be accessed only inside the function in which they are declared, whereas global variables can be accessed throughout the program body by all functions. When you call a function, the variables declared inside it are brought into scope. Following is a simple example −
#!/usr/bin/python3 total = 0 # This is global variable. # Function definition is here def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2; # Here total is local variable. print ("Inside the function local total : ", total) return total # Now you can call sum function sum( 10, 20 ) print ("Outside the function global total : ", total )
When the above code is executed, it produces the following result −
Inside the function local total : 30 Outside the function global total : 0
Previous Page
Print Page
Next Page
Атрибуты и методы класса
Атрибуты класса
Характеристики объекта, называются атрибутами и записываются в внутри конструктора с помощью переменной self. Доступ к атрибутам осуществляется через переменную self.
Например, класс имеет атрибут цвет – color, он должен быть записан как
self.color
Методы класса
Методы класса создаются посредством ключевого слова def , имени метода , слова self, которое всегда указывается как первый параметр метода
def имя метода(self, передаваемые параметры): # тело метода
Пример. Создаем метод, который выводит на печать характеристики мяча
def Show(self): print("Мяч: ", self.color, self.size )
Мы определили атрибуты класса и методы. Таким образом, класс для нашего мяча будет выглядеть так:
class Balldef __init__(self, color, size): self.color = color self.size = size def Show(self): print("Мяч: ", self.color, self.size )
Основные встроенные функции в Python
Python предоставляет программисту все необходимые основные функции для работы, кроме того, используя дополнительные модули (подключая разные библиотеки), можно найти уже реализованные методы для практически любой задачи.
print() Выводит объекты на экран или в файл. Пример использования print(«output string», end=»») . Принимает аргументы:
- object — то, что нужно вывести;
- sep — разделитель, который ставиться между объектов, по умолчанию — пробел;
- end — окончание после объекта, например управляющий символ “
”; - file — атрибут, позволяющий передать объект в файл (по умолчанию выводит на экран);
len() Возвращает количество элементов, содержащихся в кортеже, словаре или списке.
str() Преобразует переданный в качестве аргумента объект в строку.
int() Преобразует объект в целое число. Если передать в качестве аргумента строку, вызовется ошибка, целое число выведется без изменений, а у числа с плавающей точкой отбросится дробная часть.
range() Возвращает диапазон значений, в основном используется в условии цикла for.
bool() Приводит объект в логическому типу. Например, 0 — False , а 1 — True .
sum() Возвращает сумму переданных элементов.
min() и max() Возвращают минимальный и максимальный элемент из переданных.
type() Возвращает тип объекта, обычно используется при отладке кода.
dir() Возвращает список имён, доступных в локальной области видимости, или атрибуты объекта, переданного в качестве аргумента.
help() Выводит информацию о переданном объекте из встроенной справочной системы. Её целесообразно использовать только в интерактивном режиме Python интерпретатора.
В этой статье я планирую рассказать о функциях, именных и анонимных, инструкциях def, return и lambda, обязательных и необязательных аргументах функции, функциях с произвольным числом аргументов.
Объекты первого класса
Как вам, наверное, известно в Python практически всё является объектом, а функции рассматриваются как объекты первого класса. Это означает, что функции могут передаваться и использоваться в качестве аргументов, как и любой другой объект (например, строка, int, float, список и т.д.). Также функции можно присваивать переменным, то есть рассматривать их как любые другие объекты. Рассмотрим следующий пример:
def func_a(): return "I was angry with my friend." def func_b(): return "I told my wrath, my wrath did end" def func_c(*funcs): for func in funcs: print(func()) main_func = func_c main_func(func_a, func_b)
>>> I was angry with my friend. >>> I told my wrath, my wrath did end
Этот пример кода иллюстрирует тот факт, что функции в Python рассматриваются как объекты первого класса. В начале я определяю две функции, и , а затем функцию , которая принимает их в качестве своих параметров. запускает, принятые в качестве параметров функции на выполнение, и выводит в консоли результаты их работы. Затем мы присваиваем функцию переменной . В итоге мы запускаем функцию и она ведет себя точно так же, как и .
Функции python 3 — работа с параметрами
До сих пор мы рассматривали функции без аргументов. Но в скобках можно определять параметры для функций. Параметр — это переменная в определении функции, указывающая аргумент, который функция должна принять.
Создадим небольшую программу с параметрами x, y и z. Определим функцию, которая суммирует параметры в различных конфигурациях. Она возвращает их сумму. Затем мы вызовем функцию и передадим в нее числа.
add_numbers.py def add_numbers(x, y, z): a = x + y b = x + z c = y + z print(a, b, c) add_numbers(1, 2, 3)
Мы передали число 1 в параметр x, число 2 в параметр y, и число 3 в параметр z. Эти значения соответствуют каждому параметру в том порядке, в котором они приведены.
Программа выполняет математические вычисления на основе значений параметров:
a = 1 + 2 b = 1 + 3 c = 2 + 3
Функция Python 3 выводит результаты математических расчетов a, b, и c, где a должно равняться 3, b — 4 и c — 5. Запускаем программу:
python add_numbers.py Результат 3 4 5
Когда значения 1, 2 и 3 мы передаем в качестве параметров функции add_numbers(), то получаем ожидаемый результат.
Параметры — это аргументы, которые выступают в качестве переменных в определениях функций. Им можно задать значения при запуске метода для передачи аргументов в функцию.
Global vs. Local variables
Variables that are defined inside a function body have a local scope, and those defined outside have a global scope.
This means that local variables can be accessed only inside the function in which they are declared, whereas global variables can be accessed throughout the program body by all functions. When you call a function, the variables declared inside it are brought into scope. Following is a simple example −
#!/usr/bin/python total = 0; # This is global variable. # Function definition is here def sum( arg1, arg2 ): # Add both the parameters and return them." total = arg1 + arg2; # Here total is local variable. print "Inside the function local total : ", total return total; # Now you can call sum function sum( 10, 20 ); print "Outside the function global total : ", total
When the above code is executed, it produces the following result −
Inside the function local total : 30 Outside the function global total : 0
Previous Page
Print Page
Next Page
Логические операторы
Для сравнения значений используется три логических оператора, которые сводят результат к логическому значению True или False.
Оператор | Значение |
and | Оператор «и»: выражение истинно, если оба его компонента истинны. |
or | Оператор «или»: выражение истинно, если хотя бы один из его компонентов истинен. |
not | Оператор «не»: изменяет логическое значение компонента на противоположное. |
Логические операторы обычно используются для оценки двух или больше выражений. Например, их можно использовать в программе, которая проверит:
- сдал ли студент экзамен
- и зарегистрирован ли он.
Если оба значения истинны, студент будет переведён на следующий курс.
Другой пример: программа с логическими операторами может проверять активность пользователя в онлайн-магазине:
- использовал ли он кредит магазина
- или заказывал ли он товары в течение последних 6 месяцев.
Для примера попробуйте сравнить три выражения:
В первом случае оба выражения истинны, потому оператор and возвращает True.
Во втором случае истинно только значение 8 == 8. Поскольку хотя бы одно из предложенных условий истинно, оператор or возвращает True. Оператор and в таком случае выдал бы False.
В третьем случае выражение 3 <= 1 ложно. Оператор not изменяет полученное логическое значение на противоположное: not False = True.
Теперь попробуйте сравнить числа с плавающей точкой.
- Поскольку в первом примере одно из выражений ложно, and вернёт False. Оператор and оценивает выражение как истинное только тогда, когда оба компонента истинны.
- Поскольку оба выражения ложны, оператор or выдаст False.
- Поскольку выражение истинно, оператор not вернёт False (not True = False).
Примечание: Если вы не понимаете, как это работает, вам помогут разобраться таблицы истинности. Эту тему мы рассмотрим далее в этом руководстве.
Логические операторы можно объединять в составные выражения:
Выражение (0.8 < 3.1) or (0.1 == 0.1) истинно, поскольку оба математических выражения, из которых оно состоит, истинны. Оператор or вернёт True.
Полученное значение True становится компонентом следующего выражения: (-0.2 > 1.4) and (True). Оператор and выдаст False, потому что выражение -0.2 > 1.4 ложно. (False) and (True) = False.
Далее оператор not заменит полученное значение False на обратное ему логическое значение: not(False) = True. Значит, результат будет таким:
Как начать программировать на Python
Перво-наперво, вам нужно будет загрузить некоторое программное обеспечение, чтобы начать программировать на Python.
Если вы используете настольный компьютер, у вас должно быть две вещи:
- Интерпретатор Python
- IDE Python
Что такое интерпретатор Python? Это программа, которая читает код Python и запускает его. Установка переводчика похожа на обучение вашего компьютера иностранному языку.
Как начать программировать на Python
Между тем, IDE — это «интегрированная среда разработки». Это программа, которую вы будете использовать для ввода кода Python. Вы можете сохранять и открывать файлы и все это в интерпретаторе, когда вы хотите его запустить. Это интерфейс для разработки на Python.
При установке интерпретатора вам необходимо решить, выберете ли вы Python 2 или Python 3. У каждой версии есть свои плюсы и минусы, но Python 2 больше не поддерживается официально, что делает Python 3 перспективным выбором.
Если вы задаетесь вопросом, «минусы Python», один из ответов заключается в том, что он фрагментирован таким образом, что может вызвать небольшую путаницу при начале работы!
Загрузите последнюю версию интерпретатора Python здесь:
- Windows: https://www.python.org/downloads/windows/
- Mac: https://www.python.org/downloads/mac-osx/
Обратите внимание, что у вас уже может быть установлен интерпретатор Python, особенно если вы используете MacOS или Linux. Когда дело доходит до IDE, есть несколько хороших вариантов на выбор
Некоторые из них бесплатны, другие стоят денег, но предлагают расширенные функции. Вот несколько хороших вариантов:
Когда дело доходит до IDE, есть несколько хороших вариантов на выбор. Некоторые из них бесплатны, другие стоят денег, но предлагают расширенные функции. Вот несколько хороших вариантов:
- PyCharm
- Wing IDE 5
- NetBeans
- LiClipse
- Komodo
PyCharm бесплатен и является одним из самых популярных вариантов разработки на Python. Это инструмент, который я рекомендую большинству пользователей. Тем не менее, его может быть немного сложно настроить, поэтому обязательно следуйте официальной документации.
На мобильных устройствах все проще, потому что IDE и интерпретатор встроены в одно приложение. Это отличный способ для начинающих.
Чтобы начать программировать на мобильном устройстве, вы найдете одно приложение и загрузите его. Два хороших примера для изучения Python:
- iOS: Python3IDE
- Android: QPython 3L
Доступны и другие версии с различными моделями оплаты. И то и другое — хороший выбор для бесплатного начала работы.
QPython 3L — Python for Android
После того, как вы установили что-либо из этого, вы готовы написать свою первую программу на Python!
Еще несколько примеров
Кэширование возвращаемых значений
Декораторы могут предоставить элегантный способ запоминания (кэширования) возвращаемых значений функции.
Представим себе следующую ситуацию, у нас в приложении используется достаточно ресурсоемкий (или с длительным временем обращения) API, и вы хотели бы, по возможности, как можно реже к нему обращаться. Идея состоит в том, чтобы сохранять и кэшировать значения, возвращаемые вызовами API для конкретных значений параметров запроса. В случае их повторного запроса с помощью API с указанными аргументами, вы могли бы просто сразу возвращать результаты из кэша вместо совершения повторного вызова методов API. Этот прием может значительно улучшить производительность вашего приложения. В примере кода ниже я смоделировал “дорогой” вызов API с использованием модуля time.
import functools import time def api(a): """API принимает в качестве параметра целое число и возвращает его квадрат. Для имитации времени работы процесса обращения я добавил временную задержку.""" print("The API has been called...") # Сделаем задержку 3 сек time.sleep(3) return a * a api(3)
>>> The API has been called... 9
И так запуск и выполнение функции занимает примерно 3 секунды. Для того, чтобы кэшировать результат ее выполнения, мы можем использовать функцию . С ее помощью мы можем сохранить результат выполнения функции в словаре, а затем использовать его, когда снова будет необходим запрос к API с тем же параметром. При этом словарь, содержащий информацию о прошлых запросах к API, будет иметь следующий вид: в качестве ключей будет использоваться значение параметра запроса, а в качестве значения, соответствующего ключу – ответ API (результат выполнения функции). Единственным недостатком этого способа является то, что параметры (аргументы) запроса к API должны иметь такой вид, что могут быть легко преобразованы в хэш, а точнее корректное наименование ключа словаря.
import functools @functools.lru_cache(maxsize=32) def api(a): """API принимает в качестве параметра целое число и возвращает его квадрат. Для имитации времени работы процесса обращения я добавил временную задержку.""" print("The API has been called...") # This will delay 3 seconds time.sleep(3) return a * a api(3)
>>> 9
Особенностью технической реализации метода является принцип хранения полученных ранее результатов Least Recently Used LRU, что подразумевает организацию элементов словаря в порядке их использования, что позволяет быстро определить, какой элемент не использовался в течение длительного времени.
В примере кода выше параметр метода определяет максимальное число возвращаемых значений, которые могут быть сохранены до того, как он начнет удалять самые ранние из них. И теперь если мы запустим функцию на выполнение, то увидим, что первый раз для возврата ее результата потребуется около 3 секунд. Но если вы снова запустите ее с тем же параметром, то она почти мгновенно вернет результат из своего кэша.
Преобразование единиц измерения
Следующий декоратор, который мы рассмотрим преобразует длину из единиц измерения СИ в единицы измерения других систем, не загрязняя целевую декорируемую функцию логикой преобразования.
import functools def convert(func=None, convert_to=None): """Этот код конвертирует единицы измерения из одного типа в другой.""" if func is None: return functools.partial(convert, convert_to=convert_to) @functools.wraps(func) def wrapper(*args, **kwargs): print(f"Conversion unit: {convert_to}") val = func(*args, **kwargs) # Добавим правила для преобразования if convert_to is None: return val elif convert_to == "km": return val / 1000 elif convert_to == "mile": return val * 0.000621371 elif convert_to == "cm": return val * 100 elif convert_to == "mm": return val * 1000 else: raise ValueError("Conversion unit is not supported.") # этот тип единиц не поддерживается return wrapper
Давайте используем этот пример кода и применим этот декоратор для функции, которая рассчитывает площадь прямоугольника.
@convert(convert_to="mile") def area(a, b): return a * b area(1, 2)
>>> Conversion unit: mile 0.001242742
Полученный результат вызова функции расчета площади, к которой мы применили наш декоратор, показывает, что она не только рассчитывает правильное значение, но и выводит единицу длинны в которую мы преобразовывали входные значения. Поэкспериментируйте с другими единицами измерения и посмотрите, что получится.
Функции Python 3 — возврат значения
Можно передавать значение аргумента функции в Python. При этом функция также может возвращать значение с помощью инструкции return, которая завершит выполнение функции и передаст значения к месту ее вызова. Используя return без аргументов, функция будет возвращать None.
До сих пор мы использовали print(), а не return. Создадим программу, которая вместо вывода в терминал будет возвращать переменную.
В новом текстовом файле создадим программу, которая будет возводить в квадрат параметр x и возвращать переменную y. Выполняем вызов, чтобы вывести переменную result после запуска функции square() с аргументом 3:
square.py def square(x): y = x ** 2 return y result = square(3) print(result)
Запускаем программу, чтобы увидеть результат:
python square.py Результат 9
В качестве выходных данных получаем число 9, что и является результатом возведения в квадрат числа 3. Рассмотрим действие инструкции return в программе:
square.py def square(x): y = x ** 2 # return y result = square(3) print(result)
Снова запускаем программу:
python square.py Результат None
Без return программа не может вернуть значение, поэтому оно равно None.
В следующем примере математической функции в Python заменим print() из программы add_numbers.py на инструкцию return:
add_numbers.py def add_numbers(x, y, z): a = x + y b = x + z c = y + z return a, b, c sums = add_numbers(1, 2, 3) print(sums)
Вне функции объявляем переменную sums, которая равна результату действия функции для чисел 1, 2 и 3 из примера, приведенного выше. Затем выводим переменную sums. Снова запускаем программу, теперь уже с инструкцией return:
python add_numbers.py Результат (3, 4, 5)
На выходе получаем те же числа, что и с использованием инструкции print(). Теперь результат предоставлен в виде кортежа, так как в списке выражений инструкции return имеется запятая.
Функции Python немедленно завершаются, когда встречают инструкцию return, независимо от того, возвращают они значение или нет:
return_loop.py def loop_five(): for x in range(0, 25): print(x) if x == 5: # Функция останавливается на x == 5 return print("Эта строка не будет выполняться.") loop_five()
Инструкция return в цикле for завершает функцию, поэтому строка вне цикла не будет выполняться. При использовании инструкции break был бы завершен только цикл, и выполнялась последняя строка print().
Инструкция return завершает функцию и может возвращать значение в случае применения параметров.
Variable-length Arguments
You may need to process a function for more arguments than you specified while defining the function. These arguments are called variable-length arguments and are not named in the function definition, unlike required and default arguments.
Syntax for a function with non-keyword variable arguments is given below −
def functionname( *var_args_tuple ): "function_docstring" function_suite return
An asterisk (*) is placed before the variable name that holds the values of all nonkeyword variable arguments. This tuple remains empty if no additional arguments are specified during the function call. Following is a simple example −
#!/usr/bin/python3 # Function definition is here def printinfo( arg1, *vartuple ): "This prints a variable passed arguments" print ("Output is: ") print (arg1) for var in vartuple: print (var) return # Now you can call printinfo function printinfo( 10 ) printinfo( 70, 60, 50 )
When the above code is executed, it produces the following result −
Output is: 10 Output is: 70 60 50
Библиотека 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 для использования.