博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python之旅.第四章.模块与包
阅读量:6711 次
发布时间:2019-06-25

本文共 2659 字,大约阅读时间需要 8 分钟。

一、模块的使用之import

1 什么是模块? 模块就一系统功能的集合体,在python中,一个py文件就是一个模块,比如module.py,其中模块名module 2 使用模块 2.1 import 导入模块 首次导入模块发生三件事 1、创建一个模块的名称空间 2、执行模块对应文件,将产生的名字存放于1中的名称空间 3、在当前执行文件中拿到一个模块名,该模块名指向1的名称空间 import spam 强调:之后的导入会直接引用第一次导入的结果,不会重复执行文件 import spam import spam import spam import spam import spam #以上导入的是第一次导入的结果 print(spam) 模块中功能的执行始终以模块自己的名称空间为准 read1=111111 print(spam.read1)#调用了spam模块中read1函数,输出的是spam模块中的read1
money=1111111111111111 spam.change()  #调用了spam模块中change函数,函数功能修改money的值,最最后修改的还是spam模块中的值,跟执行文件中的money无关 print(money) spam.read1()
3、为模块起别名 import spam as sm #将模块名spam改为sm,调用spam模块中的功能,用sm调用就可以了,主要用于某些模块名过长,改为简写,更方便调用 print(sm.money) sm.read1() engine=input('>>: ').strip() #根据输入判断要用什么模块,模块名都改为相同的 if engine == 'mysql':     import mysql as db elif engine == 'oracle':     import oracle as db db.parse()  #调用时根据输入的模块名来执行 4、一行导入多个模块(不推荐使用) import spam,mysql,oracle 推荐写成多行 import spam import mysql import orcacle

二、模块的使用之from...import...

首次导入模块发生三件事 1、创建一个模块的名称空间 2、执行模块对应文件,将产生的名字存放于1中的名称空间 提示:from 。。。 import。。与import前两件事一模一样 3、在当前名称空间中直接拿到模块中的名字,可以直接使用,不用加任何前缀 import spam # spam.名字 #调用功能方法:模块名.功能名 from spam import money,read1,read2,change #用drom。。。import。。。调用模块,提前把功能名写出来,这样调用所需要的功能时就不需要写名字了 print(money) read1() read2() change() ———————————————————————————————————————————————————————————————— import spam print(money) 注意: 1、同import,执行模块中的功能,始终以模块的名称空间为准 money=1111111111 spam.change() #调用spam模块中的change功能,把money的值替换为0 print(money)  #输出发现money的值为111111111111,也就是说,模块功能中改变的也只是模块中money的值 ———————————————————————————————————————————————————————————————— 2、from ... import 名字,拿到的名字可以不加前缀直接使用,使用起来更加方便 当问题是容易与当前执行文件中相同的名字冲突 money=1111111111111111 print(money)#先从当前开始找money,在当前找到了就执行当前的money,没有找到再去模块中找,所有,不要把变量名定义与模块中的功能相同 read1=1111111 read1()
———————————————————————————————————————————————— #如果功能太多的话,一个个写不太现实,一般就用*代替所有功能 #注意,因为有些功能有用,有些功能不常用,所有模块设计者就用__all__把常用的功能放入其中,*也就只能调用常用的功能了
__all__=['money','read1'] # from .. import *
from ... import * from spam import * #调用spam模块内所有可以被*调用的功能 print(money) print(read1) print(read2) print(change)

三、模块的搜索路径

import m1 m1.f1() 模块的查找顺序是: 1、内存中已经加载的模块 2、内置模块 3、sys.path路径中包含的模块 import time #调用模块time import m1 #调用ml m1.f1() time.sleep(15)  #用15秒时间删除ml,试试下面的ml还能不能用 import m1   #还可以使用,因为第一次调用模块ml就已经存在内存中了,只要程序不结束,内存中的模块ml就不会清空,可以一直调用 m1.f1() import sys print('time' in sys.modules)#sys.module被导入的包 #结果为False,因为还没有导入time模块 import time time.sleep(2) print('time' in sys.modules)#结果为True,因为上面导入了time模块
import sys sys.path.append(r'D:\code\SH_fullstack_s1\day14\dir1')#将文件地址加入sys.path中
import m1 m1.f1() 强调强调强调强调强调强调强调强调强调强调强调强调 sys.path的第一个路径是当前执行文件所在的文件夹

转载于:https://www.cnblogs.com/yangli0504/p/8708625.html

你可能感兴趣的文章
java.util.Date和java.sql.Date的区别和相互转化
查看>>
selenium面试题总结
查看>>
本次孩子流感总结
查看>>
Baby Ming and Matrix games(dfs计算表达式)
查看>>
eclipse代码提示框背景色改动
查看>>
April Fools Day Contest 2016 G. You're a Professional
查看>>
在Ubuntu的系统中怎样将应用程序加入到開始菜单中
查看>>
SDL绑定播放窗口 及 视频窗口缩放
查看>>
BIO与NIO、AIO的区别(这个容易理解)
查看>>
springboot+mybatis+ehcache实现缓存数据
查看>>
MUI 选项卡切换+下拉刷新动态 完整实现一例
查看>>
2017年11月GitHub上最热门的Java项目出炉
查看>>
Vim操作的四种模式
查看>>
CentOS下的yum upgrade和yum update区别,没事别乱用,和Ubuntu的update不一样!
查看>>
Web Service——CXF发布REST服务
查看>>
js进阶 11-22/23 js如何实现选项卡
查看>>
[WPF 容易忽视的细节] —— x:Name与Name属性
查看>>
asp.net Core多环境读取Json
查看>>
beamer 模板
查看>>
Max Sum
查看>>