python 模块import(26)
一.模块简介
python开发中,每一个.py文件都可以看作是一个模块,模块内部的函数或者方法可以被其他模块调用,至于函数或者方法是具体如何实现的,调用者不需要关心。
假如项目中既含有UI也有逻辑代码还有功能实现,如果全写在一个py文件,可能会有几万甚至十几万行代码,显得代码很臃肿,为了方便代码阅读和维护,我们可以将项目拆分为多个模块,不同的模块实现不同的功能,这样分工合作开发效率也高,而且就算出现bug也方便定位。
二.模块分类
1.系统内置模块
python中有一些内置模块我们直接调用,比如:sys、time、json等,具体使用方法我们在调用模块中详细讲解;
2.第三方开源模块
安装第三方开源模块,可以直接cmd打开控制台或者打开pycharm终端运行 pip install <模块名> 即可,前提是anacoanda已经安装正确,例如:学习爬虫的时候需要安装request
pip install request
3.自定义模块
除了前面两种模块,我们也可以自己写模块来供自己调用,具体实现什么功能有自己决定,在后面的模块调用中会有详细讲解,值得注意的是:模块名字不能和内置模块名字一样,会造成冲突;
三.调用模块
使用 import关键字 导入模块,并放置在代码最开始位置;同一个模块不管执行了多少次 import <模块名>,实际上只会被导入一次。
为了讲解关于模块的调用方法,假如我们有一个计算加减乘除的模块文件calculator.py,代码如下:
# !usr/bin/env python
# -*- coding:utf-8 _*-
"""
@Author:何以解忧
@Blog(个人博客地址): shuopython.com
@WeChat Official Account(微信公众号):猿说python
@Github:www.github.com @File:calculator.py
@Time:2019/10/11 21:25 @Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
""" # 定义一个全局变量
name = "calculator" # 加法
def add(x,y):
return x+y # 减法
def sub(x,y):
return x-y # 乘法
def multiplication(x,y):
return x*y # 除法
def division(x,y):
return x/y # 使用内置函数eval计算表达式的结果,如果表达式有误,直接抛异常
def get_result(input_str):
try:
return eval(input_str)
except Exception as e:
print("表达式输入异常!")
return None
如果已经忘记python 异常处理的小伙伴请参考: python 异常处理详细讲解
1.import <模块名>
新建一个py文件,用于调用模板文件 calculator.py 中的函数,代码如下:
# 导入模块
import calculator # 调用calculator模块中的add函数 : 模块名.函数名 或者 模块名.变量名
result = calculator.add(2,5)
print(result) # 调用calculator模块中的sub函数 : 模块名.函数名 或者 模块名.变量名
result = calculator.sub(2,5)
print(result) # 调用calculator模块中的multiplication函数 : 模块名.函数名 或者 模块名.变量名
result = calculator.multiplication(2,5)
print(result) # 调用calculator模块中的add函数 : 模块名.函数名 或者 模块名.变量名
result = calculator.division(2,5)
print(result) # 调用calculator模块中的get_result函数 : 模块名.函数名 或者 模块名.变量名
result = calculator.get_result("3+2*8-40")
print(result) # 调用calculator模块中的name变量 : 模块名.函数名 或者 模块名.变量名
print(calculator.name)
输出结果:
7
-3
10
0.4
-21
calculator
注意:调用模块中的函数时需要指明函数或者变量来自哪个模板:<模块名>.函数名 <模块名>.变量名
2.from <模块名> import <函数或者变量>,<函数或者变量>,<函数或者变量>…..
做一个简单理解,从哪个模块导入哪些函数或者变量,外部导入模块后调用时只能调用导入的函数或者变量,模块中没有导入的变量或者函数不能调用,示例代码如下:
'''
从模块calculator中导入add,sub两个函数,
意味着调用calculator模块时,只能调用add,sub两个函数,
calculator 模块中的其他变量或者函数无法调用
''' from calculator import add,sub # 在代码顶部已经声明add函数从calculator导入,可以直接使用,不需要带上模板名
result = add(2,5)
print(result) # 在代码顶部已经声明sub函数从calculator导入,可以直接使用,不需要带上模板名
result = sub(2,5)
print(result) # 错误写法:该模块并没有导入name变量
# result = multiplication(2,5) # 错误写法:该模块并没有导入name变量
# result = division(2,5) # 错误写法:该模块并没有导入name变量
# result = calculator.get_result("3+2*8-40") # 错误写法:该模块并没有导入name变量
# print(calculator.name)
3.from <模块名> import *
这种写法表示直接导入模块中的所有内容,意味着模块中的函数或者变量都可以使用,该写法实际上和第二种导入方法类似,示例代码如下:
# 导入calculator 模块中所有函数和变量
from calculator import * # 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名
result = add(2,5)
print(result) # 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名
result = sub(2,5)
print(result) # 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名
result = multiplication(2,5)
print(result) # 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名
result = division(2,5)
print(result) # 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名
result = get_result("3+2*8-40")
print(result) # 在代码顶部已经声明导入calculator模块所有内容,可以直接使用,不需要带上模板名
print(name)
输出:
7
-3
10
0.4
-21
calculator
使用该方法导入模块时有一个缺陷:如果同时导入多个模块文件,如果模块中的函数或者变量重名,编译器也不知道具体是用哪一个模块重名的函数或者变量,会造成意想不到的bug,往往这种bug最难查找!
四.简单的计算器
利用上面的calculator模块,再加上前面的python基础知识,其实我们已经可以写一个简单的计算器了,唯独没有界面而已,至于界面后面会有pyqt5的教程,暂时不做过多讲解。计算器代码如下:
# 导入内置模块time,计算耗时,默认单位秒
import time
# 导入calculator 模块
import calculator while True:
# 获取表达式
input_str = input("请输入表达式:")
if input_str == 'q': # 输入 q 退出程序
break
time_start = time.clock()
print(calculator.get_result(input_str))
time_end = time.clock()
# 将 秒 转为 毫秒
print("计算耗时:{}毫秒".format((time_end-time_start)*1000)) print("退出计算,程序结束!")
测试结果:
五.重点总结
1.注意模块的几种导入方式,python开发中推荐使用写法一的方式导入:import <模块名>;
2.注意内置函数和内置模块的区别:内置函数是任何模块都可以直接调用,内置模块需要import模块之后才能调用模块里面的函数;
3.不同的模块中可以存在相同的变量名或者函数名,但是不能与内置函数名或者内置模块名字重复,避免造成冲突;
猜你喜欢:

python 模块import(26)的更多相关文章
- Python模块import本质是什么?import是什么
写这篇文章主要是对Python的import模块或包的机制有了更深层级的一个理解,也在具体工作中得到了一点实践,这种思考是由上一篇文章<__main__内置模块预加载Shotgun接口的妙用 ...
- python模块import具体用法
同级目录 import 文件名 form 文件名 import * 子目录 import 目录名.文件名 form 目录名.文件名 import * 不同目录 先导入sys包,然后把对应的目录加入pa ...
- Python标准模块--import
1 模块简介 作为一个Python初学者,你首先要学会的知识就是如何引入其它模块或者包.但是,我发现有些开发者虽然使用Python很多年,依然不了解Python引入机制的灵活性.这篇文章,我们就会研究 ...
- 浅析python 的import 模块(转)
摘要: 学习python有几天了,对import一直不是很清楚,和C里面的include是否一样,重复引入有问题么?搜索路径是怎样的?整理解决下我的疑问. 一 模块的搜索路径 模块的搜索路径都放在了s ...
- python 导入模块 import 理解
--python 导入模块 import 理解 -----------------------------------2014/03/18 python 导入一个模块的过程要求有一个叫做“路径搜索”的 ...
- 小白的Python之路 day5 python模块详解及import本质
一.定义 模块:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能) 本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块 ...
- linux环境下 python环境import找不到自定义的模块
linux环境下 python环境import找不到自定义的模块 问题现象: Linux环境中自定义的模块swport,import swport 出错.swport模块在/root/sw/目录下. ...
- python 全栈开发,Day28(复习,os模块,导入模块import和from)
一.复习 collections 增加了一些扩展数据类型 :namedtuple orderdict defaltdict队列和栈time 时间 三种格式 : 时间戳 结构化 字符串random 随机 ...
- python 模块相互import
模块A中import B,而在模块B中import A.这时会怎么样呢?这个在Python列表中由RobertChen给出了详细解释,抄录如下: [A.py] from B import D clas ...
随机推荐
- GitHub中PR(Pull request)操作
1. 贡献代码: 贡献代码,通俗的说,就是自己修改了代码,希望合并到别人的Repository(仓库)中.将自己的智慧贡献给开源社区.下面将详细讲解步骤 1.1 第一步:fork 在GitHub社区闲 ...
- luogu 4587
假设当前已经组合好了 $[1, x]$ ,设 $ans = x + 1$ :显然初始时 $x = 0, ans = 1$ 我们另 $y = \sum_{i = l} ^ {r} (w_i <= ...
- 时隔五年,Scrapyd 终于原生支持 basic auth
Issue in 2014 scrapy/scrapyd/issues/43 Pull request in 2019 scrapy/scrapyd/pull/326 试用 1. 安装: pip in ...
- 在被open(url)打开的子页面往父页面传值时候这样
function fnqd(zj,rwmc){ window.parent.opener.document.getElementById("jcrwModel_sjrwzj").v ...
- Java核心复习——J.U.C ArrayBlockingQueue源码分析
介绍 依赖关系 源码 构造方法 public ArrayBlockingQueue(int capacity) { this(capacity, false);//默认构造非公平的有界队列 } pub ...
- Kafka 最新版配置
当前基于kafaka最新版 kafka_2.12-2.2.1.tgz 进行配置 . 官网地址:http://kafka.apache.org/intro kafka的一些基础知识 参考:http:// ...
- IdentityServer4入门四:应用Implicit模式保护网站(下)
为认证服务端增加数据库支持 我计划使用一个名为Admin的表,放在一个已有的数据库里.所以我需要定义Admin类和在配置里预先加上数据库连接 新增类:Admin.cs public class Adm ...
- 微信小程序开发步骤简述
1.登陆微信的开发这平台 2.找到小程序开发选项进入,填写注册自己的小程序信息 3.下载相应的开发者工具 4.通过开发者工具把自己的项目代码上传,上传时会让你填写自己小程序的appid这样项目代码就和 ...
- [软工]Github的使用
注册 修改个人信息 fork项目 使用github客户端 commit项目 发送PR 注意事项 不要使用上述项目进行试验 建议Github用户名有规律,好记忆
- TP框架修改后台路径方法
直接映射 admin 后台修改路径为 myadmin888 文章来源:外星人来地球 欢迎关注,有问题一起学习欢迎留言.评论