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. CATIA 各个版本代号详解

    一. 第几代(V-"version")简介 1982—1988年,catia相继发布了第一代—V1版本.第二代—V2版本.第三代—V3版本,并于1993年发布了功能强大的第四代—V ...

  2. Ubuntu安装LAMP

    1.安装apache2 sudo apt-get install apache2 sudo apt-get install apache2 Apache安装成功后,/var/www/默认作为web的根 ...

  3. [异常]undefined method `visit' for #<RSpec::Core::ExampleGroup::Nested_1:0x16529f8 @example=nil>

    在进行Rspec 编译测试: bundle exec rspec spec/requests/static_pages_spec.rb 提示错误: FF Failures: 1) Static pag ...

  4. asp.net,监听输入框值的即时变化onpropertychange、oninput

    作者:自由天堂发布站点:WEB六零零 网页设计制作原文地址:http://www.web600.net/html/editor/JavaScript/201001131529.html 要达到的效果 ...

  5. Java环境安装与Eclipse安装

    1.jdk下载安装 2.Eclipse下载安装 遇到的问题: 出现问题原因可能有两个:1)没有配置环境变量 2)jdk和eclipse安装的版本不一致,都是64位或者都是32位. 本人出现错误的原因: ...

  6. SQL Server插入中文数据出现乱码问题

    我在用sql server存储数据的时候发现中文全变成了问号,我知道中文是特殊的编码.所以在数据库设计的时候包含中文的字段就是nvarchar,但是还是成了问号 好了,不多说了,解决方案如下: 在存储 ...

  7. js js弹出框、对话框、提示框、弹窗总结

    js弹出框.对话框.提示框.弹窗总结 一.JS的三种最常见的对话框 //====================== JS最常用三种弹出对话框 ======================== //弹 ...

  8. sql中的exsits和not exsits

    select * from table where exsits(sql语句) :  括号中sql语句有数据则返回这些相关id的数据集 select * from table where not ex ...

  9. c#将本地文件上传至服务器(内网)

    using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...

  10. UVALive 4287 Proving Equivalence (强连通分量)

    把证明的关系看出一张图,最终就是要所有的点都在至少一个环中.环的判断和度数有关. 用tarjan找强连通分量,在一个强连通分量点已经等价缩点以后形成一个DAG,计算入度为0的点数a, 出度为0的b,取 ...