2017-01-12 2 views
1

Простой вопрос о скобках. Я заинтригован, чтобы знать, почему скобки иногда печатаются, а иногда остаются «невидимыми»? В этом случае я могу привести пример кода и ответ, чтобы показать, что я имею в виду.Python для Absolute Beginners: Chapter 2 #Personal_Greeter

Если я кладу в:

name = "Larry" 
print(name) 
print("Hi", name) 
raw_input("Enter to exit program") 

Почему я получаю этот ответ:

Larry 
('Hi', 'Larry') 
Enter to exit program 

Ларри без скобок, ни одиночные кавычки. Тем не менее («Привет», «Ларри») заключены в скобки и одинарные кавычки?

Может кто-нибудь указать, что происходит, пожалуйста?

+3

Последнее издание Python для Absolute Beginners - это третье издание, опубликованное в январе 2010 года, которое предназначено для Python 3. Вы используете Python 2.7. В Python 2.7 'print' - это утверждение и не нуждается в скобках. Таким образом, когда Python 2.7 видит 'print (« Привет », имя)' он видит 'print' и tuple' («Hi», name) '. Если вы использовали Python 3, он интерпретировал бы скобки как часть вызова функции с двумя аргументами. Правильное решение вашей проблемы - использовать Python 3, так как ваша книга учит вас. –

+1

Btw, В английских английских '[]' являются скобками. –

ответ

2

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

В Python 2.7 скобки не нужны, если у вас print что-то и может привести к проблемам с интерпретацией. Удалите их и посмотрите, что произойдет.

Сравните с этим кодом:

a = ('hello', 3) #a tuple 
print a 
print 'hello', 3 

С другой стороны, в Python 3 скобки будет необходимо.

1

Последнее издание Python для Absolute Beginners - это третье издание, опубликованное в январе 2010 года, которое предназначено для Python 3. Вы используете Python 2.7. В Python 2.7 print является утверждением и не требует скобок. Таким образом, когда Python 2.7 видит print("Hi", name), он видит print и кортеж ("Hi", name). Если вы использовали Python 3, он интерпретировал бы скобки как часть вызова функции с двумя аргументами. Правильное решение вашей проблемы - использовать Python 3, так как ваша книга учит вас.

Python 2.7:

>>> name = "Larry" 
>>> print(name) 
Larry 
>>> print("Hi", name) 
('Hi', 'Larry') 

Python 3:

>>> name = "Larry" 
>>> print(name) 
Larry 
>>> print("Hi", name) 
Hi Larry 

Это можно сделать Python 2.7 действовать как Python 3, делая from __future__ import print_function, но я бы не рекомендовал, что, как вы будете работать в другой несовместимости, когда вы проходите через свою книгу.

+0

Отлично, спасибо. Просто дополнительный вопрос, можете ли вы запустить Python 2.7 и Python 3 на компьютере (отдельно)? Как я упоминал в другом посте, мне нужно 2,7 для курса, который я делаю, поэтому вместо того, чтобы обновлять его, было бы полезно позвонить по номеру 2.7 или 3 по мере необходимости. – user7409665

+0

@ user7409665 Да, вы можете установить оба одновременно. –

Смежные вопросы