关于前后双下划线的一道练习题——分苹果

python书上的一道练习题,后面的
if __name__ == '__main__':

我不太明白,这个前后添加了双下划线的两个量在前文中也没有提到啊,它是什么意思呢?

完整的程序如下:
def division():
  '''功能:分苹果'''
  apple = int(input("请输入苹果的个数:"))
  children = int(input("请输入来了几个小朋友:"))
  result = apple // children
  remain = apple - result * children
  if remain > 0:
    print(apple, "个苹果,平均分给", children, "个小朋友,每人分", result, "个,剩下", remain, "个。")
  else:
    print(apple,"个苹果,平均分给", children, "个小朋友,每人分", result, "个。")
if __name__ == '__main__':
  try:
    division()
  except ZeroDivisionError:
    print("\n出错了,苹果不能被0个小朋友分")
  except ValueError as e:
    print("输入错误:", e)
  else:
    print("分苹果顺利完成")

这个_name_ 是python的固有属性来着。‘_main_’是其一个属性值,代表当前这个程序直接运行于本程序而非被调用运行。
你可以把if name='main'当作是c语言里的
void main(){}

if name == 'main':
这个数python主函数的固定写法,就像是普通函数开头的def 一样,是规定的
当然,主函数前面也可以什么都不写,但是这样写比较规矩

  1. __name__是模块(.py文件)在创建之初会自动加载一些内建变量;
  2. 当直接执行模块(.py文件)时,__name__的值就是'main';
  3. 当引入该模块时,__name__的值就是【模块名】;
  4. 所以if name == 'main':这个判断就是是不是直接执行的当前模块!