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__        

  • 相关阅读:
    nodejs学习(一) ---- nodejs + express应用生成器 快速创建应用
    canvas学习--准备
    react初探索--react + react-router + ant-design 后台管理系统配置
    css3新特性学习系列 -- border
    微信小程序 video组件 不随页面滚动
    将日志搬家到自己的站点 http://nowhereman.cn/
    【转】- 使用T4模板批量生成代码
    [WinForm]- 设置DataGridView单元格内根据不同值显示图片
    [转]- Winform 用子窗体刷新父窗体,子窗体改变父窗体控件的值
    [MVC]
  • 原文地址:https://www.cnblogs.com/alex-jiang/p/12504120.html
Copyright © 2011-2022 走看看