В чем разница между print(9) и print(str(9)) в Python, когда результат одинаков для обеих функций?

0
Dhar Dibya 5 Сен 2016 в 09:48

4 ответа

Лучший ответ

print всегда сначала пытается вызвать __str__ для объекта, который вы ему даете. В первом случае __str__ экземпляра int 9 равен '9'.

Во втором случае вы сначала явно вызываете str для 9 (который вызывает его __str__ и возвращает '9'). Затем print вызывает функцию '9' __str__, которая, если она передана с экземпляром строки, возвращает его, поскольку это снова приводит к '9'.

Таким образом, в обоих случаях print напечатает аналогичный результат.

2
Dimitris Fasarakis Hilliard 5 Сен 2016 в 07:01
print(str(9))
print(9)

Выход:

9
9

Нет никаких изменений в выходе. Но если мы проверим тип данных, выполнив,

print(type(str(9)))
print(type(9))

Затем мы получаем вывод как,

<class 'str'> 
<class 'int'>

Итак, как видите, типы разные, но результат такой же.

1
kiner_shah 5 Июл 2018 в 15:05

Проще говоря:

Целое число - это переменная, которая содержит числовое значение. В то время как строка - это переменная, которая может содержать диапазон символов (включая числа).

print(9) says it should print the NUMERICAL value 9

print(str(9)) says it should print the character 9,

Итак, если вы, например, добавляете оба типа:

9 + 9 will always return 18

str(9) + str(9) will always return 99
0
Chidozie Nnachor 5 Сен 2016 в 07:08

Из документации:

Все аргументы, не являющиеся ключевыми словами, преобразуются в строки, как str()

2
Ignacio Vazquez-Abrams 5 Сен 2016 в 06:52