1. Чем является условие if start: # Что этов приведенном ниже коде?
1. В общем виде, выражение вида
if variable:
по-умолчанию заменяет примерно такую конструкцию:
if (
variable is not None # ни ничего
and variable is not False # ни ложь
and variable != 0 # ни ноль
and variable != '' # ни пустая строка
and variable != [] # ни пустой список
and variable != {} # ни пустой словарь
and variable != tuple() # ни пустой кортеж
and variable != set() # ни пустое множество
):
В лекциях и литературе, это порой называют термином
falsy -- логичный набор значений для встроенных типов, которые в выражении
if variable:
эквивалентны
False
. В качестве наглядного примера,
if my_list:
для проверки на пустой список
[]
писать гораздо удобнее, чем
if len(my_list) != 0:
.
В вашем случае, условие
if start:
исключает срабатывание вложенного кода, как при пустой строке
''
, так и при
None
.
2. Соответственно что передается при вводе пустого Enter?
2. Передаётся пустая строка
''
, что затем "присваивается" переменной
start
. И так как условием выполнения цикла
while
является
start != ''
, то в данном коде ввод пустой строки является способом выхода из цикла.
3. Чем является пустая строка, ведь она ни False, ни True, ни None
3. Пустая строка
''
имеет тип
str
. Однако, см. выше про
falsy значения.
В общем, выражение
if start:
покрывает и проверку
if start != '':
, и ряд других проверок, описанных в пункте 1.