初识python模块
2021/11/23 17:11:41
本文主要是介绍初识python模块,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1. 面向过程编程(理论)
面向过程编程好比在设计一条产品流水线,分布解决问题。
例如用户注册功能
- 获取用户名和密码
- 组织成固定格式
- 文件操作写入文件
设计简单,思路清晰
请看例子:
def get_info(): username = input('用户名>>>:').strip() pwd = input('密码>>>:').strip() if len(username)==0 or len(pwd)==0: print('用户名或密码不能为空') return return deal_data(username, pwd) def deal_data(username, pwd): data = '{}|{}\n'.format(username, pwd) return save_data(data) def save_data(data): with open(r'userinfo.txt', 'a', encoding='utf8') as f: f.wriet(data) get_info() # 简单的面向过程编程用户注册案例
2. 模块简介
python语言最早起源于Linux运维,被称作胶水语言,调包侠。
-
什么是模块???
模块:一系列功能的结合体 -
为什么要用模块???
为了提升开发效率(站在巨人的肩膀上) -
模块的三种来源
- 内置模块(python解释器自带)
- 第三方模块(别人写好发布在网上的,基于网络下载再使用)
- 自定义模块(自己写的)
-
模块的四种表现形式
-
使用python编写的代码(.py文件)
-
已被编译为共享库或DLL的C或C++扩展。
-
包好一组模块的包(文件夹)
包其实就是多个py文件(模块)的集合。
包里面通常会含有一个__init__.py文件。 -
使用C编写并链接到python解释器的内置模块
1、3重点掌握
-
我们学习完模块之后,以后再编写大型项目的时候,遇到一些比较复杂的功能,可以先考虑是否有相应的模块可以调用。
3. import句式
注意:在学习模块的时候,一定要区分谁是导入文件,谁是模块文件。
# 该运行文件名为import句式.py import md # md,py文件的名字,导入py文件模块文件后缀一定不要加。 # 如果多次导入相同的模块,只会执行一次 """ 我们来看下首次导入md模块时会发生哪些事情 1.运行导入文件(import句式.py)产生该文件的全局名称空间。 2.运行md.py文件 3.产生md.py的全局名称空间,运行md文件内部代码, 将产生新的名字全部存放于md.py的名称空间。 4.在导入文件名称空间中产生一个md的名字指向md.py全局名称空间。 """ # import句式导入模块后 # 通过模块名.点的方式就可以使用到模块中的所有名字, # 并且肯定不会产生冲突(指名道姓的找)。
4. from...import...句式
from md import money # from ... import ...多次导入相同模块也只会执行一次 """ 导入时会发生: 1.先产生执行文件的全局名称空间 2.执行模块文件,产生模块的全局名称空间 3.将模块中执行之后产生的名字全部存档于模块名称空间中。 4.在执行文件中有一个money指向模块名称空间中money指向的值。 """ # from...import...指名道姓的导入某个名字 # 在使用的时候直接写名字即可,但是当前名称空间有相同名字的时候。 # 就会产生冲突,使用的就变成了当前名称空间。
5. 导入模块扩展用法
-
起别名,既可以给模块起别名,也可以给模块中某个名字起别名。
import ssxxxxxxxxx as ssx(别名) from modddddddd import name as n(别名)
-
连续导入
from time, os, sys, json... # 导入模块名推荐分开写(除非两个模块功能相似,或者属于同一个系列) # 推荐如下: import os import sys import time import json from 模块名 import 名字1,名字2,名字3...
-
通用导入
from md import * # 将md中的所有名字全部导入,主要结合from句式。 # 同时在md.py文件中可以指定别人用*号时可以导入的名字。 __all__ = ['money', 'read1'] # 列表中为md.py文件中的名字
-
判断文件类型
# 判断py文件是作为模块文件,还是执行文件 print(__name__) # __name__方法,当文件是执行文件时,会返回__main__,如果文件是被当作模块导入, # 则返回文件名(模块名) if __name__ == '__main__': 作为执行文件时运行的代码 """在pycharm中可以直接敲main按tab键即可自动补全上述代码"""
6. 循环导入问题
# 运行文件名:循环导入.py import m1 # 模块文件名:m1.py print('正在导入m1') from m2 import y x = 'm1' # 模块文件名:m2.py print('正在导入m2') from m2 import x y = 'm2' -------------------------------------- # 这样在执行运行文件时会报错,出现循环导入的问题 """ ImportError: cannot import name 'x' from partially initialized module 'm1' (most likely due to a circular import) """ """ 以后我们在导入模块的时候,如果出现了循环导入的情况, 说明你的程序设计不合理。 通常是不允许出现循环导入现象的!!!! """ 但是想要一错再错的补救时可以采取如下方法: 1.调换顺序 彼此将导入的句式放在代码的最后 2.函数形式 将导入句式封装到函数内部,等待所有名字加载完毕之后再调用。 原理都是调换顺序,只是方式不同而已。
7. 模块的导入顺序
- 在内存中查找
- 内置模块中查找
- 系统路径找sys.path(自定义模块)
如果都没有查找到则报错
# 注意:在给py文件命名时,尽量不要与内置模块冲突。 import sys print(sys.path) # 结果中第一个元素永远是当前执行文件所在的路径。 # 当某个自定义模块查找不到的时候 方式一: 自己动手将该模块添加到sys.path中 sys.path.append('该模块所在的路径') 方式二: from...import...句式 from 文件夹名称.文件夹名称...import 模块名 from 文件夹名称.模块名称...import 名字
8. 绝对导入和相对导入
未完待续
这篇关于初识python模块的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Python基础编程
- 2024-11-25Python编程基础:变量与类型
- 2024-11-25Python编程基础与实践
- 2024-11-24Python编程基础详解
- 2024-11-21Python编程基础教程
- 2024-11-20Python编程基础与实践
- 2024-11-20Python编程基础与高级应用
- 2024-11-19Python 基础编程教程
- 2024-11-19Python基础入门教程
- 2024-11-17在FastAPI项目中添加一个生产级别的数据库——本地环境搭建指南