python-学习笔记
文章目录
基础 一至四
-
** 幂 a**b 表示 a 的 b 次幂 | // | 取整除 | 9 // 4 结果为 2 |
-
靠缩进区分逻辑关系
-
#‘’‘ 注释
-
complex(x, y) 一个带有实部 x 和虚部 y 的复数,y 默认为 0。
divmod(x, y) (x // y, x % y) -
import math
-
abs(x) 返回 x 的绝对值 ceil(x) 返回 x 的上入整数,如:math.ceil(1.1) 返回 2 floor(x) 返回 x 的下舍整数,如:math.floor(1.1) 返回 1 exp(x) 返回 e 的 x 次幂 log(x) 返回以 e 为底 x 的对数 log10(x) 返回以 10 为底 x 的对数 sqrt(x)
求平方根函数 factorial(x) 返回 x 的阶乘 -
import random
random(x)函数
随机生成一个 0 到 1 范围内的实数。uniform(x, y)函数
随机生成一个 x 到 y 范围内的实数。
- :[字符串]是 Pytho可以通过单引号
'
、双引号"
、三引号'''
或"""
来定义
s = 'Python' # 访问 yt print(s[1:3]) # 访问 Pyt print(s[:3]) # 访问 hon print(s[3:])
s = 'A' print(ord(s)) #65 print(chr(65)) #A
-
转义字符 描述 \
在行尾使用时,用作续行符 \b 退格(Backspace) \000 空 \n 换行 \v 纵向制表符 \t 横向制表符 \r 回车 -
字符串运算符号
运算符 描述 + 连接符 * 重复输出 [ ] 通过索引获取字符串中字符 [ : ] 获取字符串中的一部分 in 字符串中是否包含指定字符 not in 字符串中是否不包含指定字符 r/R 字符串原样输出 -
输出字符串::
print('Hello %s' % 'Python')
print('{0} {1}'.format('Hello', 'Python'))
基础五:序列
-
正向0->n-1 ,反向-1->-n
-
sname[start : end : step]
-
相加、相乘(数字)
-
val in seq
返回Ture or False -
函数 描述 len() 计算序列的长度 max() 找出序列中的最大元素 min() 找出序列中的最小元素 list() 将序列转换为列表 str() 将序列转换为字符串 sum() 计算元素的和 sorted() 对元素进行排序 enumerate() 将序列组合为一个索引序列,多用在 for 循环中
基础六:列表与元组
-
列表中所有元素都放在一个中括号
[]
中,相邻元素之间用逗号,
分隔、使用append()
向列表中添加新元素、使用del
删除列表中元素 -
count() 统计元素出现次数
-
index() 查找某个元素在列表中首次出现的位置(即索引
-
remove() 移除列表中某个值的首次匹配项
-
sort() 排序
-
copy() 复制给别人
-
元组是不变的列表,所有元素都放在一个小括号
()
中,相邻元素之间用逗号,
分隔,访问与列表相同。元组中的元素不能被删除,我们只能删除整个元组、元组中元素不能被修改,我们要用重新赋值的方式操作。 -
len() 计算元组中元素个数
-
max() 和 min() 返回元组中元素最大、最小值
-
tuple() 将列表转换为元组
基础七:字典与集合
- 字典的内容在花括号
{}
内,键-值(key-value)之间用冒号:
分隔,键值对之间用逗号,
分隔。
d = {'name':'小明', 'age':'18'}
l = [('name', '小明'), ('age', 18)] d = dict(l)
d = dict(name='小明', age='18')
- 通过key访问
d['name']
也可key修改
get函数访问d.get('name')
清空d.clear()
获取长度len(d)
- 集合(set)与字典相同均存储 key,但也只存储 key,因 key 不可重复,所以 set 的中的值不可重复,也是无序的。
- 集合使用花括号
{}
或者set()
函数创建,如果创建空集合只能使用set()
函数s = {'a', 'b', 'c'}
s = set(['a', 'b', 'c'])
- 添加元素可以使用
add
或update
方法,如果元素已经存在,则不进行操作、 删除元素使用remove
方法 、清空集合使用clear
方法 、获取集合的长度,同样使用len
方法
基础八:与时间相关的模块
1 time 模块
2 datetime 模块
3 calendar 模块
基础九:函数
def 函数名(参数):
函数体
return 返回值
例子:
# 空函数
def my_empty():
pass
# 无返回值
def my_print(name):
print('Hello', name)
# 有返回值
def my_sum(x, y):
s = x + y
print('s-->', s)
return s
# 不定长参数
def my_variable(*params):
for p in params:
print(p)
# 匿名函数
my_sub = lambda x, y: x - y
my_empty()
my_print('Jhon')
result = my_sum(1, 2)
my_variable(1, 2, 3, 4, 5, 6)
print(my_sub(2, 1))
基础十:模块与包
基础十一:面向对象
-
Python 中类的定义使用
class
关键字class Cat: # 属性 color = 'black' # 构造方法 def __init__(self, name): self.name = name # 自定义方法 def eat(self, food): self.food = food print(self.name, '正在吃'+food) #继承 class SingleCat(PersianCat): def eat(self, food ): print(self.name, '正在吃'+food, '十分钟后', self.name+'吃饱了') sc = SingleCat('波斯猫1号') sc.eat('鱼')
-
构造方法
__init__()
)会在类实例化时自动调用。无论构造方法还是其他方法都需要将self
作为第一个参数,它代表类的实例。类创建好后,我们可以直接通过类名访问属性,格式为:类名.属性名
-
私有属性和方法:属性名或方法名前加两条下划线
-
继承:
class 基类(子类1, 子类2 ...): ...
基础十二:文件基本操作 创建
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
- mode打开模式
模式 | 描述 |
---|---|
r | 读取(默认) |
w | 写入,并先截断文件 |
x | 排它性创建,如果文件已存在则失败 |
a | 写入,如果文件存在则在末尾追加 |
b | 二进制模式 |
t | 文本模式(默认) |
+ | 更新磁盘文件(读取并写入) |
-
buffering:是一个可选的整数,用于设置缓冲策略
-
encoding:用于解码或编码文件的编码的名称。
-
errors:是一个可选的字符串,用于指定如何处理编码和解码错误(不能在二进制模式下使用)。
-
newline:区分换行符。
-
closefd:如果 closefd 为 False 并且给出了文件描述符而不是文件名,那么当文件关闭时,底层文件描述符将保持打开状态;如果给出文件名,closefd 为 True (默认值),否则将引发错误。
-
opener:可以通过传递可调用的 opener 来使用自定义开启器。
-
例子
open('test.txt', mode='w',encoding='utf-8')
-
写入
-
函数 描述 write(str) 将字符串写入文件,返回写入字符长度 writelines(s) 向文件写入一个字符串列表 wf = open('test.txt', 'w', encoding='utf-8') wf.write('Tom\n') wf.writelines(['Hello\n', 'Python']) # 关闭 wf.close()
with open('test.txt', 'w', encoding='utf-8') as wf: wf.write('Tom\n') wf.writelines(['Hello\n', 'Python'])
-
读取
-
函数 描述 read(size) 读取指定的字节数,参数可选,无参或参数为负时读取所有 readline() 读取一行 readlines() 读取所有行并返回列表 with open('test.txt', 'r', encoding='utf-8') as rf: print('readline-->', rf.readline()) print('read-->', rf.read(6)) print('readlines-->', rf.readlines())
-
tell() 返回文件对象在文件中的当前位置
-
file.seek(offset[, whence]) 将文件对象移动到指定的位置;offset 表示移动的偏移量;whence 为可选参数,值为 0 表示从文件开头起算(默认值)、值为 1 表示使用当前文件位置、值为 2 表示使用文件末尾作为参考点
基础十三: os 模块
基础十四:错误和异常
基础十五:枚举
-
枚举的定义可以通过继承 Enum 的方式来实现
from enum import Enum class WeekDay(Enum): Mon = 0 Tue = 1 Wed = 2 Thu = 3 Fri = 4
-
访问
# 方式 1 for day in WeekDay: # 枚举成员 print(day) # 枚举成员名称 print(day.name) # 枚举成员值 print(day.value) # 方式 2 print(list(WeekDay))
-
枚举成员及属性可以使用 is 进行对象比较,还可以使用 == 进行值比较
-
枚举成员不能进行大小比较
基础十六:迭代器与生成器
-
迭代器需要具有
__iter__()
和__next__()
两个方法,这两个方法共同组成了迭代器协议 -
__iter__()
:返回迭代器对象本身 -
__next__()
:返回下一项数据 -
生成器的创建方式有很多种,比如:使用
yield
语句、生成器表达式(可以简单的理解为是将列表的[]
换成了()
,特点是更加简洁,但不够灵活)。# 列表 lis = [x*x for x in range(5)] print(lis) # 生成器 gen = (x*x for x in range(5)) for g in gen: print(g) [0, 1, 4, 9, 16] 0 1 4 9 16
基础十七:装饰器
基础十八:命名空间 & 作用域
基础十九:数学相关模块
- ceil(x)
向上取整 - floor(x)
向下取整 - fabs(x)
返回 x 的绝对值 - fmod(x, y)
返回 x/y 的余数,值为浮点数。 - factorial(x)
返回 x 的阶乘,如果 x 不是整数或为负数时则将引发 ValueError。 - pow(x, y)
返回 x 的 y 次幂。 - fsum(iterable)
返回迭代器中所有元素的和。 - gcd(x, y)
返回整数 x 和 y 的最大公约数。 - sqrt(x)
返回 x 的平方根。 - trunc(x)
返回 x 的整数部分。 - exp(x)
返回 e 的 x 次幂。 - log(x[, base])
返回 x 的对数,底数默认为 e。 - tan(x)
返回 x 弧度的正切值。 - atan(x)
返回 x 的反正切值。 - sin(x)
返回 x 弧度的正弦值。 - asin(x)
返回 x 的反正弦值。 - decimal 模块为正确舍入十进制浮点运算提供了支持,相比内置的浮点类型 float,它能更加精确的控制精度,能够为精度要求较高的金融等领域提供支持。
- random()
返回 [0.0, 1.0) 范围内的一个随机浮点数 - uniform(a, b)
返回 [a, b) 范围内的一个随机浮点数。 - randint(a, b)
返回 [a, b] 范围内的一个随机整数。 - randrange(start, stop[, step])
返回 [start, stop) 范围内步长为 step 的一个随机整数。 - choice(seq)
从非空序列 seq 返回一个随机元素。 - shuffle(x[, random])
将序列 x 随机打乱位置。 - sample(population, k)
返回从总体序列或集合中选择的唯一元素的 k 长度列表,用于无重复的随机抽样。
基础二十:sys 模块
基础二十一:argparse 模块
基础二十二:正则表达式
re模块内容
-
re.compile(pattern, flags=0)
用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match() 和 search() 这两个函数使用。 -
re.search(pattern, string, flags=0)
扫描整个字符串找到匹配样式的第一个位置,并返回一个相应的匹配对象;如果没有匹配,就返回一个 None。 -
re.purge()
清除正则表达式缓存。 -
re.escape(pattern)
转义 pattern 中的特殊字符。 -
re.subn(pattern, repl, string, count=0, flags=0)
行为与 re.sub() 相同,但返回的是一个元组。 -
re.sub(pattern, repl, string, count=0, flags=0)
返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串,count 表示匹配后替换的最大次数,默认 0 表示替换所有的匹配。 -
re.finditer(pattern, string, flags=0)
pattern 在 string 里所有的非重复匹配,返回为一个迭代器 iterator 保存了匹配对象,string 从左到右扫描,匹配按顺序排列。 -
re.findall(pattern, string, flags=0)
对 string 返回一个不重复的 pattern 的匹配列表,string 从左到右进行扫描,匹配按找到的顺序返回,如果样式里存在一到多个组,就返回一个组合列表,空匹配也会包含在结果里。 -
re.split(pattern, string, maxsplit=0, flags=0)
用 pattern 分开 string,如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里,如果 maxsplit 非零,最多进行 maxsplit 次分隔,剩下的字符全部返回到列表的最后一个元素 -
re.fullmatch(pattern, string, flags=0)
如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象;否则就返回一个 None。 -
re.match(pattern, string, flags=0)
如果 string 开始的 0 或者多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象;如果没有匹配,就返回 None。