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. [软件工程基础]PhyLab 需求与功能分析改进文档

    NABCD 模型 Need 需求 根据 Default 的需求文档,物理实验网站对于北航大二学生完成物理实验有较大的帮助,反馈较好.由于在 2016-2017 春季学期,网站数据库因为不明原因被删除了 ...

  2. [转][android][利用JNI技术在Android中调用、调试C++代码]

    在Android中调用C++其实就是在Java中调用C++代码,只是在windows下编译生成DLL,在Android中会生成Linux系统下的.so文件(好吧,其实我基本没用过Linux). 没写过 ...

  3. nodejs Async 使用方法(解决多层回调嵌套)

    由于nodejs是异步处理的,有时我们想同步从mysql里取出数据,最后在处理逻辑 就需要用到此扩展: 此扩展可以避免多层回调: 安装方法: npm install async 使用方法: 1.par ...

  4. css3のborder-radius

    css3のborder-radius 今天主要练习了一下border-radius这个属性,这个是最常用的属性,所以先从它开始学习和总结吧. 我觉得需要注意以下几点: 1.书写规范: -webkit- ...

  5. Spring框架学习——AOP的开发

    一.AOP开发中的相关术语. ——JoinPoint(连接点):指那些可以被拦截到的点.比如增删改查方法都可以增强,这些方法就可以被称为是连接点. ——PointCut:切入点,真正被拦截的点,指对哪 ...

  6. AJPFX关于单例设计模式

    单例设计模式优势:保证一个类在内存中的对象唯一性. 比如:多程序读取一个配置文件时,建议配置文件封装成对象.会方便操作其中数据,又要保证多个程序读到的是同一个配置文件对象,就需要该配置文件对象在内存中 ...

  7. Java GUI设置图标

    ImageIcon是Icon接口的一个实现类. ImageIcon类的构造函数: ImageIcon() ImageIcon(String filename)   //本地图片文件 ImageIcon ...

  8. phpMyAdmin 缺少 mcrypt 扩展.请检查 PHP 配置.

    原文链接:http://zhidao.baidu.com/link?url=5Y4eT7bcnTHFUtzDMs7mvtsGc7jqbs2yqXG06AP5_6t7wukC7uVozSrbUf7iYl ...

  9. pyhton中的__new__和__init__

    首先__new__() 函数只能用于从object继承的新式类:其次,object将__new__()方法定义为静态方法,并且至少需要传递一个参数cls,cls表示需要实例化的类,此参数在实例化时由P ...

  10. JS 一个页面关闭多个页面

    <!DOCTYPE html><html xmlns="http://www.w3.org/1999/xhtml"><head><meta ...