4.Python3基础入门学习笔记(四)
2023-06-13 09:13:28 时间
[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!
#""""""""""""""" Demo\Module.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进行格式化输出
相关文章
- Python3对多股票的投资组合进行分析「建议收藏」
- Python3 命令行参数解析
- python3 基础 廖雪峰教程笔记-1
- Python3外置模块使用
- 1.Python3基础入门学习笔记(一)
- 使用ResNet101作为预训练模型训练Faster-RCNN-TensorFlow-Python3-master[通俗易懂]
- python3_基础
- Python3程序捕获Ctrl+C终止信号
- python3 解析 json 字符串并返回支持属性访问的对象
- Centos7 下安装python3及卸载的教程
- python3-开发面试题(python)6.22基础篇(1)详解编程语言
- python3开发进阶-Django框架中form的查看校验方法is_valid()的源码,自定义验证方法详解编程语言
- Python3 获取网络图片并且保存到本地详解编程语言
- Python3:pyecharts数据可视化插件详解编程语言
- Python3.x:常用基础语法详解编程语言
- Python3.x:基础学习详解编程语言
- Python3.x:os.listdir和os.walk(获取路径方法)的区别详解编程语言
- Python3.x:bs4解析html基础用法详解编程语言
- Python3基础之基本运算符概述