• python基础知识点


    一、基础知识

    1、字符串操作

    S.find(sub [,start [,end]])    在索引start和end之间查找字符串sub

    S.rfind(sub [,start [,end]]) -> int

    S.replace(old, new[, count])    old代表需要替换的字符,new代表将要替代的字符,count代表替换的次数(省略则表示全部替换)

    S.split([sep [,maxsplit]]) -> list of strings    以sep为分隔符切片,如果maxsplit有指定值,则仅分割maxsplit个字符串;返回列表    

    S.rsplit([sep [,maxsplit]]) -> list of strings

    S.splitlines(keepends=False) -> list of strings

    S.lower() -> string    将所有大写字符转换成小写

    S.upper() -> string    将所有小写字符转换成大写

    S.count(sub[, start[, end]]) -> int    返回字符串sub在start和end之间出现的次数

    S.startswith(prefix[, start[, end]]) -> bool    判断字符串是否是以prefix开头,start和end代表从哪个下标开始,哪个下标结束

    S.endswith(suffix[, start[, end]]) -> bool    判断字符串是否以suffix结束,如果是返回True,否则返回False

    S.join(iterable) -> string    将列表拼接成字符串

    2、列表操作

    L.append(object)    append添加一个对象,可以是任意类型

    L.extend(iterable)    extend是依次添加元素,一个一个添加,一般添加的是字符串或者列表

    L.insert(index, object)    insert是在索引位置添加value

    L.count(value) -> integer   计数

    L.pop([index]) -> item    如果pop()里面不添加索引 默认删除列表中的最后一个

    L.remove(value)    删除元素

    L.reverse()    倒置

    L.sort(cmp=None, key=None, reverse=False)    默认reverse=False,代表升序(从小到大)排序,当为True时,则降序(从大到小)排列

    L.index(value, [start, [stop]]) -> integer    返回查找x第一次出现的索引,i是开始查找索引,j是结束查找索引

    3、字典操作

    字典的key和value一一对应的,字典是可变的,也是无序的,可迭代的

    dict()   字典初始化

    dict['dsa'] = 4    字典赋值

    del 字典名[key]   删除元素

    get(key[, default])    查看元素

    字典的3个方法:keys、values、items

    4、元组操作

    元组是一种不可变序列

    用法:元组的元素取出赋值给不同变量;元组遍历,获得元组对象;元组转列表使用

    5、集合操作

    集合的特点:是一种可迭代的、无序的、不能包含重复元素的数据结构

    set()    去重

    add()    添加

    update()    和列表中的extend相似,一个个添加

    集合名.remove(元素值)

    集合名.pop()

    二、常用知识

    1、Lambda表达式

    函数名 = lambda 参数:返回值    lambda表示的是匿名函数,不需要用def来声明

    注意事项:

    • 1.函数的参数可以有多个,多个参数之间用逗号隔开

    • 2.匿名函数不管多复杂.只能写一行.且逻辑结束后直接返回数据

    • 3.返回值和正常的函数一样,可以是任意数据类型,返回值的时候只能返回一个不能返回多个

    2、基础函数

    filter(function or None, sequence) -> list, tuple, or string    对可迭代对象进行过滤,参数function是一个函数,参数iterable是可迭代对象。filter()函数调用时iterable会遍历,它的元素被逐一传入funciton函数

    map(function, sequence[, sequence, ...]) -> list    对可迭代对象的元素进行变换

    reduce(function, sequence[, initial]) -> value    ​reduce()函数是将多个数据按照指定的算法积累叠加起来;参数funciton是聚合操作函数,iterable是可迭代对象,initializer是初始值,可以省略

    3、基础模块

    math

    • math.ceil(a): 用来返回≥a的最小整数
    • math.floor(a):用来返回≤a的最大整数

    round(a [,b])

    • 如果没有参数b,只有a,round()作用是四舍五入
    • 如果有参数b,round()作用是对a保留b位小数

    random

    • random.random():返回在范围大于或等于0.0,且小于1.0内的随机浮点数
    • random.randrange(stop): 返回在范围大于或等于0,且小于stop内,步长为1的随机整数
    • random.randrange(start, stop[, step]): 返回在范围大于或等于start,且小于stop内,步长为step的随机整数
    • random.randint(a, b): 返回在范围大于或等于a,且小于或等于b之间的随机整数

    datetime

    • datetime.today(): 返回当前本地日期和时间
    • datetime.now(tz=None): 返回本地当前的日期和时间,如果参数tz=None或未指定,则等同于today()
    • datetime.utcnow(): 返回当前UTC日期和时间
    • datetime.fromtimestamp(timestamp, tz=None): 返回与UNIX时间戳对应的本地日期和时间
    • Datetime.utcfromtimestamp(timestamp): 返回与UNIX时间戳对应的UTC日期和时

    date类

    • date.today(): 返回当前本地日期
    • date.fromtimestamp(timestamp): 返回与UNIX时间戳对应的本地日期

    日期时间格式化

    • str转换为datetime
      很多时候,用户输入的日期和时间是字符串,要处理日期和时间,首先必须把str转换为datetime。转换方法是通过datetime.strptime()实现,需要一个日期和时间的格式化字符串:datetime.strptime('2018-4-1 00:00', '%Y-%m-%d %H:%M')
    • datetime转换为str
      如果已经有了datetime对象,要把它格式化为字符串显示给用户,就需要转换为str,转换方法是通过strftime()实现的,同样需要一个日期和时间的格式化字符串:datetime.now().strftime('%a, %b %d %H:%M')

    json模块

    • dump 将编码结果保存到文件对象或流中
    • load 从网络或者磁盘中读取json数据,对其中的json数据解码,返回python数据
    • dumps 将编码的结果以字符串形式返回
    • loads 对其中的json数据进行解码,返回python数据

    open函数

    1.file参数
    file参数是要打开的文件,可以是字符串或整数。如果file是字符串表示文件名,文件名可以是相对当前目录的路径,也可以是绝对路径;如果file是整数表示文件描述符,文件描述符指向一个已经打开的文件
     
    2.mode参数
    设置打开模式,二进制文件设置rb,wb,xb,ab,如果是文本文件,则设置r,w,x,a

    • r:只读模式打开文件(默认)
    • w:写入模式打开文件,会覆盖已经存在的文件
    • x:独占创建模式,文件不存在时创建并以写入模式打开,如果文件已存在则抛出异常
    • a:追加模式,如果文件存在,则写入时内容追加到文件末尾
    • b:二进制模式
    • +:更新模式
    • t:文本模式(默认)

    文本文件读写

    • read(size=-1):从文件中读取字符串,size限制最多读取的字符数,size=-1时没有限制,读取全部内容
    • redline(size=-1):读取到换行符或文件尾并返回单行字符串,如果已经到文件尾,则返回一个空字符串,size是限制读取的字符数,size=-1时没有限制
    • readlines(hint=-1):读取文件数据到一个字符串列表中,每一个行数据是列表的一个元素,hint是限制读取的行数,hint=-1时没有限制
    • write(s):将字符串s写入文件,并返回写入的字符数
    • writelines(lines):向文件中写入一个列表,不添加行分隔符,因此通常为每一行末尾提供行分隔符
    • flush():刷新写缓冲区,数据会写入到文件中

    二进制文件读写

    • read(size=-1):从文件中读取字节,size限制最多读取的字节数,size=-1时没有限制,读取全部字节
    • redline(size=-1):从文件中读取并返回一行,size是限制读取的字节数,size=-1时没有限制
    • readlines(hint=-1):读取文件数据到一个列表中,每一个行数据是列表的一个元素,hint是限制读取的行数,hint=-1时没有限制
    • write(s):写入b字节,并返回写入的字符数
    • writelines(lines):向文件中写入一个列表,不添加行分隔符,因此通常为每一行末尾提供行分隔符
    • flush():刷新写缓冲区,数据会写入到文件中 

    os模块

    Python对文件的操作是通过文件对象实现的,如删除文件、修改文件名,创建目录,删除目录和遍历目录,可以通过Python的os模块实现

    • os.rename(src, dst):修改文件名,src是源文件,dst是目标文件,它们都可以是相对路径或者绝对路径
    • os.remove(path):删除path所指的文件,如果path是目录,则会引发OSError
    • os.mkdir(path):创建path所指的目录,如果目录已存在,则会引发FileExistsError
    • os.rmdir(path):删除path所指的目录,如果目录非空,则会引发OSError
    • os.walk(top):遍历top所指的目录树,自顶向下遍历目录树,返回值是一个三元组(目录路径,目录名列表,文件名列表)
    • os.listdir(dir):列出指定目录中的文件和子目录
      常用的属性有以下两种
    • os.curdir属性:获得当前目录
    • os.pardir属性:获得当前父目录 

    os.path模块

    • os.path.abspath(path):返回path的绝对路径
    • os.path.basename(path):返回路径的基础名部分,如果path是指向一个文件,则返回文件名,如果path指向的是一个目录,则返回最后目录名
    • os.path.dirname(path):返回path路径中目录部分
    • os.path.exists(path):判断path文件是否存在
    • os.path.isfile(path):如果path是文件,则返回True
    • os.path.isdir(path):如果path是目录,则返回True
    • os.path.getatime(path):返回最后一次的访问时间,返回值是一个UNIX的时间戳,如果文件不存在或无法访问,则引发OSError
    • os.path.getmtime(path):返回最后修改时间,返回值是一个UNIX的时间戳,如果文件不存在或无法访问,则引发OSError
    • os.path.getctime(path):返回创建时间,返回值是一个UNIX时间戳,如果文件不存在或无法访问,则引发OSError
    • os.path.getsize(path):返回文件大小,以字节为单位,如果文件不存在或无法访问,则引发OSError

    re模块

     

    参阅pythonav资源分享

    4、深拷贝和浅拷贝

    不管对于浅拷贝、还是深拷贝,针对不可变对象str、int、tuple(有点特殊)、boolean,它的内存地址是不变的,拷贝的仅仅是值

    浅拷贝只拷贝可变对象的第一层,如果可变对象中还有可变的对象,那么第二层拷贝不到,拷贝不到就是说,第二层的内存地址是共用的,都是指向同一片内存地址

    深拷贝对于可变的对象,全部拷贝下来,全部都开辟一片新的内存地址

    5、垃圾回收

    参阅 pythonav资源分享

    6、多进程和多线程

    参阅 python进程、线程、协程 - 张岩林 - 博客园

    7、闭包

    闭包就是内层函数, 对外层函数(非全局)的变量的引用. 叫闭包

     

    作用:python规定. 如果你在内部函数中访问了外层函数中的变量. 那么这个变量将不会消亡. 将会常驻在内存中. 也就是说. 使用闭包, 可以保证外层函数中的变量在内存中常驻. 好处就是就是让一个变量能够常驻内存,供后面的程序使用

    8、迭代器

     Iterable: 可迭代对象. 内部包含__iter__()函数

    ​ Iterator: 迭代器. 内部包含__iter__() 同时包含__next__().

    迭代器的特点:

    ​ 1. 节省内存.

    ​ 2. 惰性机制

    ​ 3. 不能反复, 只能向下执行.

    我们可以把要迭代的内容当成子弹. 然后呢. 获取到迭代器__iter__(), 就把子弹都装在弹夹中. 然后发射就是__next__()把每一个子弹(元素)打出来. 也就是说, for循环的时候.一开始的 时候是__iter__()来获取迭代器. 后面每次获取元素都是通过next()来完成的. 当程序遇到 StopIteration将结束循环.

    9、生成器

    在python中有以下几种方式来获取生成器

      1.通过生成器函数

      2.通过各种推到式来实现生成器

    将函数中的return换成yield就是生成器:yield和return的效果是一样的,但是还是有点区别

      yield是分段来执行一个函数,yield可以出现多次

      return是直接停止这个函数,return可以出现多次但是只会执行到第一个就结束了

    10、推导式

    列表推导式:[结果 for 变量 in 可迭代对象 if 条件]

    生成器推导式:(结果 for 变量 in 可迭代对象 if 条件)

            1.列表推导式比较耗内存,一次性加载.生成器表达式几乎不占用内存.使用的时候才分配和使用内存

            2.得到的值不一样,列表推导式得到的是一个列表.生成器表达式获取的是一个生成器

    字典推导式:dic = {lst1[i]:lst2[i] for i in range(len(lst1))}

    集合推导式:集合推导式可以帮我们直接生成一个集合,集合的特点;无序,不重复 所以集合推导式自带去重功能

    11、装饰器

    @装饰器函数 == 重新定义被装饰函数=装饰器函数(被装饰函数)

     

  • 相关阅读:
    Java练习题
    Fast-DDS 服务发现简要概述
    RabbitMQ 和 Kafka有什么异同?
    idea Transparent-native-to-ascii 是否需要勾选?
    【C++基础】实现日期类
    vue2中使用quill编辑器+表格功能
    Pytorch 之torch.nn初探 池化--Pooling Layers
    Swift 抛砖引玉:从数组访问越界想到的“可抛出错误”属性
    最新Adobe2024全家桶下载,PS/PR/AE/AI/AU/LR/ID详细安装教程
    JAVA中线程池的定义及使用
  • 原文地址:https://blog.csdn.net/weixin_42241611/article/details/126894344