模块之间引用不能循环成环,圆圈
 
模块的收搜
 
!!!把模块当作脚本执行
什么叫模块: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. struts原理图

    n the diagram, an initial request goes to the Servlet container (such as Jetty or Resin) which is pa ...

  2. python scrapy 插入数据库的操作

    需要安装这个 pymysql 写法还是很简单的 # -*- coding: utf-8 -*- # Define your item pipelines here # # Don't forget t ...

  3. 【OpenGL】第一个窗口

    包含头文件: #include <GL/glew.h> // GLFW #include <GLFW/glfw3.h> 初始化与配置GLFW: glfwInit(); //初始 ...

  4. PHP判断是否都是中文

         {               }       }

  5. Python __import__() 函数

     Python OS 文件/目录方法 Python 面向对象  Python __import__() 函数  Python 内置函数 描述 __import__() 函数用于动态加载类和函数 . 如 ...

  6. php项目执行composer install时报错

    报错信息: Loading composer repositories with package informationInstalling dependencies (including requi ...

  7. 【linux C】C语言中常用的几个函数的总结【二】

    3.fgets 虽然用 gets() 时有空格也可以直接输入,但是 gets() 有一个非常大的缺陷,即它不检查预留存储区是否能够容纳实际输入的数据,换句话说,如果输入的字符数目大于数组的长度,get ...

  8. java_14.1 判断是否是闰年

    package demo; import java.util.Calendar; import java.util.Scanner; public class Demo { public static ...

  9. 自动化运维工具 SaltStack 搭建

    原文地址:https://www.ibm.com/developerworks/cn/opensource/os-devops-saltstack-in-cloud/index.html#N10072 ...

  10. 本地推送UILocalNotification的一些简单方法

    1.添加本地推送,需要在app添加推送.可以根据通知的userInfo的不同的键值对来区分不同的通知 UILocalNotification *notification = [[UILocalNoti ...