if __name__ == '__main__的理解

模块之间引用不能循环成环,圆圈

模块的收搜

!!!把模块当作脚本执行

什么叫模块:py文件,如果一个py文件被导入了,他就是一个模块,

模块没有具体的调用过程

但是能对外提供功能

什么叫脚本:py文件,如果这个py文件直接被执行,这个被直接执行的文件就是一个脚本(点击右键运行这个py文件)

前提介绍:py文件叫login,文件内的函数叫log_in

当一个py文件(名字叫Login.py)当作脚本执行的时候,能够独立完成登录功能

print(‘__name__:‘,  repr(__name__))

返回:__name__:   ‘__main__‘

结论:当一个py文件被当作脚本执行的时候,__name__是一个字符串数据类型的‘__main__‘。即__name__等于‘__main__‘这个py文件本身,被当作脚本,可以这样去理解

当一个py文件定义成模块的时候(login模块名)被当导入的时候需要等待调用才能完成功能

import  login

login.log_in

__name__:    ‘login‘

结论:当一个py文件被当作模块被导入的时候,__name__是一个字符串数据类型的模块名。即

__name__等于 ‘login‘这个模块名,被当作模块,可以这样理解

问题?就是说在一个py文件里,怎么控制他当作脚本执行的时候,他去执行他里面的函数调用,而同时这个py文件被当做模块被调用的时候,不执行俩次(因为被当作脚本执行时,函数有调用才能被执行嘛,如果被当作模块导入时就会被打印俩次。)

说白了就是去加个开关去判断他是被当作脚本执行呢还是被当作模块导入。怎么做?

所以就可以这样去判断:

在这个login.py文件里:

内容如下:

def  log_in:

print(‘我是脚本文件‘)

if __name__  ==   ‘__main__‘:#这用法是固定的

log_in()

老师总结:

只要当前这个文件直接被执行,就会执行if条件语句内的代码

当前这个文件是引入模块的时候被执行,就不会执行if条件内语句內的代码。

#意思是说:__name__等于__main__这个py文件本身的时候,我就走下面的log_in()然后就执行。

#这样就可以控制Login这个py文件被当作模块被导入时,不会打印俩次。其实可以简单理解为__name__和__main__就是这个文件名,如果文件名等于文件,就当作脚本执行,就执行这个py文件打印调用结果,如果这个文件名等于这个模块名的时候就不去执行模块内的调用,就是说当作模块时不被调用俩次,你想调用模块的函数要自己手动调,而不是直接就全部将模块内的东西直接调用过来就打印结果了。

if __name__ == '__main__的理解

原文地址:https://www.cnblogs.com/sunny7/p/9222508.html

时间: 2024-10-27 04:30:05

if __name__ == '__main__的理解的相关文章

python中 __name__ == '__main__'的理解

python中常常会用到: if __name__ == '__main__': 这段代码的意思为: 当我们直接运行该段代码所在的py文件时(python xxx.py),  __name__ == '__main__' 为真,if条件成立,那么就会执行if下面的语句. 当我们在另一个py文件中使用import导入包含该段代码的py文件时,__name__的值是包含该段代码的py文件的名字,而不是__main__. python中 __name__ == '__main__'的理解

魔力Python--if __name__ == '__main__' 的理解

if __name__ == '__main__' 的理解 __name__ 是当前模块名,当模块被直接运行时模块名为 __main__ . 这句话的意思就是,当模块被直接运行时,以下代码块将被运行,当模块是被导入时,代码块不被运行. #practice.py import cc print('引用cc') cc.cc() print('程序结束!') 其中,cc.py为 def cc(): print('调用cc了') print('先输出哪个?') 此时结果为: 先输出哪个? 引用cc 调用

关于if __name__ == '__main__'的理解

学习作用域时,有些疑惑,if __name__ == '__main__':. 第一,添加这条语句的作用是什么?原理是什么? 第二,添加这条语句有什么好处? if __name__ == '__main__': __name__  参数: 被执行模块的名字. 模块作为主程序时执行,__name__值为‘__main__‘,而作import时,其值为:模块的名字. if __name__ == '__main__': pass 作用分为两个方面:第一,作为脚本本身运行时,执行pass内容. 第二,

Python中 if __name__ == "__main__" 的理解

1.if __name__ == "__main__" 我们在python代码中经常可以看见者行代码,但是当我们进行练习的时候发现,这行删除和添加这行代码貌似对程序的运行并无什么影响,那为什么要加这行代码? 2.主函数 主函数这个概念可以理解为程序的入口,在代码中 if  __name__ == "__main__" 就是主函数,代表程序的入口: 例1: def demo1(x,y): return x+y def demo2(x,y): return x-y de

if __name__ == '__main__' 如何正确理解

今天刷知乎,突然看到这个问题,发现很多人都是简单的回答了一下,对于很多人来说,更准确的说应该是大部分的 Python 初学者,这样的回答很容易让人理解.所以这里我来做说一下,希望能把这个问题说明白. 先举一个例子:假设我们有一个add.py文件,里面的代码是这样: def add(a, b):    return a + badd(1,2)#用于测试上面函数是否正常 这里就是一个求两数之和的函数,然后我在另一个文件中调用这个模块,这个时候就会把add(1,2)也运行,但是我是不希望运行add(1

Python if __name__ == '__main__': 理解

if __name__ == '__main__':是为了区分.py文件是自己直接被执行还是被其他文件调用. 当.py文件直接被执行时,默认的是 __name__ = '__main__',因此条件成立,将执行if语句中的操作: 当.py文件被其他文件调用时,默认的是 __name__ = 'xxx', (当前文件为xxx.py),因此if语句判断条件不成立,if中的操作不会执行: 但是,这两种情况下,if语句之外的其他语句都将正常按顺序执行,且在if语句执行之前. Python if __na

理解----if __name__ == '__main__'

python 中__name__ = '__main__' 的作用,到底干嘛的? 有句话经典的概括了这段代码的意义: "Make a script both importable and executable" 意思就是说让你写的脚本模块既可以导入到别的模块中用,另外该模块自己也可执行. 这句话,可能一开始听的还不是很懂.下面举例说明: 先写一个模块: #module.py def  main(): print"we are in %s"%__name__ if__

【转载】Python 中的 if __name__ == '__main__' 该如何理解

转自 旷世的忧伤 http://blog.konghy.cn/2017/04/24/python-entry-program/ 程序入口 对于很多编程语言来说,程序都必须要有一个入口,比如 C,C++,以及完全面向对象的编程语言 Java,C# 等.如果你接触过这些语言,对于程序入口这个概念应该很好理解,C 和 C++ 都需要有一个 main 函数来作为程序的入口,也就是程序的运行会从 main 函数开始.同样,Java 和 C# 必须要有一个包含 Main 方法的主类来作为程序入口. 而 Py

python3----如何简单地理解Python中的if __name__ == '__main__'

1. 摘要 通俗的理解__name__ == '__main__':假如你叫小明.py,在朋友眼中,你是小明(__name__ == '小明'):在你自己眼中,你是你自己(__name__ == '__main__'). if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行:当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行. 2. 程序入口