2016-06-29 2 views
0

В моей работе с python я иногда обнаружил, что я удалил переменную и просто оставил строку inline в своем коде. Я заметил, что вы можете это сделать, и при этом не возникает никакого уведомления от компилятора или какой-либо ошибки во время выполнения. Может кто-нибудь сказать мне, почему это не ошибка?Почему неназначенная строка не вызывает ошибку компиляции в Python?

c = 1 
"this causes no error or notification to the developer" 
b = 2 

Это, как представляется, работает точно так же, как docstring, но нет тройных котировок, только одного набора. Я не мог найти документацию по этому вопросу.

ответ

1

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

3.14 
"Boo!" 
False 
2 + 2 
callable(func) and func() 

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

Такие выражения могут иметь побочные эффекты (например, последний, который вызывает func, если он может быть вызван, и func может вообще что-либо сделать), поэтому не обязательно бессмысленно писать такой код. Фактически, вызов функции, которая не возвращает ничего, что вам нужно для продолжения, - это именно то, против чего вы возражаете, и, очевидно, полезно.

1

Поскольку Pyhthon определяет и допускает, что, иначе известный как expression-statements

цитирую: используются

утверждения Expression (в основном в интерактивном режиме), чтобы вычислить и записать значение, или (как правило), чтобы вызвать процедура (функция, которая не возвращает никакого значимого результата, в Python процедуры возвращают значение None). Другие использования выражений выражения допускаются, и иногда полезно.