【Python】模块,包,库一一CSDN21天学习挑战赛
本系列文章为参与【Python】CSDN21天学习挑战赛,成为更好的自己,根据自身的学习进度并记录自己的学习过程。我也是Python纯小白,和大家一起学习,保持热爱学习的好习惯😁
活动地址:CSDN21天学习挑战赛
Python3.x内置函数
函数 | 描述 | 函数 | 描述 |
---|---|---|---|
abs() | 返回数字的绝对值 | help() | 查看函数或模块用途的详细说明 |
all() | 用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True。 | hex() | 将一个指定数字转换为 16 进制数。 |
any() | 用于判断给定的可迭代参数 iterable 是否全部为 False,则返回 False,如果有一个为 True,则返回 True。元素除了是 0、空、FALSE 外都算 TRUE。 | id() | 返回对象的唯一标识符,标识符是一个整数。CPython 中 id() 函数用于获取对象的内存地址。 |
ascii() | 类似 repr() 函数, 返回一个表示对象的字符串, 但是对于字符串中的非 ASCII 字符则返回通过 repr() 函数使用 \x, \u 或 \U 编码的字符。 生成字符串类似 Python2 版本中 repr() 函数的返回值。 | input() | 接受一个标准输入数据,返回为 string 类型。在 Python3.x 中 raw_input() 和 input() 进行了整合,去除了 raw_input( ),仅保留了input( )函数,其接收任意任性输入,将所有输入默认为字符串处理,并返回字符串类型。 |
bin() | 返回一个整数 int 或者长整数 long int 的二进制表示。 | int() | 将一个字符串或数字转换为整型。 |
bool() | 将给定参数转换为布尔类型,如果没有参数,返回 False。bool 是 int 的子类。 | isinstance() | 判断一个对象是否是一个已知的类型,类似 type()。isinstance() 会认为子类是一种父类类型,考虑继承关系。如果要判断两个类型是否相同推荐使用 isinstance()。 |
bytearray() | 返回一个新字节数组。这个数组里的元素是可变的,并且每个元素的值范围: 0 <= x < 256。 | issubclass() | 判断参数 class 是否是类型参数 classinfo 的子类。 |
bytes() | 返回一个新的 bytes 对象,该对象是一个 0 <= x < 256 区间内的整数不可变序列。它是 bytearray 的不可变版本。 | iter() | 用来生成迭代器。 |
callable() | 用于检查一个对象是否是可调用的。如果返回 True,object 仍然可能调用失败;但如果返回 False,调用对象 object 绝对不会成功。对于函数、方法、lambda 函式、 类以及实现了 __call__ 方法的类实例, 它都返回 True。 | len() | 返回对象(字符、列表、元组等)长度或项目个数。 |
chr() | 用一个整数作参数,返回一个对应的字符。 | list() | 用于将元组或字符串转换为列表。元组与列表是非常类似的,区别在于元组的元素值不能修改,元组是放在括号中,列表是放于方括号中。是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。 |
classmethod() | 修饰符对应的函数不需要实例化,不需要 self 参数,但第一个参数需要是表示自身类的 cls 参数,可以来调用类的属性,类的方法,实例化对象等。 | locals() | 以字典类型返回当前位置的全部局部变量。 |
compile() | 将一个字符串编译为字节代码。 | map() | 根据提供的函数对指定序列做映射。第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。 |
complex() | 用于创建一个值为 real + imag * j 的复数或者转化一个字符串或数为复数。如果第一个参数为字符串,则不需要指定第二个参数。 | max() | 返回给定参数的最大值,参数可以为序列。 |
delattr() | 用于删除属性。 | memoryview() | 返回给定参数的内存查看对象(memory view)。所谓内存查看对象,是指对支持缓冲区协议的数据进行包装,在不需要复制对象基础上允许Python代码访问。 |
setattr() | 对应函数getattr(),用于设置属性值,该属性不一定是存在的 | dict() | 用于创建一个字典 |
slice() | 实现切片对象,主要用在切片操作函数里的参数传递。 | dir() | 不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。如果参数包含方法__dir__(),该方法将被调用。如果参数不包含__dir__(),该方法将最大限度地收集参数信息。 |
sorted() | 对所有可迭代的对象进行排序操作。sorted 可以对所有可迭代的对象进行排序操作。sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。 | divmod() | 接收两个数字类型(非复数)参数,返回一个包含商和余数的元组(a // b, a % b)。在 python 3.x 版本该函数不支持复数。 |
staticmethod() | 返回函数的静态方法。 | enumerate() | 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。 |
str() | 将对象转化为字符串格式。 | eval() | 用来执行一个字符串表达式,并返回表达式的值。 |
sum() | 对序列进行求和计算。 | exec() | 执行储存在字符串或文件中的 Python 语句,相比于 eval,exec可以执行更复杂的 Python 代码。 |
super() | 用于调用父类(超类)的一个方法。解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。MRO 就是类的方法解析顺序表, 其实也就是继承父类方法时的顺序表。 | filter() | 用于过滤序列,过滤掉不符合条件的元素,返回一个迭代器对象,如果要转换为列表,可以使用 list() 来转换。该接收两个参数,第一个为函数,第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。 |
tuple() | 将可迭代系列(如列表)转换为元组。 | float() | 将整数和字符串转换成浮点数。 |
type() | 如果只有第一个参数则返回对象的类型,三个参数返回新的类型对象。不会认为子类是一种父类类型,不考虑继承关系。 | format() | 增强了字符串格式化的功能。基本语法是通过 {} 和 : 来代替以前的 % 。format 函数可以接受不限个参数,位置可以不按顺序。 |
vars() | 返回对象object的属性和属性值的字典对象。 | frozenset() | 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。 |
zip() | 将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。我们可以使用 list() 转换来输出列表。如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表。 | getattr() | 返回一个对象属性值。 |
import() | 用于动态加载类和函数 。如果一个模块经常变化就可以使用 import() 来动态载入。 | globals() | 以字典类型返回当前位置的全部全局变量。 |
reload() | 用于重新载入之前载入的模块。 | hasattr() | 判断对象是否包含对应的属性。 |
min() | 返回给定参数的最小值,参数可以为序列 | hash() | 获取取一个对象(字符串或者数值等)的哈希值。 |
next() | 返回迭代器的下一个项目,要和生成迭代器的 iter() 函数一起使用。 | property() | 在新式类中返回属性值。 |
object() | 返回一个新的无特征对象 | range() | 返回的是一个可迭代对象(类型是对象),而不是列表类型, 所以打印的时候不会打印列表。 |
oct() | 将一个整数转换成 8 进制字符串,8 进制以 0o 作为前缀表示。 | repr() | 将对象转化为供解释器读取的形式。 |
open() | 用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。 | reversed() | 返回一个反转的迭代器。 |
ord() | 是 chr() 函数(对于 8 位的 ASCII 字符串)的配对函数,它以一个字符串(Unicode 字符)作为参数,返回对应的 ASCII 数值,或者 Unicode 数值。 | round() | 返回浮点数 x 的四舍五入值,准确的说保留值将保留到离上一位更近的一端(四舍六入)。精度要求高的,不建议使用该函数。 |
pow() | 返回 xy(x的y次方) 的值。 | set() | 创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 |
print() | 用于打印输出,最常见的一个函数。 |
基本函数print & input
print()
print
:在控制台打印内容,print默认输出是换行的,如果要实现不换行需要在变量末尾加上 end=""
在控制台打印带特殊样式的内容
显示模式
建议常量名称 颜色 值 MODE_DEFAULT 终端默认设置 0 MODE_HIGHLIGHT 高亮显示 1 MODE_UNDERLINE 使用下划线 4 MODE_FLICKER 闪烁 5 MODE_INVERSE 反白显示 7 MODE_INVISIBLE 不可见 8
设置打印内容的前景色,可以理解为字体颜色
前景色
建议常量名称 前景色 值 FOREGROUND_BLACK 黑色 30 FOREGROUND_RED 红色 31 FOREGROUND_GREEN 绿色 32 FOREGROUND_YELLOW 黃色 33 FOREGROUND_BLUE 蓝色 34 FOREGROUND_PURPLE 紫红色 35 FOREGROUND_CYAN 青蓝色 36 FOREGROUND_WHITE 白色 37
设置打印内容的背景色,打印内容整块都会显示该颜色
背景色
建议常量名称 背景色 值 BACKGROUND_BLACK 黑色 40 BACKGROUND_RED 红色 41 BACKGROUND_GREEN 绿色 42 BACKGROUND_YELLOW 黃色 43 BACKGROUND_BLUE 蓝色 44 BACKGROUND_PURPLE 紫红色 45 BACKGROUND_CYAN 青蓝色 46 BACKGROUND_WHITE 白色 47
格式:
'\033[{1}{2}{3}m{4}\033[0m'
{1}
:显示模式
{2}
:前景色
{3}
:背景色
{4}
:打印内容
例如:
print('\033[1;31;40m显示在终端的内容\033[0m')
结果:控制台打印高亮显示,并且字体为蓝色,背景为黑色
建议将以上信息配置为枚举值,打印也可以封装为一个函数,调用只需要传入打印内容和相应的样式参数就行,不用每次调用都单独写一次,提高效率
(已整理,可直接复制使用)
# region 控制台打印封装
# region 显示方式
# 终端默认设置
MODE_DEFAULT = 0
# 高亮显示
MODE_HIGHLIGHT = 1
# 使用下划线
MODE_UNDERLINE = 4
# 闪烁
MODE_FLICKER = 5
# 反白显示
MODE_INVERSE = 7
# 不可见
MODE_INVISIBLE = 8
# endregion
# region 前景色
# 字体黑色
FOREGROUND_BLACK = 30
# 字体红色
FOREGROUND_RED = 31
# 字体绿色
FOREGROUND_GREEN = 32
# 字体黃色
FOREGROUND_YELLOW = 33
# 字体蓝色
FOREGROUND_BLUE = 34
# 字体紫红色
FOREGROUND_PURPLE = 35
# 字体青蓝色
FOREGROUND_CYAN = 36
# 字体白色
FOREGROUND_WHITE = 37
# endregion
# region 背景色
# 背景黑色
BACKGROUND_BLACK = 40
# 背景红色
BACKGROUND_RED = 41
# 背景绿色
BACKGROUND_GREEN = 42
# 背景黃色
BACKGROUND_YELLOW = 43
# 背景蓝色
BACKGROUND_BLUE = 44
# 背景紫红色
BACKGROUND_PURPLE = 45
# 背景青蓝色
BACKGROUND_CYAN = 46
# 背景白色
BACKGROUND_WHITE = 47
# endregion
# region 控制台打印内容(带样式)
def print_c(content, mod=MODE_DEFAULT, fg=FOREGROUND_BLACK, bg=BACKGROUND_BLACK):
"""
控制台打印内容(带样式)
:param content: 打印内容
:param mod: 模式
:param fg: 字体景色
:param bg: 背景色
:return: None
"""
print(f'\033[{mod};{fg};{bg}m{content}\033[0m')
# endregion
# endregion
调用方法,只需要传入:显示内容
,显示模式常量
,字体颜色常量
,背景颜色常量
print_c("显示在终端的内容", mod=MODE_HIGHLIGHT, fg=FOREGROUND_RED, bg=BACKGROUND_WHITE)
结果:
input()
input函数可以用来接收用户在控制台的输入,它可以传入一个字符串,当input函数调用的时候,会在控制台打印input(“提示信息”)中的提示信息
input函数会在用户输入完内容后,按下Enter回车键,才会往下执行
例如:
in_put = input("请输入内容:") # 执行后控制台会打印 请输入内容:,并且等待用户输入,直到用户按下Enter键后,程序才往下执行,将输入值付给in_put,并打印
print(in_put) # 控制台会打印用户输入的内容
print(type(in_put)) # 查看输入内容变量的类型
# 当然也可以不接收input的输入内容,这里就只是提示用户按Esc建后程序才往下执行
input("请按Esc键退出程序")
控制台输入验证必填,是否输入范围内(已封装可直接使用)
# region 控制台输入必填
def input_not_null(tips: str, *args) -> str:
"""
控制台输入必填
:param tips: 提示
:param args: 控制必须输入元组中的字符
:return: 输入内容
"""
while (True):
in_put = input(tips)
if args:
if in_put in args:
return in_put
else:
if in_put:
return in_put
# endregion
控制台必填
# 必需输入
strs = input_not_null('请输入您的昵称:')
print(f'您的昵称是:{strs}')
控制台输入元组内字符才行
# 必须输入🚹或者🚺
strs = input_not_null('请选择您的性别(🚹/🚺):', '🚹', '🚺')
print(f'您的性别是:{strs}')
模块&包&库
模块->包->库
模块
模块定义
模块 module: 主要是以*.py
为后缀的文件。当然也可以有其他的文件后缀,例:*.pyo
、.pyc
、.pyd
、.so
、.dll
module 可看作一个工具类,可共用或者隐藏代码细节,将相关代码放置在一个module以便让代码更好用、易懂,让coder重点放在高层逻辑上。module里面能定义函数、类、变量,也能包含可执行的代码。
当一个文件夹下有 __init__.py
时,意为该文件夹是一个包(package),其下的多个模块(module)构成一个整体,而这些模块(module)都可通过同一个包(package)导入其他代码中。
__init__.py
文件用于组织包(package),方便管理各个模块之间的引用、控制着包的导入行为。在__init__.py
导入我们需要的模块,以便避免逐一导入、方便使用。
常用基础模块
模块名称 | 描述 |
---|---|
os | 多种操作系统接口 |
os.path | 常用路径操作 |
sys | 系统相关的参数和函数 |
json | JSON 编码和解码器 |
time | 时间的访问和转换 |
csv | CSV 文件读写 |
re | 正则表达式操作 |
logging | Python 的日志记录工具 |
urllib | URL 处理模块 |
http | HTTP 模块 |
sqlite3 | SQLite 数据库 DB-API 2.0 接口模块 |
random | 生成伪随机数 |
math | 数学函数 |
datetime | 基本日期和时间类型 |
enum | 对枚举的支持 |
电子邮件与 MIME 处理包 | |
threading | 基于线程的并行 |
itertools | 为高效循环而创建迭代器的函数 |
functool | 高阶函数和可调用对象上的操作 |
shutil | 高阶文件操作 |
包
包定义
Python包一般包含多个模块,其中属性大致相同的功能。包是一个类似文件夹,它里面包含了很多.py文件还有一个__init__.py
文件,__init__.py
这个文件是描述有多少个模块的东西。
库
库定义
库就是一个整体,它是一个完整的项目打包,可直接调用或者运行,一个库中可能有多个包!
常用第三方库
持续更新
安装命令 | 库名称 | 描述 |
---|---|---|
pip install requests | requests | 网络请求库,提供多种网络请求方法并可定义复杂的发送信息,对HTTP协议进行高度封装,支持非常丰富的链接访问功能。 |
pip install selenium | selenium | 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE,Mozilla Firefox,Safari,Google Chrome,Opera,Edge等。 |
pip install pycryptodome | AES | AES加密解密 |
pip install apscheduler | apscheduler | 提供了基于日期、固定时间间隔以及 crontab类型的任务。还可以在程序运行过程中动态的新增任务和删除任务。在任务运行过程中,还可以把任务存储起来,下次启动运行依然保留之前的状态。另外最重要的一个特点是,因为他是基于 Python语言的库,所以是可以跨平台的,一段代码,处处运行! |
总结
不知不觉已经两周过去了,对Python也越来越熟悉,下班后回酒店第一件事情就是放下书包,打开笔记本,启动PyCharm,启动Typora。下周也将根据自己所学,实现定时每天发送天气信息。
让自己保持繁忙!