Day15模块

什么是模块:

一系列功能的集合体

一个py文件就是一个模块

aaa.py就是aaa模块

模块四种形式:

内置的模块

py文件

第三方的

模块三种来源:内置的,第三方,自定义

为什么要用模块

1.使用内置的或者第三方的好处是拿来主义,极大提升开发效率

2.使用自定义模块的好处是,将程序各部分组件共用的功能提取出来放到一个模块内,其他组件通过导入使用,减少代码冗余

如何用模块(py文件):

首次导入模块

1.产生一个模块的名称空间

2.执行模块内代码,将产生的名字放入模块的名称空间内

3.在当前执行文件中拿到模块名字,名字指向模块的名称空间

之后的导入直接引用首次导入的成果

使用

模块名.(变量or函数名)

补充:

import spam as sm

模块名纯小写加下划线

模块名不能以数字开头,避免中文定义模块名

import spam 与 from spam import read区别

首次导入前两步与import导入一样,第三步不一样,在当前执行文件中拿到名字money,该名字指向模块的名称空间中的money

money如果是不可变类型,在模块中改变这个money,不会影响执行文件中的money

如果是可变类型,在模块中改变这个money,执行文件中的money会随之改变

import 总结

优点:引用模块中的名字必须加前缀(模块名.),指名道姓的问某一个名称空间要名字,不会与当前执行文件名称空间冲突

缺点:不够简洁

from ..import

优点,引用模块中的名字不用加前缀,使用更为简洁

缺点:容易与当前执行文件名称空间中的名字冲突

from .. import * 代表所有名字调用

最好不要用

__all__ = ["name"]
import *时只能引用all设置的名称

模块的查找顺序

1.内存

2.内置模块

3.sys.path(执行文件为准)

pycharm为了识别目录结构,它把项目根文件夹放入环境变量

所以执行文件的环境变量导入后,其他模块导入的时候就不用

if __name__ == "__main__"
当文件被当做执行文件直接运行时,__name__等于__main
当文件被当做模块导入时,__name__为模块名

应该把项目的根目录加到环境变量里

应该把项目的根目录所在绝对路径拿到,然后加到环境变量里

import os

os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

把启动文件直接放在根目录下,可以避免更新环境变量和模块导入时找不到模块的问题(前提是采用from文件夹名导入模块)

Day15模块(导入,使用)的更多相关文章

  1. Go项目结构和模块导入

    Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方. 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 exp ...

  2. python 模块导入

    1. 模块导入: 要使用一个模块,我们必须首先导入该模块.Python使用import语句导入一个模块.例如,导入系统自带的模块 math: import math 你可以认为math就是一个指向已导 ...

  3. python 入门学习---模块导入三种方式及中文凝视

    Python 有三种模块导入函数 1. 使用import 导入模块 import modname : 模块是指一个能够交互使用,或者从还有一Python 程序訪问的代码段.仅仅要导入了一个模块,就能够 ...

  4. python成长之路【第十八篇】:python模块介绍、模块导入和重载

    一.模块和命名空间 一般来说,Python程序往往由多个模块文件构成,通过import语句连接在一起.每个模块文件是一个独立完备的变量包,即一个命名空间.一个模块文件不能看到其他文件定义的变量名,除非 ...

  5. isinstance和issubclass、动态模块导入、异常处理

    一.isinstance和issubclass isinstance:判断某个对象是否是某个类的实例,返回True或Flase issubclass:判断某个类是否是某个类的子类. 例如: class ...

  6. 一文解决python模块导入

    python 模块导入 原理 查找是按照 sys.path 中的路径挨个扫描.若都不存在则提示error. sys.path路径第一个是当前运行脚本所在的目录,其后是PYTHONPATH(一般若步专门 ...

  7. 一句python,一句R︱模块导入与查看、数据读写出入、数据查看函数、数据类型、遍历文件

    先学了R,最近刚刚上手python,所以想着将python和R结合起来互相对比来更好理解python.最好就是一句python,对应写一句R. pandas中有类似R中的read.table的功能,而 ...

  8. Django学习之六:Django 常用模块导入记忆

    Django 常用模块导入记忆 django相关 1. urls相关操作 from django.urls import path, re_path, include from django.urls ...

  9. python学习日记(模块导入)

    什么是模块? 常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1 使用python编写的代码(.p ...

随机推荐

  1. JMeter BeanShell示例

    翻译:https://blog.trigent.com/jmeter-blog-series-jmeter-beanshell-example 在这个例子中,我们将演示在Apache JMeter中使 ...

  2. Linux (二)

    PS :显示系统进程 -a :显示所有进程(包括其他用户的进程) -u :用户以及其他详细信息 -x :显示没有控制终端的进程 -ef :显示所有 top :用于动态地监视进程活动与系统负载的信息 p ...

  3. TCP长链接调试利器nc

    最近做了不少TCP长链接的开发,包括服务端和客户端.本人感觉服务器端与客户端通信时最好采用字符串形式,这样可以做要平台无关,跨语言.如果采用对象序列化机制通用性会较差.另外采用字符串形式用nc调试很方 ...

  4. gin 打linux环境包问题解决

    打window包直接go build一下,完事, 但是,打linux包出现如下错误 ..\github.com\mattn\go-isatty\isatty_linux.go:7:8: cannot ...

  5. Brackets前端开发编辑器

    http://www.cnblogs.com/xiazdong/p/3550148.html http://blog.csdn.net/shinesun001/article/details/5348 ...

  6. 初探ant design pro

    1.增加路由子页面&配置菜单 因为ant design pro采取的是umi路由配置,所以只要在对应的文件夹下新建相关的文件夹以及文件,它会自动解析.按照如下的步骤做即可 PS.如果想要给菜单 ...

  7. jquery.qrcode.min.js生成二维码

    jquery.qrcode.min.js是一款可以生成二维码的插件,使用前提是先引入jquery,因为jquery.qrcode.min.js依赖jquery. 基本用法 1.引入js <scr ...

  8. 打开一个本地apk进行安装

    Intent intent = new Intent(); intent.setAction(Intent.ACTION_VIEW); File file = new File(Environment ...

  9. JavaScript 跨域请求

    1.最简单通用的做法就是 反向代理         通过nginx搭建一个反向代理服务器,通过将跨域的请求配置成转发:此方法适用于动静分离时,很多跨域请求的情况下: server { listen 8 ...

  10. 编译驱动链接到了Kernel32库问题

    最近开始学习驱动编程,根据网上的配置方法配置了驱动开发环境,用了一个简单的例子测试发现驱动居然链接到了kerner32库里面去了如图 : 显然是把Kernel.lib添加到了附加依赖库 如图 : 去掉 ...