一.模块的循环导入问题

  在python工程中,由于架构不当,可能会出现模块间互相引用的情况.这时候需要通过一些方法来解决这个问题

    1.重新设计架构,解决互相引用的关系.

    2.把import语句放置在模块的最后

    3.把import语句放置在函数中

  方法2:

    示例代码:拥有两个模块:m1.py和m2.py

    

    

    运行执行文件run.py.文件中只导入m1模块

    执行结果:

    

    这样就可以解决互相引用出错的问题

  方法3

    示例代码:拥有两个模块:m1.py和m2.py

    

    

    运行执行文件run.py.文件中导入m1模块,并执行m1中的f1()函数

    执行结果:

    

二.区分python文件的两种用途

  在模块中我们也可以运行模块本身代码.从而做到测试自身代码的作用,但是如果没有将模块中的运行的代码关闭时就会发生在导入该模块时自动运行了模块中的功能

  为了解决这一问题,我们可以使用python自带的__name__

  例如:

    

  当模块执行时会运行其中的两个函数,当是执行文件运行时则不运行这两个函数

三.模块的搜索路径

  模块的导入需要一个叫做"路径搜索"的过程,即在文件系统"预定义区域"中查找某个文件,这些预定义区域只不过时你的Python搜索路径的集合.

  模块搜索路径的优先级:

    1.内存中已经加载过的

    2.内置模块

    3.sys.path第一个值是当前执行文件所在的文件夹

  代码示例:执行文件run.py需要调用在同级文件夹dir1下的m1模块

  解决方案一:

    

  解决方案二:

    

  两种方法都可以解决问题,只要在合适的环境下选择合适的方法即可

  环境变量是以当前执行文件为准

  所有被导入的模块参照环境变量sys.path都是以执行文件为准

四.绝对导入与相对导入

  绝对导入:以执行文件的sys.path为起始点开始导入,称为绝对导入
    优点:执行文件与被导入的模块都可以使用
    缺点:所有导入都是以sys.path为起始点,导入麻烦
  相对导入:参照当前所在文件的文件夹为起始点开始查找,称为相对导入
    符号:.代表当前所在文件的文件夹.加一个.代表上一级文件夹
    优点:导入更加简便
    缺点:只能在被导入的模块中使用,不能在执行文件中使用

Python模块入门(二)的更多相关文章

  1. 2.Python爬虫入门二之爬虫基础了解

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  2. Python爬虫入门二之爬虫基础了解

    1.什么是爬虫 爬虫,即网络爬虫,大家可以理解为在网络上爬行的一直蜘蛛,互联网就比作一张大网,而爬虫便是在这张网上爬来爬去的蜘蛛咯,如果它遇到资源,那么它就会抓取下来.想抓取什么?这个由你来控制它咯. ...

  3. 转 Python爬虫入门二之爬虫基础了解

    静觅 » Python爬虫入门二之爬虫基础了解 2.浏览网页的过程 在用户浏览网页的过程中,我们可能会看到许多好看的图片,比如 http://image.baidu.com/ ,我们会看到几张的图片以 ...

  4. Python 爬虫入门(二)——爬取妹子图

    Python 爬虫入门 听说你写代码没动力?本文就给你动力,爬取妹子图.如果这也没动力那就没救了. GitHub 地址: https://github.com/injetlee/Python/blob ...

  5. RobotFramework + Python 自动化入门 二 (关键字)

    在<RobotFramwork + Python 自动化入门 一>中,完成了Robot环境搭建及测试脚本的创建和执行. 本节,对RobotFramework的关键字使用和查看源码进行介绍. ...

  6. 扩展Python模块系列(二)----一个简单的例子

    本节使用一个简单的例子引出Python C/C++ API的详细使用方法.针对的是CPython的解释器. 目标:创建一个Python内建模块test,提供一个功能函数distance, 计算空间中两 ...

  7. Python模块入门(一)

    一.模块介绍 模块就是一系列功能的集合体 模块有三种来源: 1.内置模块:python内提供的模块 2.第三方模块:由第三方提供的模块 3.自定义模块:自行定义的模块 模块的格式: 1.使用pytho ...

  8. python模块(二)

    一.json模块 作用: 用于[字符串]和 [python基本数据类型] 间进行转换 Python的Json模块序列化与反序列化的过程分别是 encoding和 decoding. encoding ...

  9. python模块介绍二。

    全局变量 全局变量 python在一个.py文件内部自动添加了一些全局变量 print(vars()) #查看当前的全局变量 执行结果: {'__package__': None, '__loader ...

随机推荐

  1. 二分+最小生成树【bzoj2654】: tree

    2654: tree 给你一个无向带权连通图,每条边是黑色或白色.让你求一棵最小权的恰好有need条白色边的生成树. 题目保证有解. 二分答案,然后跑最小生成树判断. 注意优先跑白色边. code: ...

  2. 状压DP【洛谷P1896】 [SCOI2005]互不侵犯

    P1896 [SCOI2005]互不侵犯 题目描述 在N×N的棋盘里面放K个国王,使他们互不攻击,共有多少种摆放方案.国王能攻击到它上下左右,以及左上左下右上右下八个方向上附近的各一个格子,共8个格子 ...

  3. ssh证书生成与配置

    cd /usr/local/nginx/conf openssl genrsa -des3 - //key文件为私钥 openssl rsa -in tmp.key -out aminglinux.k ...

  4. react 的安装和案列Todolist

    react 的安装和案列Todolist 1.react的安装和环境的配置 首先检查有没有安装node.js和npm node -v npm -v 查看相关版本 2.安装脚手架工具 2.构建:crea ...

  5. window.open 设置高和宽无效

    当设置_self属性时,再设置宽和高就不管用,这个宽高会继承父窗口的宽高! window.open("url","_self","width=100, ...

  6. 服务器查看外网IP地址和方法

    返回IP地址 curl ip..com/ip.aspx curl whatismyip.akamai.com wget -qO - ifconfig.co curl icanhazip.com dig ...

  7. Go语言基础之6--map(字典)数据类型

    一.map数据类型 1.1 声明和定义 map类型是一个key-value的数据结构,又叫字典.(map也是可以扩容的,内部自动扩容) 声明: var map1 map[keytype]valuety ...

  8. unittest框架

    在我们真正的编写测试用例之前,我们需要了解一下测试框架. unittest是python自带的单元测试框架,尽管其主要是为单元测试服务的,但我们也可以用它来做接口的自动化测试. unittest框架为 ...

  9. axios拦截器搭配token使用

    在了解到cookie.session.token的作用后学习token的使用 cookie是随着url将参数发送到后台,安全性最低,并且大小受限,不超过4kb左右,它的数据保存在客户端 session ...

  10. Visio Studio使用总结

    1.常用快捷键: 注释:Ctrl+K+C 取消注释:Ctrl+K+U 增加缩进:Table 减少缩进: Table+Shift 格式化文本:A.  Ctrl+K+F(选中文本)  B.  Ctrl+K ...