模块之间引用不能循环成环,圆圈
 
模块的收搜
 
!!!把模块当作脚本执行
什么叫模块: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__的理解的更多相关文章

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

    if __name__ == '__main__' 的理解 __name__ 是当前模块名,当模块被直接运行时模块名为 __main__ . 这句话的意思就是,当模块被直接运行时,以下代码块将被运行, ...

  2. Python中if __name__ == "__main__": 的理解

    1.在很多python脚本中在最后的部分会执行一个判断语句if __name__ == "__main__:",之后还可能会有一些执行语句.那添加这个判断的目的何在? 在pytho ...

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

    通俗的理解__name__ ="__main__"的意思就是:当.py文件被直接运行时,if __name__ = "__main__"之下的代码快将被运行:当 ...

  4. python对 if __name__=='__main__'的理解

    对于学过其他编程语言的人来说都知道程序都是从main函数开始执行的,而对于python来说他并没有主函数,他不像其他语言需要需要转化为二进制文件 然后才能执行,他时通过翻译器从第一行开始逐行执行,所以 ...

  5. python if __name__=='__main__'的理解

    定义一个模块叫module.py: def main(): print "we are in %s" %__name__ if __name__=='__main__': main ...

  6. 关于__name__=='__main__'的理解

    一.总的来说,如果__name__=='__main__'成立,表示当前模块就是主程序, 如果__name__=='__main__'不成立,表示当前模块是被导入到某个模块中的,而此时__name__ ...

  7. 【疑难杂症】if __name__ == '__main__'的理解

    今天进行小批量梯度下降时,代码给我报错,具体代码如下 import torch import numpy as np from torch.utils.data import Dataset from ...

  8. 如何简单地理解Python中的if __name__ == '__main__'

    https://blog.csdn.net/yjk13703623757/article/details/77918633 1. 摘要 通俗的理解__name__ == '__main__':假如你叫 ...

  9. 理解 if __name__ == '__main__'

    简单地理解Python中的if __name__ == '__main__' if __name__ == '__main__'的意思是: 当.py文件被直接运行时,if __name__ == '_ ...

随机推荐

  1. MPI Maelstrom-单源最短路-Djsktra

    BIT has recently taken delivery of their new supercomputer, a 32 processor Apollo Odyssey distribute ...

  2. git桌面工具下载git源码

    第一步,登陆githup,搜索自己需要查看的代码. 并复制clone url. 第二步,复制下载资源:选择菜单--FILE--CLONE

  3. Hadoop详细安装步骤

    hadoop安装:(分布式模式)参考地址:http://dblab.xmu.edu.cn/blog/install-hadoop/ http://dblab.xmu.edu.cn/blog/insta ...

  4. django1.10使用本地静态文件

    django1.10使用本地静态文件方法 本文介绍的静态文件使用,是指启动web站点后,访问静态资源的用法,实际静态资源地址就是一个个的url 如果没有启动web站点,只是本地调试html页面,那直接 ...

  5. 侯捷STL课程及源码剖析学习2: allocator

    以STL 的运用角度而言,空间配置器是最不需要介绍的东西,它总是隐藏在一切组件(更具体地说是指容器,container)的背后,默默工作默默付出. 一.分配器测试 测试代码 #include < ...

  6. 取得<asp:TextBox中的值:

     取得<asp:TextBox中的值:  var a= document.getElementById("<%= (ID名).ClientID %>").valu ...

  7. TypeError: 无法设置未定义或 null 引用的属性“src” ——IE浏览器不兼容图片懒加载vueLazy

    异常分析: 谷歌浏览器访问正常,IE浏览器访问部分图片无法正常展示,查看控制台,输入如下错误信息: 经分析,只有使用过图片懒加载的地方图片展示才有问题,那么就应该是图片懒加载vue-lazyload这 ...

  8. angular插件制作——Directive指令使用详解

    1.replace——最简单的使用方法,直接将自定义标签替换为模板内的内容:  html: <!DOCTYPE html> <html> <head> <me ...

  9. 【laravel VS lumen】

    读取项目的配置信息 读取config文件database.php中的default属性信息 laravel:config('database.default'); lumen:app()->co ...

  10. TZOJ 3244 Happy YuYu's Birthday(数学几何)

    描述 9月10日教师节,也是YuYu的生日,妈妈给YuYu准备了一个很大的圆形蛋糕,YuYu看中了蛋糕中间那诱人的樱桃(都挤到一块啦),小家伙很高兴,心里开始盘算着如何将樱桃全部分给自己.YuYu是个 ...