benym的知识笔记 benym的知识笔记
🦮首页
  • Java

    • Java-基础
    • Java-集合
    • Java-多线程与并发
    • Java-JVM
    • Java-IO
  • Python

    • Python-基础
    • Python-机器学习
  • Kafka
  • Redis
  • MySQL
  • 分布式事务
  • Spring

    • SpringIOC
    • SpringAOP
🦌设计模式
  • 剑指Offer
  • LeetCode
  • 排序算法
🐧实践
  • Rpamis

    • Utils
    • Exception
    • Security
  • 归档
  • 标签
  • 目录
🦉里程碑
🐷关于
GitHub (opens new window)

benym

惟其艰难,才更显勇毅🍂惟其笃行,才弥足珍贵
🦮首页
  • Java

    • Java-基础
    • Java-集合
    • Java-多线程与并发
    • Java-JVM
    • Java-IO
  • Python

    • Python-基础
    • Python-机器学习
  • Kafka
  • Redis
  • MySQL
  • 分布式事务
  • Spring

    • SpringIOC
    • SpringAOP
🦌设计模式
  • 剑指Offer
  • LeetCode
  • 排序算法
🐧实践
  • Rpamis

    • Utils
    • Exception
    • Security
  • 归档
  • 标签
  • 目录
🦉里程碑
🐷关于
GitHub (opens new window)
  • Python-基础

    • assert语句的运用
    • list(列表)、tuple(元组)、dict(字典)的回顾
    • Python中的Docstring
    • Python中的多态
    • Python中的集合
    • Python中的列表
    • Python中的序列以及切片的解释
    • Python中的引用和切片
    • Python中的元组
    • Python中对列表和元组的切片操作
    • Python中完整for循环的实际运用
    • Python中字典(key-value)
    • Python中字符串的一些方法回顾(拆分与合并)
    • Python中字符串的一些方法回顾(切片回顾)
    • Python中字符串的一些方法回顾(文本对齐、去除空白)
    • Python中字符串的一些方法回顾
    • Python中字符串的一些基本操作
    • 多种方法快速交换两个变量的值
    • 利用Python进行文件的自动备份
    • 利用Python进行文件的自动备份(第二版)
    • 利用Python进行文件的自动备份(第三版和第四版)
    • 列表推导
    • 在函数中接受元组与字典
    • 装饰器
    • finally异常处理
    • Python的__name__ = '__main__' 的作用
      • Python的pickle模块
      • Python对象的实例化
      • Python日志模块
      • Python中的__new__方法的重写
      • Python中的lambda函数
      • Python中的静态方法、实例方法、类方法的区别
      • Python中的正则表达式
      • Python中的正则表达式match和search
      • Python中面向对象比较简单的内部函数
      • with open异常处理
      • 单例设计模式
      • 继承的运用
      • 简单的异常处理
      • 类变量与对象变量
      • 输入输出——简单的回文判断
      • 输入输出——回文字串的判断(加强版)
      • 文件操作
      • 用户自己引发的异常处理
      • 正则表达式检索与替换
      • 正则表达式中的compile函数
      • 正则表达式中的compile函数(二)
    • Python-机器学习

      • Numpy库的首次使用
      • kNN(k-近邻算法)
      • kNN识别手写图像
      • LogisticRegression(逻辑回归)
      • Ndarray对象
      • Numpy中的数组维度
      • Numpy中花式索引和shape用法
      • turtle绘图库
      • 第一个使用Tensorflow的程序
      • 将下载下来的MNIST手写数字数据集转化成为图片
      • Tensorflow交互式使用
      • 使用k-近邻算法改进约会网站的配对效果
      • Numpy数据类型和arange方法、astype方法的使用
      • 一些TensorFlow的基本操作
    • Python
    • Python-基础
    benym
    2018-07-24
    目录

    Python的_name = 'main_' 的作用

    # python的__name__ = 'main' 的作用

    __name__ = '__main__' 的作用
    先写一个模块:
    
    #module.py
    def main():
      print "we are in %s"%__name__
    if __name__ == '__main__':
      main()
    
    1
    2
    3
    4
    5
    6
    7
    8
    1
    2
    3
    4
    5
    6
    7
    8

    我们经常看到想上面代码底下的代码,其主要的意义在于:

    # 让你写的脚本即可以导入别的模块中用,另外该模块自己也可以执行

    这个函数定义了一个main函数,我们执行一下该py文件发现结果是打印出”we are in main“,说明我们的if语句中的内容被执行了,调用了main():

    但是如果我们从另我一个模块导入该模块,并调用一次main()函数会是怎样的结果呢?

    其执行的结果是:we are in module

    但是没有显示

    ”we are in __main__“
    
    1
    1

    ,也就是说模块

    __name__ = '__main__' 
    
    1
    1

    下面的函数没有执行。

    这样既可以让“模块”文件运行,也可以被其他模块引入,而且不会执行函数2次。这才是关键。

    # 总结

    如果我们是直接执行某个.py文件的时候,
    该文件中那么”__name__ == '__main__'“是True,
    但是我们如果从另外一个.py文件通过import导入该文件的时候,
    这时__name__的值就是我们这个py文件的名字而不是__main__。
    这个功能还有一个用处:调试代码的时候,在”if __name__ == '__main__'“
    中加入一些我们的调试代码,我们可以让外部模块调用的时候不执行
    我们的调试代码,但是如果我们想排查问题的时候,
    直接执行该模块文件,调试代码能够正常运行!
    
    1
    2
    3
    4
    5
    6
    7
    8
    1
    2
    3
    4
    5
    6
    7
    8
    编辑 (opens new window)
    #Python基础
    上次更新: 2022/12/31, 16:52:27
    finally异常处理
    Python的pickle模块

    ← finally异常处理 Python的pickle模块→

    最近更新
    01
    SpringCache基本配置类
    05-16
    02
    DSTransactional与Transactional事务混用死锁场景分析
    03-04
    03
    Rpamis-security-原理解析
    12-13
    更多文章>
    Theme by Vdoing | Copyright © 2018-2024 benym | MIT License
     |   |   | 
    渝ICP备18012574号 | 渝公网安备50010902502537号
    • 跟随系统
    • 浅色模式
    • 深色模式
    • 阅读模式