IsemА она есть
Не вижу разницы.
>>> 0 is False
False
IsemА она есть
Не вижу разницы.
>>> 0 is False
False
FishHookтак и
>>> 0 is False
False
IsemВ смысле казалось бы? Целое число и число с плавающей точкой - это такие разные вещи, что мне даже как-то стыдно вам про это говорить.
Хотя, казалось бы?
FishHook
В смысле казалось бы? Целое число и число с плавающей точкой - это такие разные вещи, что мне даже как-то стыдно вам про это говорить.
>>> type(False) <type 'bool'> >>> type(0) <type 'int'> >>>
FishHook
Да блин же! Мы же не со школьной арифметикой имеем дело, а с объектно ориентированным языком программирования, реализующим концепцию “всё есть объект”. Вы пытаетесь спорить с очевидными утверждениями. Вам не нравится фраза “False и 0 - это разные вещи”, но это разные вещи, это объекты разных классов.
IsemРазумеется, покажите мне человека, который будет спорить с утверждение, что “1 и 2 - это разные вещи”.
То есть 1 is 2 тоже False.
IsemНет, не то же самое. У них даже дир разный
0 и 0.0 - то же самое.
>>> dir(0) ['__abs__', '__add__', '__and__', '__class__', '__cmp__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__float__', '__floordiv__', '__format__', '__getattribute__', '__getnewargs__', '__hash__', '__hex__', '__index__', '__init__', '__int__', '__invert__', '__long__', '__lshift__', '__mod__', '__mul__', '__neg__', '__new__', '__nonzero__', '__oct__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'imag', 'numerator', 'real'] >>> dir(0.0) ['__abs__', '__add__', '__class__', '__coerce__', '__delattr__', '__div__', '__divmod__', '__doc__', '__eq__', '__float__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getformat__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__int__', '__le__', '__long__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__nonzero__', '__pos__', '__pow__', '__radd__', '__rdiv__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rmod__', '__rmul__', '__rpow__', '__rsub__', '__rtruediv__', '__setattr__', '__setformat__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', 'as_integer_ratio', 'conjugate', 'fromhex', 'hex', 'imag', 'is_integer', 'real'] >>>
А в данном случае мы имеем дело как раз с арифметикойВ данном случае мы имеем дело со спором ради спора. Хотите я вам покажу объект который дает True при сравнении вообще хоть с чем?
class A: def __eq__(self, other): return True a = A() print(a == "dfssd") >>True
FishHookРаз пошла такая пьянка, то я могу показать человека, что 1 и 2 - это одно и то же.
азумеется, покажите мне человека, который будет спорить с утверждение, что “1 и 2 - это разные вещи”.
FishHookРазве я не говорил, что это разные классы? Чему же тут удивляться?
Нет, не то же самое. У них даже дир разный
FishHook
В данном случае мы имеем дело со спором ради спора.
FishHook
Теперь можете начинать утверждать, что объект `a` и случайная строка - одно и тоже, по вашей логике это именно так.
IsemFalse и True - это числа, так как bool - тип, производный от int. Но это сделано только для того, чтобы к этим значениям можно было применять числовые функции.
Не вижу разницы.
>>> def f(n): ... if isinstance(n, bool): ... if n: ... print('bingo!') ... else: ... print('nope') ... else: ... print(n ** 2 + 1) ... >>> f(True) bingo! >>> f(1) 2 >>> f(100) 10001 >>> f(False) nope >>> f(0) 1 >>>
>>> def f(n): ... if isinstance(n, bool): ... if n: ... print('bingo!') ... else: ... print('nope') ... else: ... print(n ** 2 + 1) ... >>> def adder_b(m, n): ... return m <= n and (n + m) * (n - m + 1) // 2 ... >>> def adder_i(m, n): ... return (n * n - m * m + n + m) // 2 if m <= n else 0 ... >>> f(adder_b(1, 100)) 25502501 >>> f(adder_b(100, 1)) nope >>> >>> f(adder_i(1, 100)) 25502501 >>> f(adder_i(100, 1)) 1 >>>