Извините, если об этом раньше не спрашивали, потому что это очевидно для любого, кто имеет какую-либо форму обучения на Python.Я провел большую часть своих дней, программируя на Java, и мне было интересно, как это сделать, я считаю, что это идиосинкразия в Python.Я возился с
this=bool
if(this==True):this="big"
print(this)
Неудивительно, что я получил объявление универсального типа в качестве вывода, потому что оно действительно будет большим, если True.
<class 'bool'>
Затем я использовал свое ограниченное понимание JavaЧтобы определить, что я мог бы упростить выражение больше, это условно, верно?Они сделаны для булевых типов.
this=bool
if(this):this="big"
print(this)
Тогда я чуть не рассмеялся вслух, но это было наполнено ужасом
big
Имеет смысл, что "это" "менее ложно"чем «this == True», что ложно с большой буквы F, но я все еще не думал, что это следует оценивать как True.Кроме того, правдивость и ложь в других случаях кажутся достаточно хорошими, чтобы дать ожидаемый результат.Так что же делает пустую логическую истину правдой?
Моя первая мысль была о том, что нужно просто проверить, существует ли «это».Поэтому я удалил объявление в первой строке, ожидая, что «if ([что-то, что не существует]):» будет пропущено.Вместо этого он выбросил ошибку.Если простой факт его существования оценивается как Истина, не должно ли его небытие просто оцениваться как Ложь?В чем смысл функциональности, в которой инициализированное (пустое) значение оценивается как true, если неинициализированное значение не возвращает false?Я думал, что понял после прочтения этого ответа , и действительно, моей первой мыслью было: «О, это просто проверка того, существует ли вообще« это »».Затем я набрал if(this is not None):
, а также if(this!=None):
и снова получил «большой» в качестве результата, предполагая, что «this» равно Нет.
Затем, почти в приступе паникиЯ набрал
this=bool
if(this==None):this="big"
if(this==True):this="big"
if(this==False):this="big"
print(this)
и, как вы уже догадались, потерпел неудачу
<class 'bool'>
Конечно, логическое значение должно быть одним из этих «трех»?Пожалуйста, не говорите мне, что я обнаружил «четвертое» логическое значение, я не смог справиться с такой дурной славой.
Проблема (я думаю) у меня со всем этим заключается в том, что удаление инициализации«this» в первой строке вызывает ошибку, а не ложный регистр в операторе if.Если «if (x):» выполняется, когда x существует, то не должен ли несуществующий «x» пройти и просто пропустить этот оператор?Почему бы не оставить логическое значение, если функциональность Java, и просто заставить нас проверить, не является ли x в этом случае нулевым?