zoukankan      html  css  js  c++  java
  • 小技巧总结(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__        

  • 相关阅读:
    Unable to save settings: Failed to save settings. Please restart IntelliJ IDEA
    mysql使用instr
    swagger错误:Failed to execute 'fetch' on 'Window': Request with GET/HEAD method cannot have body
    java.lang.ArithmeticException: Non-terminating decimal expansion; no exact representable decimal result异常的解决方法
    平行四边形
    transition
    transform
    box-shadow
    text-shadow文字阴影
    linear-gradient线性渐变
  • 原文地址:https://www.cnblogs.com/alex-jiang/p/12504120.html
Copyright © 2011-2022 走看看