python__name__原理及用法详解_python

来源:脚本之家  责任编辑:小易  

_name_是指示当前py文件调用方式的方法。如果它等于"_main_"就表示是直接执行,如果不是,则用来被别的文件调用,这个时候if就为False,那么它就不会执行最外层的代码了。比如你有个Python文件里面def XXXX():bodyprint"asdf这样的话,就算是别的地方导入这个文件,要调用这个XXXX函数,也会执行print"asdf",因为他是最外层代码,或者叫做全局代码。但是往往我们希望只有我在执行这个文件的时候才运行一些代码,不是的话(也就是被调用的话)那就不执行这些代码,所以一般改为def XXXX():bodyif_name_="_main_":print"asdfwww.zgxue.com防采集请勿采集本网。

1、python中__name__是什么意思?

看下面第一行。 name='Alice'age=10if name=='Alice': print('Hi,Alice.')

很多python的初学者可能都会遇到一个问题:__name__是什么意思?

指示模块应如何被加载,他的值为"__main__"时表示当前模块是被直接执行。 由于主程序代码无论模块是被导入还是直接被执行都会运行,所以我们需要一种方式在运行时检测该模块是被导入还是被直接执行。该方式也就是__name__系统变量。如果模块是被

在刚开始学习python的时候,我们总会看到这样一句代码:

python中,当打开一个.py文件时,经常会在代码的最下面看到if __name__ == '__main__':, 模块是对象,并且所有的模块都有一个内置属性 __name__。 一个模块的 __name__ 的值取决于如何应用模块。如果 import 一个模块,那么模块__name__ 的值通常

if __name__ == "__main__":

if __name__ == "__main__": #如果是主执行脚本执行下面的代码,就是在命令行直接调用,不是被其他脚本导入调用 import sys #导入sys模块 fib(int(sys.argv[1])) #我在你的另一个问题里回答过了:sys.argv里面存放的是命令行参数,argv[0]是脚本

一开始我以为这句代码的意思和C语言中的main函数一样,程序从这里开始执行,但后来经过查询资料发现,两者并不完全相同,这里做一些解释: __name__是一个变量,前后加了双下划线是因为这是系统定义的名字(python中系统变量都是双下划綫开头结尾),普通变量不使用这种命名方式; python有很多模块,这些模块是可以独立运行的(这一点与C语言和C++的头文件不同); __name__是用来标识模块名字的一个系统变量。这里分两种情况:第一种情况指的是当前运行的模块,那么当前模块__name__的值就为"__main__";第二种情况指的是该模块是使用import导入的模块,那么这个被导入模块的__name__变量的值为该模块的文件名(去掉.py)。

首先确定是'__name__'而不是'_name_', if __name__ = '__main__': suite 1 通过__name__ = __main__判断执行程序是不是主程序,如果是主程序则执行suite 1,如果当前文件是被调用的话,这个条件就不成立了,suite 1就不会被执行。

2、测试一下上面内容的正确性

首先创建两个测试文件,代码如下

test_one.py:

def test_function(): print(__name__)def test1_function(name): print(type(name), name)

test.py:

from test_one import *test_function()test1_function(__name__)

运行test.py文件,得到下面的结果:

_name_是指示当前py文件调用方式的方法。如果它等于"_main_"就表示是直接执行,如果不是,则用来被别的文件调用,这个时候if就为False,那么它就不会执行最外层的代码了。比如你有个Python文件里面抄def XXXX():bodyprint"asdf这样的话,就算是别的地方导入这个文件,要调用这个XXXX函数,也会执行print"asdf",因为他是最外层代码,或者叫做全局代码。但是往往我们希望只有我在执行这个文件的时候才运行一些代码,不是的话(也就是被调用的话)那就不执行这些代码,所以一般改为def XXXX():bodyif_name_="_main_":print"asdf内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • python模块的定义,模块的导入,__name__用法实例分析
  • 详解python中__name__的意义以及作用
  • python关于__name__属性的含义和作用详解
  • 使用virtualenv创建python环境及pyqt5环境配置的方法
  • 对tensorflow 中tile函数的使用详解
  • python实现简单点对点(p2p)聊天
  • python实现电子书翻页小程序
  • flask框架url管理操作示例【基于@app.route】
  • 利用python开发实现简单的记事本
  • pytorch 对应点相乘、矩阵相乘实例
  • 给我一面国旗 python帮你实现
  • tensorflow模型保存和提取的方法
  • pandas全表查询定位某个值所在行列的方法
  • python中的__name__ =="__main__"是什么意思呢
  • PYTHON里if __name__ == "__main__":是干什么的
  • windows下python关于_name_的用法问题
  • 如何理解python中的name mangling
  • python里为name赋值的问题
  • python的name是什么意思
  • 在Python __name__='__main__' 是什么意思呢?
  • python3解释一下if __name__=="__main__":是什么意...
  • python中if _name_="_main_"是什么意思,用法是什么?
  • 用python编写一个程序,输出你的姓名和学号
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全vbsdos/bathtahtcpythonperl游戏相关vba远程脚本coldfusionruby专题autoitseraphzonepowershelllinux shellluagolangerlang其它首页python模块的定义,模块的导入,__name__用法实例分析详解python中__name__的意义以及作用python关于__name__属性的含义和作用详解使用virtualenv创建python环境及pyqt5环境配置的方法对tensorflow 中tile函数的使用详解python实现简单点对点(p2p)聊天python实现电子书翻页小程序flask框架url管理操作示例【基于@app.route】利用python开发实现简单的记事本pytorch 对应点相乘、矩阵相乘实例给我一面国旗 python帮你实现tensorflow模型保存和提取的方法pandas全表查询定位某个值所在行列的方法python入门教程 超详细1小时学会python 列表(list)操作方法详解python 元组(tuple)操作详解python 字典(dictionary)操作详解pycharm 使用心得(一)安装和首python strip()函数 介绍python 中文乱码问题深入分析python中使用xlrd、xlwt操作excepython科学计算环境推荐——anacpython逐行读取文件内容的三种方用python删除本地目录下某一时间点之前创django中urlconf和include()的协同工作方python批量赋值操作实例python实现线性判别分析(lda)的matlab方式python正则表达式完全指南python3 cvs将数据读取为字典的方法python批量下载抖音视频pytorch 调整某一维度数据顺序的方法python如何派生内置不可变类型并修改实例python 日期的转换及计算的具体使用详解
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved