一、认识模块

  1. 什么是模块?
    1. 模块本质是一些功能的集合体
    2. 创建的一个py文件就是一个模块
  2. 使用模块:
    1. 在使用模块的py文件中 通过  import 或者 from import导入模块
  3. 模块的优点:
    1. 可以从文件级别组织代码,使得同特性功能能统一管理。
    2. 可以使用系统或者第三方模块(拿来主义),来提高开发效率。
  4. 模块的四种存在方式:
    1. 使用python编写的.py文件(任意一个python文件都可以作为模块)
    2. 已被编译为共享库,或DLL的c或c++扩展
    3. 包的概念:一堆py文件的集合体
    4. 使用c编写,并且链接到python解释器的内置模块

二、导入模块(import导入 和  from...import 导入)

  1.   导入模块干了哪三件事?
    1. 编译执行模块中对应的py文件,形成对应的pyc文件
    2. 产生该模块自己的名称空间
    3. 在使用该模块的名称空间中产生一个名字(导入的模块名)
  2. 导入模块的时候起别名:
    1. 通过as关键字给模块起别名:模块一旦起别名,则原名称就不可以用了
    2. 好处:
      1. 可以简化模块的名称
      2. 可以统一功能,便于调用
# 1.可以简化模块名字
import mmmmmmmmmmmmmmmmmm3 as my_m3
print(my_m3.num)
# 2.可以统一功能
cmd = input('数据库选择 1:mysql | 2:oracle:')
if cmd == '':
import mysql as db
# mysql.excuse()
else:
import oracle as db
# oracle.excuse()
db.excuse()
# -*- coding: utf-8 -*-

# 在import 后的名字才会在该文件的名称空间中产生
# from m4 import a # 指名道姓的可以导入_开头的名字 # 通过* 导入: 可以将导入模块中的(除了下划线开头的)名字一并导入
from m4 import * # 通常不建议导入*,当需要使用模块中绝大部分名字时才考虑使用*
print(a)
a() a = 20 # 两个py文件中的名 a 存在都是合理的
# 但是import 后的 #
# 需求:内部已存在了_卡头的名字,还想被外界通过*导入
# 本质:导入*其实就是导入__all__列表中存放的索引名字,系统默认不会收入_开头的名字
# 我们可以通过__all__指名道姓导入_开头的文件 """
from 模块名 import 名字1,名字2.。。。。
可以指名道姓导入模块中所有想导入的名字 from 模块名 import *
# 导入的是模块中的__all__这个列表
# 1.系统默认该列表不会收录_开头的名字
# 2、可以自定义__all__列表来规定外界通过*可以导入的名字 不建议直接导入*,容易出现变量重名。 """

注:每一个模块在被导入的时候都会产生一个自己的全局名称空间,且互不影响。

  多次导入,只会编译执行模块一次,将其加载到内存中,之后都是直接对名字的引用。

三、自执行与模块被调用的区别:(__name__)

  1. 在python中文件自己执行的文件属于自执行模块,他与被调用的模块之间的本质却别在于:
    1. 在py文件作为模块被使用的时候,__name__为模块名。
    2. 在py文件自执行的时候,__name__为字符串'__main__'
print("共有逻辑")
if __name__ == '__main__':
# 所有自执行的逻辑
print("m6: 我是自执行的")
a = 10 # 产生的是全局的名字
else:
# 所有模块的逻辑
print("m6: 我被导入执行的")
# print(a) # 会报错:走else就不可能走if,所以a压根没产生

day15--认识模块、导入模块、自执行与模块的区别的更多相关文章

  1. Day15模块(导入,使用)

    Day15模块 什么是模块: 一系列功能的集合体 一个py文件就是一个模块 aaa.py就是aaa模块 模块四种形式: 内置的模块 py文件 第三方的 包 模块三种来源:内置的,第三方,自定义 为什么 ...

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

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

  3. python 模块导入

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

  4. python模块导入总结

    python模块导入总结 模块导入方式 定义test.py模块 def print_func(): print("hello") import 语句 导入模块语法 import m ...

  5. 第10.1节 Python的模块及模块导入

    一. 什么是模块 Python中的模块即单个的Python代码文件,为什么称为模块呢?这是因为在Python中,每个独立的Python文件都可以作为被其他代码导入的模块使用,导入的模块有自己的名字空间 ...

  6. js模块导入/导出大全

    说明 module.exports与exports是CommonJS的规范 export与export default是es6规范 require 是 AMD规范引入方式 import是es6的一个语 ...

  7. python random模块导入及用法

    random是程序随机数,很多地方用到,验证码,图片上传的图片名称等,下面说说python random模块导入及用法 1,模块导入 import random 2,random用法 random.r ...

  8. Python 的 time 模块导入及其方法

    时间模块很重要,Python 程序能用很多方式处理日期和时间,转换日期格式是一个常见的功能,讲解一下Python 的 time 模块导入及其方法. 1,time 模块导入 import time; # ...

  9. python27期day15:自定义模块、模块导入、模块的路径、模块的查找顺序、time、datetime、random、os、sys、作业题

    1.模块的介绍: py文件就是一个模块 2.模块的分类:内置模块:python标准库 200 第三方模块 自定义模块 3.为什么学习模块? 开发效率高,内置函数和模块 减少重复代码,分文件管理,有助于 ...

随机推荐

  1. JavaScript 基础(三) - Date对象,RegExp对象,Math对象,Window 对象,History 对象,Location 对象,DOM 节点

    Date对象 创建Date对象 //方法1:不指定参数 var date_obj = new Date(); alert(date_obj.toLocaleString()) //方法2:参数为日期字 ...

  2. Android gravity和layout_gravity的区别

    一.gravity和layout_gravity相同处 两者都是设置对齐方式的属性.内部的属性值相同. 根据英文意思也能理解其中的意思.如center_horizontal表示在水平方向上的位置为中间 ...

  3. python base64 decode incorrect padding错误解决方法

    个人觉得原因应该是不同的语言/base64库编码规则不太统一的问题. python中base64串的长度需为4的整数倍,故对长度不为4整数倍的base64串需要用"='补足 如下代码: da ...

  4. html:常见行内标签,常见块级标签,常见自闭合标签

    本文内容: 常见行内标签 常见块级标签 常见自闭合标签 首发日期:2018-02-12 修改: 2018-04-25:删除了不常用的标签 常见行内标签: 什么是行内标签: 行内标签就是在页面内只占据刚 ...

  5. VirtualBox网络连接方式

    VirtualBox图形界面下有四种网络接入方式,它们分别是: 1.NAT 网络地址转换模式(NAT,Network Address Translation) 2.Bridged Adapter 桥接 ...

  6. [20190329]探究sql语句相关mutexes补充2.txt

    [20190329]探究sql语句相关mutexes补充2.txt --//昨天测试sql语句相关mutexes,看看如果出现多个子光标的情况. 1.环境:SCOTT@book> @ ver1P ...

  7. SqlServer2017下载地址

    https://www.microsoft.com/zh-CN/download/details.aspx?id=55994

  8. Json.net日期格式化设置

    Json.net默认的时间格式化后带T,不符合一般的业务要求,重新设置JSON.NET的默认日期格式化方式,代码如下: /// <summary> /// Json.net默认转换设置 / ...

  9. 归并排序python实现

    归并排序python实现 归并排序 归并排序在于把序列拆分再合并起来,使用分治法来实现,这就意味这要构造递归算法 首先是一个例子 原序先通过一半一半的拆分,然后: 然后再一步一步的向上合并,在合并的过 ...

  10. 百度地图和高德地图结合在web中的使用(二)

    百度地图在web中的使用(二) 背景:在做一个关于地理位置字段时,初始位置使用百度地图获取时失败,获取的位置信息不准确,奈何产品说友商好使的啊,F12看后是采用的高德,所以在这采用高德地图获取初始位置 ...