Файлы с именем __init__.py
используются для маркировки каталогов на диске в виде каталогов пакетов Python. Если у вас есть файлы
mydir/spam/__init__.py
mydir/spam/module.py
и mydir
на вашем пути, вы можете импортировать код в module.py
в качестве
import spam.module
или
from spam import module
Если вы удалите файл __init__.py
, Python больше не будет искать подмодули внутри этого каталога, поэтому попытки импортировать модуль не удастся.
Файл __init__.py
обычно пуст, но может использоваться для экспорта выбранных частей пакета под более удобным именем, удержания удобных функций и т. д. В приведенном выше примере к содержимому модуля init можно получить доступ как
import spam
на основе это
В 99%-м случае этот код эквивалентен.
одно исключение - когда тип рассматриваемого объекта переопределяет == оператор. Для ошибки возможно быть представленным в ==, который вызывает проблемы, когда один параметр является пустым.
А конкретный пример я видел, прежде чем будет следующий
public static bool operator==(Student left, Student right) {
return left.Equals(right);
}
, Это перестанет работать, когда пустой указатель будет слева, но вероятно не когда пустой указатель в справа.
Это - довольно далекое угловой случай все же.
Форма" if
" оператор, который помещает константу слева, является пережитком от C/C++, где у Вас могло быть произвольное выражение в если оператор.
синтаксис C# для того, если операторы требует, чтобы выражение оценило к bool, что означает, что if (foo = 0)
не скомпилирует.
Как указано другими они главным образом эквивалентны.
необходимо также смотреть на: http://en.wikipedia.org/wiki/Null_Object_pattern
Это - очень полезная альтернатива простой проверке нулевую ссылку.
if (null==myobject) {
- это безопасный способ написания оператора if. Это происходит из C / C ++, где условие представляет собой выражение, вычисляемое как int
. Если результат равен нулю, это означает ложь
, все остальное - истина
. Вы можете написать что-то вроде
if (variable == 1) {
, но если вы не будете осторожны, вы можете также написать
if (variable = 1) {
, и в этом случае у вас есть присваивание, которое всегда оценивается в 1 и, следовательно, всегда истинно.
Вы можете скомпилировать это и запустить без проблем, но результат будет не таким, как вы ожидали. Итак, программисты на C / C ++ начали писать такие вещи, как
if (1 == variable) {
Это не будет компилироваться, если вы сделаете ошибку, поэтому вам всегда приходилось писать так, как вы хотели. Позже это станет (хорошей) привычкой, и вы будете использовать ее на всех языках программирования, например на C #.