Python3入门学习四.md
时间:2022-07-28
本文章向大家介绍Python3入门学习四.md,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
[TOC]
15.Python 模块
描述:模块就是更高级的封装,而模块就是程序;实际就是将一个个python文件编写的函数导入到其他的py文件中进行调用;
前面知识点:
- 容器(数据的封装),
- 函数(语句的封装),
- 类(方法和属性的封装)
关联知识点:
- 命名空间:指定该模块名和模块内的方法名称进行拼接如hello.hi()
模块优点:
- 代码阅读编写方便,模块化编程
- 实现代码的重用
- 优雅/明确/简单
(1) 导入与选择执行
案例:
#/usr/bin/python3
#导入外部模块验证
## 项目结构
# Day4
# │ demo4.1.py
# │ TemperatureConversion.py
########### 案例1 ##############
#方法1:import TemperatureConversion
#方法2:from TemperatureConversion import c2f,f2c #导入指定模块(不用考虑namespace)
#方法3:from TemperatureConversion import * #不建议此种方法(可能导致命名空间混乱)
#方法:import TemperatureConversion.c2f #导入指定包的指定模块
#方法4:如下(经常)
import TemperatureConversion as Temp
print("32 摄氏度 = %.2f华氏度" %Temp.c2f(32))
print("99 华氏度 = %.2f摄氏度 " %Temp.f2c(99))
########### 案例2 ##############
print(Temp.__name__) #显示的是模块名称
############# 执行结果 ###############
# 32 摄氏度 = 89.60华氏度
# 99 华氏度 = 37.22摄氏度
# TemperatureConversion
# """""""""""""" TemperatureConversion.py """"""""""""""" #
def c2f(cel):
'''摄氏度转华氏度'''
fah = cel * 1.8 + 32
return fah
def f2c(fah):
'''华氏度转摄氏度'''
cel = (fah - 32) / 1.8
return cel
def test():
print("测试 0 C = 0.2f F", c2f(0))
print("测试 0 F = 0.2f C", c2f(0))
#让Python知道是运行还是导入到模块
if __name__ == '__main__': #只有在自身模块文件内才执行test()
print("__name__ 在主程序中显示的是该模块名称, 如果在定义声明文件中执行则显示main : ",__name__) #在本程序TemperatureConversion.py中显示的是main (主程序调用仍然是模块名称)
test()
(2)搜索路径与包package 上面的案例都是模块与主执行文件在同一个目录里面,但是在实际开发中往往是在其他文件子目录中; Q:那我们如何进行模块的搜寻?
>>> import sys
>>> sys.path
['', 'D:\Python3\python37.zip', 'D:\Python3\DLLs', 'D:\Python3\lib', 'D:\Python3', 'C:\Users\Administrator\AppData\Roaming\Python\Python37\site-packages', 'D:\Python3\lib\site-packages'(推荐), 'D:\Python3\lib\site-packages\easygui-0.98.1-py3.7.egg'] # 导入模块时候,Python 在上面的路径中进行查询模块信息并导入
#可以利用 sys.path.append() 进行加入路径到其中
Q:什么是包(Package)? A:把模块进行分类存放在不同的文件夹里面,把各个文件的位置告诉Python
创建包的步骤:
- 创建一个文件夹存放相关的模块,文件夹名字即是包的名字;
- 在包目录下创建一个init.py (可以为空)
- 将相关模块放入文件夹中,并修改主程序导入包的设置
案例:
#!/usr/bin/python3
#模块:案例包导入模块主程序
## 项目结构
# │ demo4.2.py
# ├─Demo
# │ │ Module.py
# │ │ __init__.py
from Demo.Module import success #在指定的Demo包下面找到模块并导入模块里面的函数(可直接调用)
success() #直接调用
########## 执行结果 ##############
# 亲,您成功从包里导入模块中的函数到主程序里面,Yes!
#""""""""""""""" DemoModule.py """"""""""""""#
#!/usr/bin/python
#功能:模块测试程序
def success():
print("亲,您成功从包里导入模块中的函数到主程序里面,Yes!")
(2) 补充说明 描述:Python标准库自己带有一些常用的模块,但是一些高阶用法还是需要查询官网的Document;
Python IDLE - Help - Python Doc(按F1也可以)
https://docs.python.org/3.7/
#发布自己的模块 pypi模块
Distributing Python Modules :publishing modules for installation by others
#扩展与嵌入 c/c++
Extending and Embedding :tutorial for C/C++ programmers
#API接口使用
Python/C API : reference for C/C++ programmers
#补充:
PEP是Python Enhancement Proposals的缩写(Python增强建议书的意思,用来规范与定义Python各种加强与衍生的功能的技术规格让开发者能共同遵循的依据),
学习一个模块的重要方法:
>>> import time
>>> dir(time)
>>> help(time)
#注意当来什么模块进行导入时候就是 * 号 , 在存在__all__ 情况下只会导入下面的模块
>>> timeit.__all__
['Timer', 'timeit', 'repeat', 'default_timer']
>>> timeit.__file__ #模块的源代码文件
'D:\Python3\lib\timeit.py'
>>> timeit.__doc__ #显示帮助可采用print进行格式化输出
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- VS Code开发React-Native及Flutter 开启无线局域网安卓真机调试问题
- Laravel5.4简单实现app接口Api Token认证方法
- PHP生成zip压缩包的常用方法示例
- Android Studio用genymotion运行后小图标无法显示问题
- PHP7数组的底层实现示例
- 浅析Flutter AbsorbPointer 与 IgnorePointer的区别
- php用wangeditor3实现图片上传功能
- Flutter集成到已有iOS工程的方法步骤
- php的命名空间与自动加载实现方法
- Android Studio实现简易计算器(表格布局TableLayout)
- php常用经典函数集锦【数组、字符串、栈、队列、排序等】
- php实现的表单验证类完整示例
- Android studio实现简单的计算器
- Thinkphp5框架实现获取数据库数据到视图的方法
- thinkphp5框架结合mysql实现微信登录和自定义分享链接与图文功能示例