• 小技巧总结(1)if __name__=='__main__':用法


    一、原理

    假设有两个py文件

    (1)learn.py

    //learn.py
    
    def learn():
        print('i am learning!')

    (2)call.py

    import learn
    learn.learn()

    此时执行python learn.py后没有展示任何结果,因为只是执行但没有调用,再执行python call.py,会输出i am learning!,因为我们导入了learn模块并进行了调用。

    (1)learn.py

    //learn.py
    print(__name__) #此时插入变量name,py编译器调用一个脚本的时候时,它会自动创建这个变量并分配这个变量的值
    def learn():
        print('i am learning!')

    此时learn.py直接打印会输出一个  __main__

    (2)call.py

    import learn
    learn.learn()

    此时call.py直接打印会输出以下结果,

    learn  #因为call.py引入了learn.py(learn.py被引入文件)分配的值,这个learn(来源__name__)就是learn.py的文件名,

    i am learning!

    总结原理name是py解释器自动创建并且分配值的一个变量可以直接使用,

    二、用途

    展示一:

    (1)learn.py

    //learn.py
    
    def learn():
        print('i am learning!')
    learn() #当没有call.py文件时,进行自测,脚本调用learn

    输出结果:
    i am learning!  #此时成功调用learn输出了一个结果

    (2)call.py

    import learn
    learn.learn()
    输出结果: #因为第一次引入learn.py的learn()时已经执行了一个结果,所以call.py再调用时生成了二次执行
    i am learning!
    i am learning!

    展示二:

    (1)learn.py

    //learn.py
    
    def learn():
        print('i am learning!')
    if __name__=='__main__'
      learn()

    输出结果:
    i am learning!

    (2)call.py

    import learn
    learn.learn()
    输出结果:
    i am learning!

     总结:展示二的learn.py文件里的__name__判断当前脚本是不是被python直接调用的,应用上可以说用于做测试,方便控制代码,保证__name__在if里什么时候执行什么时候不执行,总的来说就是在py直接被调用时 执行__name__ ,被引入时不去执行 __name__        

  • 相关阅读:
    Javascript之数组遍历
    Javascript中的原型、原型链(十)
    Javascript中的对象(八)
    记一次包含iframe的需要滚动的元素不能滚动到底部的问题
    元素等比缩放解决方案
    元素高度自适应屏幕高度解决方案
    浏览器同源策略及规避方案
    Ansible环境搭建
    Ldap 从入门到放弃(二)
    Ldap 从入门到放弃(一)
  • 原文地址:https://www.cnblogs.com/alex-jiang/p/12504120.html
Copyright © 2020-2023  润新知