day31 模块 与包
# 自定义模块
# 内置模块 time re sys os
# 第三方模块/扩展模块
# 自定义模块 *****
# 模块的创建 导入 模块名
# import
# 模块的命名空间
# 在导入模块的时候发生了什么?
# 那么这个模块的名字能够找到这个模块所在的内存空间,任意使用里面的名字
# 为模块起别名 as
# 导入多个模块
# from import
# 模块的命名空间
# 在导入模块的时候发生了什么?
# 只导入模块中的某一个名字,其他没有导入的不能直接使用
# 为模块起别名 as
# 导入多个名字
# 可以 from 模块 import 名字1,名字2
# 也可以 from 模块 import * 一般情况下不用
# *和__all__
# 模块的循环引用 - 一定会报错
# 模块的加载与修改(了解)
# import importlib
# importlib.reload(模块名)
# 把模块当做脚本来执行(*****)
# if __name__ == '__main__'下面的代码只有在直接执行这个文件的时候才被执行
# 模块搜索路径
# sys.path
# 第一个元素 是你当前执行的py文件所在的目录
# 所以同目录下的py文件的导入都不会报错
# 如果要导入的文件不是同目录下的,需要自己修改sys.path目录
# 包 ***
# 导入模块 常用的
# import
# from import
# 导入包
# __init__文件 在导入包的时候执行这个包下的__init__方法
# 绝对导入,永远要注意路径的问题
# 相对导入,永远不要直接执行使用了相对导入的文件
# __all__和* 也不是完美的,但是可以简化你的操作
# 选课系统
# ftp
# 导入模块的时候,pycharm的报错提示是不可靠的
# 导入一个模块 就是import 文件名 不带.py
import my_module # 导入模块
# 相当于执行了这个被导入的py文件
# 这个模块不会被重复导入
# import sys
# print(sys.modules)
# 内存中所有被导入的模块都会存储在sys.modules字典中
# 这个字典的key是这个模块的名字,value是这个模块的内存地址
# import my_module
# print(sys.modules['my_module'])
# print(my_module)
# 模块导入之后 可以直接使用这个模块中的函数 和 变量
# print(my_module.flag)
# my_module.read1()
# my_module.read2()
#
# def read2():
# print('in my read2')
# flag = False
# my_module.read2()
# 模块的命名空间
# 每一个模块的导入都会创建一个属于自己的命名空间
# 在导入模块的时候发生了什么?
# 1.创建一个属于这个模块的命名空间
# 2.执行这个模块中的代码
# 3.创建一个引用来调用这个模块命名空间中的名字
# 4.把导入的模块和内存地址存到sys.modules中
# import my_module as m
# 可以给导入的模块进行重命名,重命名之后新的名字会出现在内存空间中来作为模块的引用
# 但是原模块名就不能在文件中使用了
# import configparser as conf
# m.read2()
# 序列化
# json pickle
# 你提供序列化功能,帮助用户对***进行序列化
# def dump(somthing,m = 'json'):
# if m == 'json':import json as m
# else:import pickle as m
# m.dumps(somthing)
# 数据库
# oracle oracle_db
# mysql mysql_db
# if db_name == 'mysql':# import mysql_db as db
# elif db_name == 'oracle': import oracle_db as db
# db.connect()
# db.exec()
# 1.都写在文件的开始
# 2.顺序: 先导入内置的,再导入扩展的,最后导入自定义的
import os
import sys
import requests # 请求url
# 3.导入多个模块
# import os as o,sys as s,flask as f
# os.remove()
# sys.path
# 导入这个模块 相当于执行一个模块
# 导入模块 模块名作为这个模块命名空间的一个引用
# 可以使用模块名 随意的使用这个命名空间中的名字
# from my_module import flag
# from import 仍然会在导入模块的时候执行整个模块
# 仍然会把模块中所有的名字存在一个属于这个模块的命名空间中
# 区别在于 使用模块中名字的时候不需要再带着模块名
# 而是 导入了 什么名字 就能用什么名字
# 没有导入的名字不能使用
# flag = False
# print(flag)
# read2()
# my_module.read1()
# 都会完整的执行这个my_module文件
# 没被导入的其他名字就不能用了
# from my_module import flag as f,read1 as r1
# from my_module import read2
# read2()
# print(f)
# print(flag)
# read1()
# 你只用一个 from 模块 import 这个方法
# 你用10个 import 模块
# from import *
# def time():
# print('time.time')
# from my_module import *
# time()
read2()
# __all__只和*相关
# 如果不定义__all__,默认*可以导入这个模块中的所有名字
# 如果定义了__all__,那么只有出现在all这个列表中的名字可以被*导入
import importlib
print(my_module.flag)
time.sleep(20)
importlib.reload(my_module) # 测试
print(my_module.flag)
# __name__是py文件中的一个内置的变量
# 当你直接执行这个py文件的时候,这个文件中的__name__就是'__main__'
# 当你以模块的形式导入这个py文件的时候,这个文件中的__name__就是模块名的字符串
# __file__
# 写在这段代码下面的所有内容只有在当前py文件被直接run的时候才会执行
# 被导入的时候不会被执行
pass
# 脚本 : 就是一个被直接执行run的文件
# print(sys.path)
# 导入模块的时候,从这个列表中的目录下去找
# sys.path.append(r'E:\sylar\python_workspace\day31\homework')
# import core
# core.login()
# import glance.api.policy #只能也必须精确到模块
# glance.api.policy.get()
# policy.get()
# 就会直接执行这个包下面的__init__.py
# 除此之外什么也不会做
import sys
# print(sys.path)
# import glance # -->init-->import api
# glance.api.policy.get()
# 使用相对导入,不能直接执行使用了相对导入的文件
# 必须将这个存在着相对导入的包作为一个整体来使用
# 这个包对外提供功能,而不是用来直接执行这个包中的某个py文件的时候才会用到相对导入
转载于:https://www.cnblogs.com/daien522556/p/9325236.html
day31 模块 与包相关推荐
- python规范模块和包
主要内容: 1.模块 2.包 1.模块 模块分为三种: 1)内置模块 2)扩展模块 3)自定义模块 3)自定义模块 模块的创建 导入 模块名 创建: 1. 注意 模块名 需要符合变量命名规范 2. ...
- python笔记6 模块与包 程序开发规范 包 re sys time os模块
模块与包 python 模块首引用加载到内存,如果再次引用此模块,直接从内存中读取. python文件分为:执行文件(解释器运行的文件),被引用文件(import) 模块引用一共发生了3件事: 1.他 ...
- python之路——模块和包
一.模块 1.什么是模块? 常见的场景:一个模块就是一个包含了Python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用Python编 ...
- Python中的类、模块和包究竟是什么?
Python培训教程:Python中的类.模块和包究竟是什么?在Python和其他编程语言中,都有类似或相同的概念,如对象.类.模块.包,名称都是一样的,只不过会有细微的一些区别,正是因为有这些存在, ...
- python模块和包用法详解(__all__)
1. 模块 Python 模块(Module),是⼀个 Python ⽂件,以 .py 结尾,包含了 Python 对象定义和Python语句. 模块能定义函数,类和变 ...
- python类、模块、包
通常包总是一个目录,可以使用import导入包,或者from + import来导入包中的部分模块.包目录下为首的一个文件便是 __init__.py.然后是一些模块文件和子目录,假如子目录中也有 _ ...
- python入门是哪个包_python入门(十):模块、包
模块:py文件 包:目录,目录里面包含__init__.py,内容可以是空 里面可以包含多个模块文件,还可以包含子包 1.模块和包,可以很方便的提供给其他程序以复用 1) 利于组织复杂工程 我们写代码 ...
- python哪里下载import包-【Python实战】模块和包导入详解(import)
1.模块(module) 1.1 模块定义 通常模块为一个.py文件,其他可作为module的文件类型还有".pyo".".pyc".".pyd&qu ...
- python哪里下载import包-详解python中的模块及包导入
python中的导入关键字:import 以及from import 1.import import一般用于导入包以及模块. 不过有个小问题: (1)当导入的是模块的时候是可以直接可以使用模块内的函数 ...
- python 模块与包
什么是模块? 模块就是一组功能的集合体,我们的程序可以导入模块来复用模块里的功能.即一个模块就是一个包含了一组功能的python文件,比如spam.py,模块名为spam,可以通过import spa ...
最新文章
- 大数据+社会化协同 菜鸟不菜成老师
- 将数据、代码、栈放入不同的段
- 018:Django商城部署和数据库读写分离
- 用正则将html中的url提取,使用正则表达式从HTML中提取文本和链接
- Python求单词长度并根据长度排序
- 腾讯回应两块八卖《鬼谷八荒》:已下架并退款;iMac Pro 售完即停产;iCloud 识别姓氏闹乌龙 | 极客头条...
- php操作mysql数据库的扩展有哪些_PHP mysql 扩展库 操作mysql数据库步骤
- CentOS Yum 命令详解
- Linux: 多线程
- 【Spring学习笔记七】-Spring MVC基本配置和实例
- java蓝桥杯练习 学做菜
- MATLAB拟合函数使用说明
- 知乎创意总监、Dine 设计团队创始人 @disinfeqt :设计、音乐
- php 下载 xlsx
- Jsoup 解析Html源码实例
- 《编程之美》学习笔记
- tomcat的startup里为什么有突然多出来了一行这个NOTE: Picked up JDK_JAVA_OPTIONS: --add-opens=java.base/java.lang=ALL-
- 立创EDA学习2-绘制原理图(初级)
- 坦克机器人自动照看你的秘密花园
- 使用Elasticsearch做一个简易的检索式聊天机器人
热门文章
- 一核一g负载均衡不能超过多少_多核程序设计(考试题)
- oracle index logging,index在logging什么?
- pip安装tensorflow_Tensorflow源代码编译踩坑若干
- C++ 语法概括总结
- linux 离线 nfs,Linux 系统 NFS服务
- opencv python 高斯滤波_Python OpenCV实验(3):实现图像的高斯滤波处理
- ubuntu字符界面login_关于Ubuntu循环登陆界面
- 【算法笔记】数论基础:康托展开(全排列和序号之间的映射)
- 【2019西安邀请赛热身赛C:】python算数表达式求值+模拟int溢出
- php上证指数抽奖代码,[高手指点] 美团网的抽奖是什么原理?