python-学习笔记

python-学习笔记

基础 一至四

  1. **a**b 表示 a 的 b 次幂
    | //   | 取整除 | 9 // 4 结果为 2       |
    
  2. 靠缩进区分逻辑关系

  3. #‘’‘ 注释

  4. complex(x, y) 一个带有实部 x 和虚部 y 的复数,y 默认为 0。
    divmod(x, y) (x // y, x % y)

  5. import math

  6. 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 的阶乘
  7. import random

random(x)函数
随机生成一个 0 到 1 范围内的实数。

uniform(x, y)函数
随机生成一个 x 到 y 范围内的实数。

  1. :[字符串]是 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
  1. 转义字符描述
    \在行尾使用时,用作续行符
    \b退格(Backspace)
    \000
    \n换行
    \v纵向制表符
    \t横向制表符
    \r回车
  2. 字符串运算符号

    运算符描述
    +连接符
    *重复输出
    [ ]通过索引获取字符串中字符
    [ : ]获取字符串中的一部分
    in字符串中是否包含指定字符
    not in字符串中是否不包含指定字符
    r/R字符串原样输出
  3. 输出字符串::print('Hello %s' % 'Python') print('{0} {1}'.format('Hello', 'Python'))

基础五:序列

  1. 正向0->n-1 ,反向-1->-n

  2. sname[start : end : step]

  3. 相加、相乘(数字)

  4. val in seq 返回Ture or False

  5. 函数描述
    len()计算序列的长度
    max()找出序列中的最大元素
    min()找出序列中的最小元素
    list()将序列转换为列表
    str()将序列转换为字符串
    sum()计算元素的和
    sorted()对元素进行排序
    enumerate()将序列组合为一个索引序列,多用在 for 循环中

基础六:列表与元组

  1. 列表中所有元素都放在一个中括号 [] 中,相邻元素之间用逗号 , 分隔、使用 append() 向列表中添加新元素、使用 del 删除列表中元素

  2. count() 统计元素出现次数

  3. index() 查找某个元素在列表中首次出现的位置(即索引

  4. remove() 移除列表中某个值的首次匹配项

  5. sort() 排序

  6. copy() 复制给别人

  7. 元组是不变的列表,所有元素都放在一个小括号 () 中,相邻元素之间用逗号 , 分隔,访问与列表相同。元组中的元素不能被删除,我们只能删除整个元组、元组中元素不能被修改,我们要用重新赋值的方式操作。

  8. len() 计算元组中元素个数

  9. max()min() 返回元组中元素最大、最小值

  10. tuple() 将列表转换为元组

基础七:字典与集合

  1. 字典的内容在花括号 {} 内,键-值(key-value)之间用冒号 : 分隔,键值对之间用逗号 , 分隔。
    d = {'name':'小明', 'age':'18'}
    l = [('name', '小明'), ('age', 18)] d = dict(l)
    d = dict(name='小明', age='18')
  2. 通过key访问 d['name'] 也可key修改
    get函数访问 d.get('name')
    清空 d.clear()
    获取长度len(d)
  3. 集合(set)与字典相同均存储 key,但也只存储 key,因 key 不可重复,所以 set 的中的值不可重复,也是无序的。
  4. 集合使用花括号 {} 或者 set() 函数创建,如果创建空集合只能使用 set() 函数s = {'a', 'b', 'c'} s = set(['a', 'b', 'c'])
  5. 添加元素可以使用 addupdate 方法,如果元素已经存在,则不进行操作、 删除元素使用 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))

基础十:模块与包

基础十一:面向对象

  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('鱼')
    
    
  2. 构造方法 __init__())会在类实例化时自动调用。无论构造方法还是其他方法都需要将 self 作为第一个参数,它代表类的实例。类创建好后,我们可以直接通过类名访问属性,格式为:类名.属性名

  3. 私有属性和方法:属性名或方法名前加两条下划线

  4. 继承:class 基类(子类1, 子类2 ...): ...

基础十二:文件基本操作 创建

 open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
  1. mode打开模式
模式描述
r读取(默认)
w写入,并先截断文件
x排它性创建,如果文件已存在则失败
a写入,如果文件存在则在末尾追加
b二进制模式
t文本模式(默认)
+更新磁盘文件(读取并写入)
  1. buffering:是一个可选的整数,用于设置缓冲策略

  2. encoding用于解码或编码文件的编码的名称。

  3. errors:是一个可选的字符串,用于指定如何处理编码和解码错误(不能在二进制模式下使用)。

  4. newline:区分换行符。

  5. closefd:如果 closefd 为 False 并且给出了文件描述符而不是文件名,那么当文件关闭时,底层文件描述符将保持打开状态;如果给出文件名,closefd 为 True (默认值),否则将引发错误。

  6. opener:可以通过传递可调用的 opener 来使用自定义开启器。

  7. 例子

    open('test.txt', mode='w',encoding='utf-8')
    
  8. 写入

  9. 函数描述
    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'])
    
    
  10. 读取

  11. 函数描述
    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())
    
  12. tell() 返回文件对象在文件中的当前位置

  13. file.seek(offset[, whence]) 将文件对象移动到指定的位置;offset 表示移动的偏移量;whence 为可选参数,值为 0 表示从文件开头起算(默认值)、值为 1 表示使用当前文件位置、值为 2 表示使用文件末尾作为参考点

基础十三: os 模块

基础十四:错误和异常

基础十五:枚举

  1. 枚举的定义可以通过继承 Enum 的方式来实现

    from enum import Enum
    
    class WeekDay(Enum):
        Mon = 0
        Tue = 1
        Wed = 2
        Thu = 3
        Fri = 4
    
    
  2. 访问

    # 方式 1
    for day in WeekDay:
        # 枚举成员
        print(day)
        # 枚举成员名称
        print(day.name)
        # 枚举成员值
        print(day.value)
    
    # 方式 2
    print(list(WeekDay)) 
    
    
  3. 枚举成员及属性可以使用 is 进行对象比较,还可以使用 == 进行值比较

  4. 枚举成员不能进行大小比较

基础十六:迭代器与生成器

  1. 迭代器需要具有 __iter__()__next__() 两个方法,这两个方法共同组成了迭代器协议

  2. __iter__():返回迭代器对象本身

  3. __next__():返回下一项数据

  4. 生成器的创建方式有很多种,比如:使用 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
    
    

基础十七:装饰器

基础十八:命名空间 & 作用域

基础十九:数学相关模块

  1. ceil(x)
    向上取整
  2. floor(x)
    向下取整
  3. fabs(x)
    返回 x 的绝对值
  4. fmod(x, y)
    返回 x/y 的余数,值为浮点数。
  5. factorial(x)
    返回 x 的阶乘,如果 x 不是整数或为负数时则将引发 ValueError。
  6. pow(x, y)
    返回 x 的 y 次幂。
  7. fsum(iterable)
    返回迭代器中所有元素的和。
  8. gcd(x, y)
    返回整数 x 和 y 的最大公约数。
  9. sqrt(x)
    返回 x 的平方根。
  10. trunc(x)
    返回 x 的整数部分。
  11. exp(x)
    返回 e 的 x 次幂。
  12. log(x[, base])
    返回 x 的对数,底数默认为 e。
  13. tan(x)
    返回 x 弧度的正切值。
  14. atan(x)
    返回 x 的反正切值。
  15. sin(x)
    返回 x 弧度的正弦值。
  16. asin(x)
    返回 x 的反正弦值。
  17. decimal 模块为正确舍入十进制浮点运算提供了支持,相比内置的浮点类型 float,它能更加精确的控制精度,能够为精度要求较高的金融等领域提供支持。
  18. random()
    返回 [0.0, 1.0) 范围内的一个随机浮点数
  19. uniform(a, b)
    返回 [a, b) 范围内的一个随机浮点数。
  20. randint(a, b)
    返回 [a, b] 范围内的一个随机整数。
  21. randrange(start, stop[, step])
    返回 [start, stop) 范围内步长为 step 的一个随机整数。
  22. choice(seq)
    从非空序列 seq 返回一个随机元素。
  23. shuffle(x[, random])
    将序列 x 随机打乱位置。
  24. sample(population, k)
    返回从总体序列或集合中选择的唯一元素的 k 长度列表,用于无重复的随机抽样。

基础二十:sys 模块

基础二十一:argparse 模块

基础二十二:正则表达式

re模块内容

  1. re.compile(pattern, flags=0)
    用于编译正则表达式,生成一个正则表达式(Pattern)对象,供 match() 和 search() 这两个函数使用。

  2. re.search(pattern, string, flags=0)
    扫描整个字符串找到匹配样式的第一个位置,并返回一个相应的匹配对象;如果没有匹配,就返回一个 None。

  3. re.purge()
    清除正则表达式缓存。

  4. re.escape(pattern)
    转义 pattern 中的特殊字符。

  5. re.subn(pattern, repl, string, count=0, flags=0)
    行为与 re.sub() 相同,但返回的是一个元组。

  6. re.sub(pattern, repl, string, count=0, flags=0)
    返回通过使用 repl 替换在 string 最左边非重叠出现的 pattern 而获得的字符串,count 表示匹配后替换的最大次数,默认 0 表示替换所有的匹配。

  7. re.finditer(pattern, string, flags=0)
    pattern 在 string 里所有的非重复匹配,返回为一个迭代器 iterator 保存了匹配对象,string 从左到右扫描,匹配按顺序排列。

  8. re.findall(pattern, string, flags=0)
    对 string 返回一个不重复的 pattern 的匹配列表,string 从左到右进行扫描,匹配按找到的顺序返回,如果样式里存在一到多个组,就返回一个组合列表,空匹配也会包含在结果里。

  9. re.split(pattern, string, maxsplit=0, flags=0)
    用 pattern 分开 string,如果在 pattern 中捕获到括号,那么所有的组里的文字也会包含在列表里,如果 maxsplit 非零,最多进行 maxsplit 次分隔,剩下的字符全部返回到列表的最后一个元素

  10. re.fullmatch(pattern, string, flags=0)
    如果整个 string 匹配到正则表达式样式,就返回一个相应的匹配对象;否则就返回一个 None。

  11. re.match(pattern, string, flags=0)
    如果 string 开始的 0 或者多个字符匹配到了正则表达式样式,就返回一个相应的匹配对象;如果没有匹配,就返回 None。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值