2016-11-20 2 views
0

В PythonВ чем разница между этими двумя фрагментами кода в Python

В чем разница между

print("Hello "+"There") 

и

print("Hello","There") 

Результаты кажутся идентичными, но я предполагаю, что они являются используется в разных контекстах, не могли бы вы освежить меня?

Ваши пожелания, Ehsan

ответ

0

тот же результат, несколько различных способов вызова функции печати.

Первый вычисляет новую строку, которая является конкатенацией двух строк, а затем вызывает печать с единственным результатом аргумента.

Второй печатает первый аргумент, печатает символ разделителя по умолчанию (пробел), затем печатает второй аргумент. Сепаратор можно переопределить:

>>> print("Hello","There",sep='+') 
Hello+There 

Вы также можете увидеть разницу в разборке. Заметим, что компилятор байтового кода Python выяснил, что конкатенация двух констант является константой и только сгенерированным байтовым кодом для конечной константы.

>>> import dis 
>>> dis.dis(lambda: print("Hello "+"There")) 
    1   0 LOAD_GLOBAL    0 (print) 
       3 LOAD_CONST    3 ('Hello There') 
       6 CALL_FUNCTION   1 (1 positional, 0 keyword pair) 
       9 RETURN_VALUE 
>>> dis.dis(lambda: print("Hello","There")) 
    1   0 LOAD_GLOBAL    0 (print) 
       3 LOAD_CONST    1 ('Hello') 
       6 LOAD_CONST    2 ('There') 
       9 CALL_FUNCTION   2 (2 positional, 0 keyword pair) 
      12 RETURN_VALUE 
Смежные вопросы