Возврат нескольких значений
В задаче про корни квадратного уравнения у нас уже возникала необходимость вернуть несколько значений. Вы видели, что это можно сделать, вернув список значений.
То же самое можно сделать немного проще: если после return написать несколько значений через запятую, Python автоматически поместит эти значения в кортеж и вернет этот кортеж.
В задаче про корни квадратного уравнения у нас уже возникала необходимость вернуть несколько значений. Вы видели, что это можно сделать, вернув список значений.
То же самое можно сделать немного проще: если после return написать несколько значений через запятую, Python автоматически поместит эти значения в кортеж и вернет этот кортеж.
def get_coordinates():
return 1, 2
print(get_coordinates())
# => (1, 2)
Мы разобрались, как возвращать значения из функции. Но как программа их получает, когда значений несколько? Оказывается, есть несколько способов. Один вариант вы знаете, можно записать в переменную весь кортеж:
Можно вместо этого воспользоваться множественным присваиванием, тогда значения автоматически будут распределены по разным переменным:
def get_coordinates():
return 1, 2
result = get_coordinates()
print(result)
# => (1, 2)
Можно вместо этого воспользоваться множественным присваиванием, тогда значения автоматически будут распределены по разным переменным:
x, y = get_coordinates()
print(x) # => 1
print(y) # => 2
Аннотация типов
Python — язык с динамической типизацией. Это означает, что типы связаны со значением переменной, а не с ней самой. Переменные могут принимать любое значение в любой момент и проверяются только перед выполнением операций над ними.
Однако, при написании кода, мы так или иначе предполагаем переменные каких типов будут использоваться (это может быть вызвано ограничением алгоритма или логики). Для корректной работы программы нам важно как можно раньше найти ошибки, связанные с передачей данных неверного типа.
Аннотации типов — это новая возможность, описанная в PEP484, которая позволяет добавлять подсказки о типах переменных. Они используются, чтобы информировать читателя кода, каким должен быть тип переменной.
Аннотации типов не влияют на время выполнения программы. Эти подсказки игнорируются интерпретатором и используются исключительно для повышения удобочитаемости для других программистов и вас самих. Аннотации типов поддерживаются многими IDE для Python, которые выделяют некорректный код или выдают подсказки в процессе набора текста.
Для создания аннотированных переменных можно использовать один из способов:
В первой строке тип переменной указываем в комментариях. В двух других строках тип переменной указываем в коде, через двоеточие от имени переменной и дальше двумя разными способами задаем значение переменной.
Для аннотирования списоков, кортежей, словарей и множеств используют имена классов.
Такое аннотирование не слишком информативно, поскольку не показывает, какого типа элементы содержатся внутри.
Что бы показать тип элементов его указывают внутри квадратных скобок:
Удобнее всего использовать аннотации типов при описании функции: можно указать типы аргументов и тип ожидаемого результата или что-то одно. Аргумент аннотируется через двоеточие после имени, а возвращаемое значение через -> после имени и аргументов функции.
Python — язык с динамической типизацией. Это означает, что типы связаны со значением переменной, а не с ней самой. Переменные могут принимать любое значение в любой момент и проверяются только перед выполнением операций над ними.
Однако, при написании кода, мы так или иначе предполагаем переменные каких типов будут использоваться (это может быть вызвано ограничением алгоритма или логики). Для корректной работы программы нам важно как можно раньше найти ошибки, связанные с передачей данных неверного типа.
Аннотации типов — это новая возможность, описанная в PEP484, которая позволяет добавлять подсказки о типах переменных. Они используются, чтобы информировать читателя кода, каким должен быть тип переменной.
Аннотации типов не влияют на время выполнения программы. Эти подсказки игнорируются интерпретатором и используются исключительно для повышения удобочитаемости для других программистов и вас самих. Аннотации типов поддерживаются многими IDE для Python, которые выделяют некорректный код или выдают подсказки в процессе набора текста.
Для создания аннотированных переменных можно использовать один из способов:
count = 5 # type: int
count: int; count = 5
count: int = 5
В первой строке тип переменной указываем в комментариях. В двух других строках тип переменной указываем в коде, через двоеточие от имени переменной и дальше двумя разными способами задаем значение переменной.
Для аннотирования списоков, кортежей, словарей и множеств используют имена классов.
my_list: list
my_tuple: tuple
my_dic: dict
my_set: set
Такое аннотирование не слишком информативно, поскольку не показывает, какого типа элементы содержатся внутри.
Что бы показать тип элементов его указывают внутри квадратных скобок:
my_list: list[int]
my_tuple: tuple[str, float, float]
my_dic: dict[str, int]
my_set: set[str]
Удобнее всего использовать аннотации типов при описании функции: можно указать типы аргументов и тип ожидаемого результата или что-то одно. Аргумент аннотируется через двоеточие после имени, а возвращаемое значение через -> после имени и аргументов функции.
def double_it(x: int) -> int:
return x * 2
def get_coordinates() -> tuple:
return 1, 2
def greet_all(names: list[str]) -> None:
for name in names:
print("Hello", name)
Python
Photo
можно записать переменную с * внутрь которой попадут все "незадействованные" элементы
Аргументы по умолчанию
Бывает так, что какой-то параметр функции часто принимает одно и то же значение.
Например, хорошо известная вам функция int принимает два параметра: строка, которую нужно преобразовать в число, а также основание системы счисления. Это позволяет ей считывать числа в различных системах счисления, например, двоичное число 101 мы можем считать так:
int('101', 2) # => 5
Но чаще всего эта функция используется для считывания из строки чисел, записанных в десятичной системе счисления. Было бы неудобно каждый раз писать 10 вторым аргументом. На такой случай Python позволяет задавать некоторым аргументам значения по умолчанию. У функции int второй аргумент по умолчанию равен 10, и потому можно вызывать эту функцию с одним аргументом. Значение второго подставится автоматически.
Позиционные и именованные аргументы
Аргументы, которые передаются без указания имен, называются позиционными, потому что функция по положению аргумента понимает, какому параметру он соответствует. Аргументы, которые передаются с именами, называются именованными.
Типо как print(1, 2, 3) # => a b c
и print(1, 2, 3, sep=' ') # => a b c
Python
Позиционные и именованные аргументы Аргументы, которые передаются без указания имен, называются позиционными, потому что функция по положению аргумента понимает, какому параметру он соответствует. Аргументы, которые передаются с именами, называются именованными.…
Если вы укажете только одно дополнительное значение, оно будет присвоено первому аргументу по умолчанию, а второй аргумент так и останется со значением по умолчанию. Если укажете два значения, значения будут присвоены обеим переменным.
Использование map:
Функция map применяет lambda x: x ** 2 к каждому числу, возводя его в квадрат.
numbers = range(1, 10)
squared_numbers = list(map(lambda x: x ** 2, numbers))
print(squared_numbers) # [1, 4, 9, 16, 25, 36, 49, 64, 81]
Функция map применяет lambda x: x ** 2 к каждому числу, возводя его в квадрат.