Python心经(3)
这一节总结点demo和常用知识点
目录
有关字符串格式化打印的
lambda匿名函数,,将匿名函数作为参数传入
文件读写
生成器
python的装饰器
简单的网站代码:
有关三元运算
推导式:
新浪面试题:
有关面向对象里面三种方法
有关字符串格式化打印的
name="asas"
age=12
print(f"我是:{name},年龄:{age}") f-string
print("我是:",name,"年龄:",age)
print("我是:{},年龄:{}".format(name,age)) format
print("我是:%s,年龄:%d"%(name,int(age))) 格式化print("网站名:{name}, 地址 {url}".format(name="菜鸟教程", url="www.runoob.com"))# 通过字典设置参数
site = {"name": "菜鸟教程", "url": "www.runoob.com"}
print("网站名:{name}, 地址 {url}".format(**site))# 通过列表索引设置参数
my_list = ['菜鸟教程', 'www.runoob.com']
print("网站名:{0[0]}, 地址 {0[1]}".format(my_list)) # "0" 是必须的
把函数当做参数传给函数,,直接形参就随便一个变量名就行,只要你想,他就可以代表一个函数,
记住对于python的函数参数名来说,他可以代表任何的数据类型,只是看你用啥往进传就可以,
def fun(a) -> 我这个a可以代表函数,字符串,列表 ,元组啥的 字典的话就得**a了,,不过写a的话字典就能传进去一组kv
def func(name,**age):print(name,age)def funs(grade,fx):print(grade)fx(12,李四='aa',sad=12)print(type(fx))funs(5,func)
lambda匿名函数,,将匿名函数作为参数传入
格式是: lambda 参数 : 函数体 (只能写一行)
def test_func(com):print(f"结果是:{com(1,2)}")#lambda匿名函数,,将匿名函数作为参数传入
test_func(lambda x,y:x+y)
文件读写
fd=open("D:/xxt.txt","r",encoding="UTF-8")#read 里面可以指定具体读多少字节
#读方法每次读都是从上个位置后面开始,调用一次读完,再调用
#指针在最后面,读的话就没东西了
print(f"读取全部内容:{fd.read()}")
print(f"读取全部内容:{fd.read()}")
print(f"读取全部内容:{fd.readlines()}")
#readlines读取文件全部行,能读到换行符,并封装到列表中
#readline 一次读一行
for line in fd:print(f"读取一行内容:{fd.readline()}")fd.close()#关闭文件with open("D:/xxt.txt","r",encoding="UTF-8") as f: #自带close
做一个小案例,。。要不说python方便 ,案例是打开文件统计一下里面Python3的个数
方法1:
with open("D:/xxt.txt","r",encoding="UTF-8") as f: #自带closenum=f.read()print("Python3的数量是:",num.count("Python3"))
方法2:
strip()去除开头和结尾的空格和换行符
Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串
ans=0
with open("D:/xxt.txt","r",encoding="UTF-8") as f: #自带closefor line in f:ls=line.strip() #去除开头尾巴空格 换行符print(ls)words=ls.split(" ") #以空格分割for word in words:if word=="Python3":ans+=1
print(ans)
写的操作的话就是write,w文件不存在就创建,存在清空重新写,a直接给内容追加
生成器
有yield的就是生成器,你去调用的话这个函数不会运行的,需要你next和for去用
用好yield可以很好的节省内存,做优化;用多少拿多少
生成器函数:yield 函数里的东西 一点点返还给你,碰到yield就暂停了
next(生成器对象)会从上次yield位置继续往下走
#生成器函数
def func():print("进来了")yield 11 #返回一个11 用next接受#走到yield 冻结了,要往下执行,需要继续调nextprint("又来了")yield 22print("最后一次")yield 33gen=func()v1=next(gen)
print(v1)v2=next(gen)
print(v2)v3=next(gen)
print(v3)
#生成器函数
def func():print("进来了")yield 11 yield 22print("最后一次")yield 33gen=func()
for it in gen:print(it)def create_big_num(maxnum):start=0while True:yield startstart+=1if start==maxnum:returnobj=create_big_num(10)
for its in obj:print(its)
python的装饰器
@...语法糖
装饰器就是拓展一个函数的功能,info就像一个参数被outer的func接收,进到outer里面,有个inner函数,开始执行inner,而res接收func,其实就是接收info的执行结果,所以里面info这个函数被调用,最后返回info结果,返回inner结果。一层套一层这样,outer就是这个装饰器,inner函数是具体内容实现,内部调用info函数
结果就是before,info,after
def outer(func):def inner():print("before")res=func()print("after")return resreturn inner@outer
def info():print("info")info()
没有@这个语法糖,上面调用 的话就得这么写
ans=outer(info)
ans()
其实就等于 逻辑上的,ans=inner
换句话说,其实使用装饰器的是,默认传入的参数就是被装饰的函数
#语法糖
@xxx() #@函数名
def ss():pass调用ss()
python内部会自动执行 xxx(ss),执行完之后把结果赋值给ss
等于ss=xxx(ss)
xxx就充当了装饰器,形成了闭包
提一嘴有关py的作用域,全局变量在局部里面,只能去读,或者修改内部元素(也是能是可变的类型,,比如列表等等),,注意是不能赋值的,。如果要赋值,需要在局部里面给变量标识globol,标志他是全局的变量
局部和全局同名,局部内部操作,优先是局部,,如果找不到才会往上一级去找
lis=[1,2,3,4,"你好"]
print(lis)
def sis():lis=[5,5,5,"sas"]lis[0]="jk"print(lis)lis.append("再见")print(lis)sis()
print(lis)
只能修改,可变类型的
lis=[1,2,3,4,"你好"]
print(lis)
def sis():lis[0]="jk"print(lis)lis.append("再见")print(lis)#下面两个报错#lis=[5,5,5]#print(lis)sis()
print(lis)
lis={1,2}
print(lis)
def sis():lis.add("sas")print(lis)#下面两个报错#lis=[5,5,5]#print(lis)sis()
print(lis)
简单的网站代码:
from flask import Flaskapp=Flask(__name__)def index():return "首页"def info():return "中心"app.add_url_rule("/index/",view_func=index)
app.add_url_rule("/info/",view_func=info)app.run()
运行:


有关三元运算
三元运算和lambda可以实现简单的函数
lambda只能写一行,三元运算可以进行简单的条件判断
三元运算 # true if 条件 else falsefunc=lambda x: "大了" if x>66 else "小了"print(func(1))print(func(99))
内置排序

推导式:
列表,字典,集合都可以,直接就生成了对应数据
而对于元组用推导式,生成的是生成器对象,,需要用next或者for去使用
num_list=[i for i in range(10) if i>6]
num_list=[(i,i) for i in range(10) if i>6]
print(num_list)num_set={i if i%2 else -i for i in range(10)}
print(num_set)
exp:
dis={'opi':"光头强",'is':"熊大",'lp':"熊二",'498':"美羊羊"}res=sorted(dis.items(),key=lambda x:x[0])
print(res)
data="%".join(["{}={}".format(key,value) for key,value in res])
print(data)
新浪面试题:
dip=[lambda x:x+i for i in range(10)]#i变成9最后
v1=dip[0](100) #执行到这 才去lambda x+i这块执行函数
v2=dip[3](100)
print(v1,v2) #都是109
包文件夹都会有个__init__.py这个主要就是说明这个包是干嘛的,,py2里面必须有,py3里面可以不需要,,建议弄包的时候都创建这么个文件
对于导入包来说,想要导入任意的包怎么办?
#添加到python的内置路径位置
import sys
sys.path.append("想要添加的路径")
注意:写模块名称的时候不能和内置模块重名

有关面向对象里面三种方法
类方法(传类),绑定/实例方法(传对象),静态方法(不用传类或者对象去调用)
其实对于三种方法来说,类和对象都是可以去调用的,只不过依情况而定
一般而言,用对象去调用绑定方法;类去调用类方法;类去调用静态方法

相关文章:
Python心经(3)
这一节总结点demo和常用知识点 目录 有关字符串格式化打印的 lambda匿名函数,,将匿名函数作为参数传入 文件读写 生成器 python的装饰器 简单的网站代码: 有关三元运算 推导式: 新浪面试题: 有关面向对象里…...
单工,半双工,全双工通讯
对于点对点之间的通信,按照消息传送的方向与时间关系,通信方式可分为单工通信、半双工通信及全双工通信三种。 单工通信 单工通信(Simplex Communication)是指消息只能单方向传输的工作方式。 在单工通信中,通信的信…...
【2023-05-09】 设计模式(单例,工厂)
2023-05-09 设计模式(单例,工厂) 单例模式 顾名思义,就是整个系统对外提供的实例有且只有一个 特点: 1、单例类只有一个实例 2、必须是自己创建唯一实例 3、必须给所以对象提供这个实例 分类ÿ…...
批量任务导致页面卡死解决方案
需求背景 需要基于高德地图展示海量点位(大概几万个),点位样式要自定义(创建DOM),虽然使用了聚合点,但初始化时仍需要将几万个点位的DOM结构都创建出来。 这里补充一句,高德地图在2.…...
避免“文献综抄”,5种写作结构助你完成文献综述→
很多作者可能有过这样的体验:读了很多文献,但在写综述的时候总感觉不像是在写文献综述,更像在写文献总结 如果引用方面不注意,甚至会成为文献综抄。 那么,你可以参考下我们整理的以下资料哦~ 01 文献总结和文献综述的…...
Java异常和反射
JAVA 异常分类及处理 概念 } final Entry<K,V> getEntryUsingComparator(Object key) { K k (K) key; // 获取该 TreeMap 的 comparator Comparator<? super K> cpr comparator; if (cpr ! null) { // 从根节点开始 Entry<K,V> p …...
Accesss数据库的那点事
Accesss数据库的那点事 1.Access的简介 Access(全称为Microsoft Access)是一个关系型数据库管理系统(RDBMS)。它是由微软公司开发的数据库软件,用于创建、管理和操作数据库应用程序。 Access提供了一个可视化的开发环…...
网络基础学习:osi网络七层模型
osi网络七层模型 什么是OSI,什么是ISO?为什么ISO要提出OSI网络七层模型?OSI七层的划分以及具体内容第七层 应用层第六层 表示层第五层 会话层第四层 传输层第三层 网络层第二层 数据链路层第一层 物理层 每一层与设备的对应关系 什么是OSI,什…...
EndNote X9 引用参考 单击文献编号,不能跳转到文尾文献列表处,咋解决?文献编号 不能跳转 ,怎么办?
文章目录 1 正常情况下 引用文献编号 是可以跳转的2 问题分析3 解决方法4 EndNote X9 插入参考文献常见问题总结5 EndNote X9 快速上手教程(毕业论文参考文献管理器) 1 正常情况下 引用文献编号 是可以跳转的 正确的插入文献后, 正常情况下&a…...
用免费蜜罐工具配置Modbus工控蜜罐
导语:本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板,并介绍部署后的Modbus蜜罐的使用效果。 DecoyMini是一个免费的蜜罐工具,其特色是仿真能力采用与软件松耦合的仿真模板来进行管理。通过一键式导入云端仿真模板库里的…...
DataGridXL中快速搜索单元格和底部全屏模式区域隐藏
DataGridXL表格是在2020年发布,DataGridXL在设计时就考虑到了性能。提供最快、最简单、最可靠的数据网格。DataGridXL支持所有常用所有的浏览器,为 Web 应用程序提供类似于 Microsoft Excel 的体验,它支持前端框架有Vue、React、Angular等。 …...
DotNet几种微服务框架,你用过吗?
最近有群友问,.NET有哪些微服务框架?.NET的微服务框架还真不多,一般企业都会自己搭建微服务框架,或者基于其它框架搭建微服务(比如abp)。本文将介绍几种微服务框架,供大家学习参考。 一、Servi…...
Nature | 生成式人工智能如何构建更好的抗体
疫情高峰期,研究人员竞相开发一些首批有效的COVID-19治疗方法:从已经康复的人的血液中分离出来的抗体分子。 现在,科学家已经证明,生成式人工智能(AI)可以通过一些繁琐的过程提供捷径,提出增强抗…...
【hive】基于Qt5和libuv udp 的lan chat
作者已经不更新了,但是很棒 在线用户列表: 聊天窗口 主程序 单独的网络线程: network_thread data管理关联网络管理的 程序update升级更新 和消息收到 即可...
Java版本工程项目管理系统源码,助力工程企业实现数字化管理
Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下: 首页 工作台:待办工作、消息通知、预警信息,点击可进入相应的列表 项目进度图表:选择(总体或单个)项目显示…...
什么是零拷贝?
零拷贝 什么是零拷贝 零拷贝指的是,从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是 通过DMA总线技术实现的。零拷贝与具体的编程语言无关,完全依赖于OS,OS支持就可使用,不支持 设置了也不起作用…...
计算机专业含金量高的证书
目录 第一种证书:计算机技术与软件专业资格考试证书 第二种证书:微软认证 第三种证书:Oracle认证 第四种证书:思科认证 第五种证书:华为认证 第六种证书:红帽认证工程师 第七种证书:阿里…...
原装二手Keithley 2401低压源表 吉时利2401数字源表
Keithley 2401低压源表,20V,1A,20W Keithley 2401 低压源表提供精密电压和电流源和测量功能(1V - 20V 和 10pA - 1A)。它既是高度稳定的直流电源,又是真正的仪器级 5 位万用表。电源特性包括低噪声、精度和…...
gradle-8.1.1-all 快速下载百度网盘下载
Gradle 8.1.1 发布 这是Gradle 8.1的第一个补丁发布。 它修复了以下3个问题: 为配置缓存检测具有数千个lambdas的类时出现MethodTooLargeException;用Gradle 8.1构建的Kotlin DSL预编译脚本插件不能用于其他版本的Gradle;Gradle 8.1在buil…...
C#开发的OpenRA游戏之基地工程车部署命令产生过程
C#开发的OpenRA游戏之基地工程车部署命令产生过程 OpenRA游戏里,前面已经分析基地工程车部署的流程, 但那只是一个框架的流程,只能理解大体的框架, 如果想要深入一步了解怎么样产生部署命令,还需继续探讨以下的代码。 基地工程车是先选中,然后再在基地工程车上面点击右…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
Axios请求超时重发机制
Axios 超时重新请求实现方案 在 Axios 中实现超时重新请求可以通过以下几种方式: 1. 使用拦截器实现自动重试 import axios from axios;// 创建axios实例 const instance axios.create();// 设置超时时间 instance.defaults.timeout 5000;// 最大重试次数 cons…...
什么是Ansible Jinja2
理解 Ansible Jinja2 模板 Ansible 是一款功能强大的开源自动化工具,可让您无缝地管理和配置系统。Ansible 的一大亮点是它使用 Jinja2 模板,允许您根据变量数据动态生成文件、配置设置和脚本。本文将向您介绍 Ansible 中的 Jinja2 模板,并通…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
android13 app的触摸问题定位分析流程
一、知识点 一般来说,触摸问题都是app层面出问题,我们可以在ViewRootImpl.java添加log的方式定位;如果是touchableRegion的计算问题,就会相对比较麻烦了,需要通过adb shell dumpsys input > input.log指令,且通过打印堆栈的方式,逐步定位问题,并找到修改方案。 问题…...
MySQL 索引底层结构揭秘:B-Tree 与 B+Tree 的区别与应用
文章目录 一、背景知识:什么是 B-Tree 和 BTree? B-Tree(平衡多路查找树) BTree(B-Tree 的变种) 二、结构对比:一张图看懂 三、为什么 MySQL InnoDB 选择 BTree? 1. 范围查询更快 2…...
Chrome 浏览器前端与客户端双向通信实战
Chrome 前端(即页面 JS / Web UI)与客户端(C 后端)的交互机制,是 Chromium 架构中非常核心的一环。下面我将按常见场景,从通道、流程、技术栈几个角度做一套完整的分析,特别适合你这种在分析和改…...
ubuntu22.04有线网络无法连接,图标也没了
今天突然无法有线网络无法连接任何设备,并且图标都没了 错误案例 往上一顿搜索,试了很多博客都不行,比如 Ubuntu22.04右上角网络图标消失 最后解决的办法 下载网卡驱动,重新安装 操作步骤 查看自己网卡的型号 lspci | gre…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
算术操作符与类型转换:从基础到精通
目录 前言:从基础到实践——探索运算符与类型转换的奥秘 算术操作符超级详解 算术操作符:、-、*、/、% 赋值操作符:和复合赋值 单⽬操作符:、--、、- 前言:从基础到实践——探索运算符与类型转换的奥秘 在先前的文…...
