Я так и не понял. Я думаю, что это утверждение if, это позволяет запускать функцию, когда она вызывается, а не когда модуль, в котором он написан, импортируется. Возьмите этот код, например:пытается понять __self__ == "__main__"
# Finds duplicate values in a specified feature class field and populates those reords with a 'Y' in another field
import arcpy
# enter program inputs
def findDupes(inFeatureClass, checkField, updateField, countRec = 0):
with arcpy.da.SearchCursor(inFeatureClass, [checkField]) as rows:
values = [r[0] for r in rows]
with arcpy.da.UpdateCursor(inFeatureClass, [checkField, updateField]) as rows:
for row in rows:
if values.count(row[0]) >= 2:
row[1] = 'Y2'
print "yes"
rows.updateRow(row)
countRec += 1
print countRec
if __name__ == '__main__':
fc = raw_input("paste input feature class path from ArcCatolog: ")
fld = raw_input("duplicate field values: ")
up = raw_input("update field: ")
findDupes(fc, fld, up)
модуль дуги не имеет значения для этого вопроса; однако, способ, которым я вижу вещи, если я поместил исходные входы в начало скрипта, он все равно будет работать, но если бы я импортировал скрипт с этой функцией в качестве модуля (import CheckforDupes
), он будет работать с оператором import вместо когда функция была вызвана, если не было __name__ == "__main__"
. Это правильно?
В вашем названии вы хотели поставить '__self__ == '__main''? (В отличие от '__name__ == '__main'' –
http://stackoverflow.com/questions/419163/what-does-if-name-main-do –
Нет. Довольно я имел в виду, если __name__ ==' __main__ ' – ShaunO