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. [題解]luogu_P1144最短路計數

    1.無權圖最短路邊權為1 2.如果兩個點恰好不能被更新(d[y]==d[x]+1)那麼就能通過x的所有最短路到達y,所以ans[y]+=ans[x] 3.如果兩個點不能恰好被更新(d[y]>d[ ...

  2. [題解/狀壓dp]POJ_2411_Mondriaan's dream

    关于“我读过很多书,到后来大部分都被我忘记了,那阅读的意义是什么?”的疑问,我看过最巧妙的一个回答:当我还是个孩子的时候,我吃过很多的食物,大部分已经一去不复返而且被我忘记了,但可以肯定的是,它们中的 ...

  3. Tinghua Data Mining 2

    数据预处理 https://www.bilibili.com/video/av23933161/?p=11 http://www.xuetangx.com/courses/course-v1:Tsin ...

  4. Codeforces Round #532(Div. 2) A.Roman and Browser

    链接:https://codeforces.com/contest/1100/problem/A 题意: 给定n,k. 给定一串由正负1组成的数. 任选b,c = b + i*k(i为任意整数).将c ...

  5. B.选点

    链接:https://ac.nowcoder.com/acm/contest/368/B 题意: 有一棵n个节点的二叉树,1为根节点,每个节点有一个值wi.现在要选出尽量多的点. 对于任意一棵子树,都 ...

  6. centos设置ssh免密码登陆

    准备工作:    1.确认本机sshd的配置文件(需要root权限) $ gedit /etc/ssh/sshd_config 找到以下内容,并去掉注释符”#“ RSAAuthentication y ...

  7. kafka基础四

    消费者消费过程(二) 消费组状态机:消息的产生存储消费看似是杂乱无章的,但万物都会遵循一定的规则成长,任何事物的发展都是有迹可循的. 开始消费组初始状态为Stable,经过第一次Rebalance之后 ...

  8. jQuery deferred应用之ajax详细源码分析(二)

    在上一节中,我只贴出了$.Deferred的源码分析,并没用讲解怎么使用它,现在我们先看看$.ajax是如何使用它,让我们进行异步任务的处理. 如果没看上节的代码,请先稍微了解一下jQuery Def ...

  9. VBA小记

    要放假了,可是我们,我还是煎熬! 最让人不爽的是媳妇也需要加班加点的完成一些看起来很EASY的事: 统计数据,把几个表合并…… EXCEL本人还是懂得一点点的(我不想说我是学计算机的,我怕给学计算机的 ...

  10. Android setVisibility(View.GONE)无效的问题及原因分析

    解决方案:可以在setVisibility()之前调用clearAnimation()方法清除掉动画,或setFillAfter(false)(时间上该函数内部也调用了clearAnimation() ...