当前位置: 首页 > news >正文

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、装饰器

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

 

相关文章:

  • Python的collections原来这么好用
  • Python学习:encode()和decode()方法:字符串编码转换
  • Python深拷贝(deepcopy)、浅拷贝(copy)、等号拷贝的深入理解----看了还不懂找我
  • 【论文研读】-Defining the Ethereum Virtual Machine for Interactive Theorem Provers
  • HIVE 3 使用 MR 引擎多表关联 (JOIN) 导致丢数的问题复现、问题根源及解决方案 (附代码)
  • 计算机毕业设计Java网上求职招聘系统(源码+系统+mysql数据库+Lw文档)
  • C#构造函数
  • 【Node.js+koa--后端管理系统】用户注册接口设计 | 连接Mysql数据库 | 校验注册权限
  • 30岁年薪28W,我还是没顶住压力跳槽了····
  • boost之string_ref
  • Java实现拼图小游戏(1)—— JFrame的认识及界面搭建
  • Java成品网站推荐 毕设从这起步就够了
  • P4 开发实践 — NG-SDN Tutorial — Exercise 5: IPv6 Routing
  • Android Studio Dolphin | 2021.3.1 发布,快来看看有什么更新吧~
  • 常见软件---SQLite3的C语言下使用
  • JavaScript-如何实现克隆(clone)函数
  • 【跃迁之路】【519天】程序员高效学习方法论探索系列(实验阶段276-2018.07.09)...
  • classpath对获取配置文件的影响
  • GraphQL学习过程应该是这样的
  • Java|序列化异常StreamCorruptedException的解决方法
  • JavaScript的使用你知道几种?(上)
  • Java多线程(4):使用线程池执行定时任务
  • Mybatis初体验
  • MySQL用户中的%到底包不包括localhost?
  • sessionStorage和localStorage
  • uva 10370 Above Average
  • 包装类对象
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 给Prometheus造假数据的方法
  • 快速体验 Sentinel 集群限流功能,只需简单几步
  • 强力优化Rancher k8s中国区的使用体验
  • 如何优雅地使用 Sublime Text
  • 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上
  • 推荐一个React的管理后台框架
  • 06-01 点餐小程序前台界面搭建
  • Mac 上flink的安装与启动
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • ​七周四次课(5月9日)iptables filter表案例、iptables nat表应用
  • ​虚拟化系列介绍(十)
  • # centos7下FFmpeg环境部署记录
  • ###C语言程序设计-----C语言学习(6)#
  • (libusb) usb口自动刷新
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (五)Python 垃圾回收机制
  • (轉貼) VS2005 快捷键 (初級) (.NET) (Visual Studio)
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • .aanva
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .NET Core 实现 Redis 批量查询指定格式的Key
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET Micro Framework初体验(二)
  • .netcore 如何获取系统中所有session_ASP.NET Core如何解决分布式Session一致性问题
  • .net解析传过来的xml_DOM4J解析XML文件
  • .NET企业级应用架构设计系列之开场白