#python
#python
Вопрос:
Есть ли в Python какой-либо способ получить объект сложения (operator ) для целых чисел в Python и сохранить его где-нибудь?
Комментарии:
1. Пожалуйста, обратите внимание, что ответ отличается в зависимости от того, нужен ли вам конкретно оператор сложения для целых чисел или общая операция.
2. Чтобы получить связанный метод добавления целого числа, вы должны использовать круглые скобки
.
, чтобы предотвратить обработку как десятичной точки. например(1).__add__
. Другим способом было бы добавить пробел между1
и.
, например1 .__add__
, но я думаю, что это слишком неясно.3. @gnibbler Отличный комментарий. Я расширил принятый ответ на его основе в интересах полного ответа.
Ответ №1:
>>> int_add = int.__add__
>>> int_add(1, 2)
3
Вы также можете использовать operator.add
для получения универсальной функции для добавления в Python:
>>> from operator import add
>>> add(1, 2)
3
>>> add('a', 'b')
'ab'
Если вы хотите получить метод сложения определенного целого числа вместо int
типа, см. Комментарий gnibbler к вопросу:
Чтобы получить связанный метод добавления целого числа, вы должны использовать круглые скобки, чтобы предотвратить . обрабатывается как десятичная точка. например
(1).__add__
. Другим способом было бы добавить пробел между1
и.
, например1 .__add__
, но я думаю, что это слишком неясно.
Пример:
>>> one_add = 1 .__add__
>>> one_add(2)
3
Комментарии:
1. Этот вариант более правильный. По крайней мере, в некоторых версиях Python
int.__add__ is operator.add
значение равно false .2. Когда
operator.add
вызывается с целым числом в качестве первого аргумента,int.__add__
будет использоваться. Foroperator.add(a, b)
,a.__add__(b)
будет вызван, если он реализован, если он неb.__radd__(a)
будет предпринят.3. Добавление к F.J.: подразумевается, что
int.__add__
при вызове с нецелыми аргументами произойдет сбой:int.__add__(2, 3.0)
вернет строковое значение"NotImplemented"
. Итак, если вы уверены, что аргументы всегда будут целыми числами, продолжайте и используйтеint.__add__
.
Ответ №2:
>>> import operator
>>> help(operator.add)
Help on built-in function add in module operator:
add(...)
add(a, b) -- Same as a b.
Ответ №3:
Вы можете использовать int.__add__
:
>>> myOperator = int.__add__
>>> myOperator(23,42)
65