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

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、必须给所以对象提供这个实例 分类&#xff…...

批量任务导致页面卡死解决方案

需求背景 需要基于高德地图展示海量点位(大概几万个),点位样式要自定义(创建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&#xff08;全称为Microsoft Access&#xff09;是一个关系型数据库管理系统&#xff08;RDBMS&#xff09;。它是由微软公司开发的数据库软件&#xff0c;用于创建、管理和操作数据库应用程序。 Access提供了一个可视化的开发环…...

网络基础学习:osi网络七层模型

osi网络七层模型 什么是OSI&#xff0c;什么是ISO?为什么ISO要提出OSI网络七层模型&#xff1f;OSI七层的划分以及具体内容第七层 应用层第六层 表示层第五层 会话层第四层 传输层第三层 网络层第二层 数据链路层第一层 物理层 每一层与设备的对应关系 什么是OSI&#xff0c;什…...

EndNote X9 引用参考 单击文献编号,不能跳转到文尾文献列表处,咋解决?文献编号 不能跳转 ,怎么办?

文章目录 1 正常情况下 引用文献编号 是可以跳转的2 问题分析3 解决方法4 EndNote X9 插入参考文献常见问题总结5 EndNote X9 快速上手教程&#xff08;毕业论文参考文献管理器&#xff09; 1 正常情况下 引用文献编号 是可以跳转的 正确的插入文献后&#xff0c; 正常情况下&a…...

用免费蜜罐工具配置Modbus工控蜜罐

导语&#xff1a;本文将用DecoyMini免费蜜罐工具来配置自定义的ModbusTCP工控仿真模板&#xff0c;并介绍部署后的Modbus蜜罐的使用效果。 DecoyMini是一个免费的蜜罐工具&#xff0c;其特色是仿真能力采用与软件松耦合的仿真模板来进行管理。通过一键式导入云端仿真模板库里的…...

DataGridXL中快速搜索单元格和底部全屏模式区域隐藏

DataGridXL表格是在2020年发布&#xff0c;DataGridXL在设计时就考虑到了性能。提供最快、最简单、最可靠的数据网格。DataGridXL支持所有常用所有的浏览器&#xff0c;为 Web 应用程序提供类似于 Microsoft Excel 的体验&#xff0c;它支持前端框架有Vue、React、Angular等。 …...

DotNet几种微服务框架,你用过吗?

最近有群友问&#xff0c;.NET有哪些微服务框架&#xff1f;.NET的微服务框架还真不多&#xff0c;一般企业都会自己搭建微服务框架&#xff0c;或者基于其它框架搭建微服务&#xff08;比如abp&#xff09;。本文将介绍几种微服务框架&#xff0c;供大家学习参考。 一、Servi…...

Nature | 生成式人工智能如何构建更好的抗体

疫情高峰期&#xff0c;研究人员竞相开发一些首批有效的COVID-19治疗方法&#xff1a;从已经康复的人的血液中分离出来的抗体分子。 现在&#xff0c;科学家已经证明&#xff0c;生成式人工智能&#xff08;AI&#xff09;可以通过一些繁琐的过程提供捷径&#xff0c;提出增强抗…...

【hive】基于Qt5和libuv udp 的lan chat

作者已经不更新了,但是很棒 在线用户列表: 聊天窗口 主程序 单独的网络线程: network_thread data管理关联网络管理的 程序update升级更新 和消息收到 即可...

Java版本工程项目管理系统源码,助力工程企业实现数字化管理

Java版工程项目管理系统 Spring CloudSpring BootMybatisVueElementUI前后端分离 功能清单如下&#xff1a; 首页 工作台&#xff1a;待办工作、消息通知、预警信息&#xff0c;点击可进入相应的列表 项目进度图表&#xff1a;选择&#xff08;总体或单个&#xff09;项目显示…...

什么是零拷贝?

零拷贝 什么是零拷贝 零拷贝指的是&#xff0c;从一个存储区域到另一个存储区域的copy任务无需CPU参与就可完成。零拷贝的底层是 通过DMA总线技术实现的。零拷贝与具体的编程语言无关&#xff0c;完全依赖于OS&#xff0c;OS支持就可使用&#xff0c;不支持 设置了也不起作用…...

计算机专业含金量高的证书

目录 第一种证书&#xff1a;计算机技术与软件专业资格考试证书 第二种证书&#xff1a;微软认证 第三种证书&#xff1a;Oracle认证 第四种证书&#xff1a;思科认证 第五种证书&#xff1a;华为认证 第六种证书&#xff1a;红帽认证工程师 第七种证书&#xff1a;阿里…...

原装二手Keithley 2401低压源表 吉时利2401数字源表

Keithley 2401低压源表&#xff0c;20V&#xff0c;1A&#xff0c;20W Keithley 2401 低压源表提供精密电压和电流源和测量功能&#xff08;1V - 20V 和 10pA - 1A&#xff09;。它既是高度稳定的直流电源&#xff0c;又是真正的仪器级 5 位万用表。电源特性包括低噪声、精度和…...

gradle-8.1.1-all 快速下载百度网盘下载

Gradle 8.1.1 发布 这是Gradle 8.1的第一个补丁发布。 它修复了以下3个问题&#xff1a; 为配置缓存检测具有数千个lambdas的类时出现MethodTooLargeException&#xff1b;用Gradle 8.1构建的Kotlin DSL预编译脚本插件不能用于其他版本的Gradle&#xff1b;Gradle 8.1在buil…...

C#开发的OpenRA游戏之基地工程车部署命令产生过程

C#开发的OpenRA游戏之基地工程车部署命令产生过程 OpenRA游戏里,前面已经分析基地工程车部署的流程, 但那只是一个框架的流程,只能理解大体的框架, 如果想要深入一步了解怎么样产生部署命令,还需继续探讨以下的代码。 基地工程车是先选中,然后再在基地工程车上面点击右…...

C++ 智能指针的原理、分类、使用

1. 智能指针介绍 为解决裸指针可能导致的内存泄漏问题。如&#xff1a; a&#xff09;忘记释放内存&#xff1b; b&#xff09;程序提前退出导致资源释放代码未执行到。 就出现了智能指针&#xff0c;能够做到资源的自动释放。 2. 智能指针的原理和简单实现 2.1 智能指针的原…...

学习笔记——SVG.js中形状元素的创建及其相关方法

CreateElement 1&#xff09;创建svg元素 在svg.js中&#xff0c;每个元素都是一个对象&#xff0c;可以通过构造它来创建&#xff1a; import { Rect } from "svgdotjs/svg.js" var rect new Rect().size(100, 100).addTo(draw) // or to reuse an existing nod…...

Linux一学就会——系统文件I/O

Linux一学就会——系统文件I/O 有几种输出信息到显示器的方式 #include <stdio.h> #include <string.h> int main() {const char *msg "hello fwrite\n";fwrite(msg, strlen(msg), 1, stdout);printf("hello printf\n");fprintf(stdout, &q…...

OpenCV-Python图像阈值

目录 简单阈值 自适应阈值 Otsu的二值化 所谓的图像阈值&#xff0c;就是图像二值化&#xff0c;什么是二值化&#xff0c;就是只有0和1&#xff0c;没有其他的。在OpenCV的图像里面&#xff0c;二值化表示图像的像素为0和255&#xff0c;并没有其他的值&#xff0c;它跟灰度…...

LangChain-Agents 入门指南

LangChain-Agents 入门指南 LangChain-Agents 入门指南注册 Serpapi运行高级 Agents API 测试运行 Google Search其它 Here’s the table of contents: LangChain-Agents 入门指南 LangChain是一个使用LLMs构建应用程序的工具箱&#xff0c;包含Models、Prompts、Indexes、Mem…...

深度学习-tensorflow 使用keras进行深度神经网络训练

概要 深度学习网络的训练可能会很慢、也可能无法收敛&#xff0c;本文介绍使用keras进行深度神经网络训练的加速技巧&#xff0c;包括解决梯度消失和爆炸问题的策略&#xff08;参数初始化策略、激活函数策略、批量归一化、梯度裁剪&#xff09;、重用预训练层方法、更快的优化…...

【NLP开发】Python实现聊天机器人(ChatterBot,集成前端页面)

&#x1f37a;NLP开发系列相关文章编写如下&#x1f37a;&#xff1a; &#x1f388;【NLP开发】Python实现词云图&#x1f388;&#x1f388;【NLP开发】Python实现图片文字识别&#x1f388;&#x1f388;【NLP开发】Python实现中文、英文分词&#x1f388;&#x1f388;【N…...

Python 操作 Excel,如何又快又好?

➤数据处理是 Python 的一大应用场景&#xff0c;而 Excel 则是最流行的数据处理软件。因此用 Python 进行数据相关的工作时&#xff0c;难免要和 Excel 打交道。Python处理Excel 常用的系列库有&#xff1a;xlrd、xlwt、xlutils、openpyxl ◈xlrd &#xff0d; 用于读取 Exce…...

Spring Redis 启用TLS配置支持(踩坑解决)

由于线上Redis要启用TLS,搜遍了google百度也没一个标准的解决方案,要不这个方法没有,要不那个类找不到...要不就是配置了还是一直连不上redis.... 本文基于 spring-data-redis-2.1.9.RELEASE 版本来提供一个解决方案: 1.运维那边提供过来三个文件,分别是redis.crt redis.key …...

centOS7忘记登录密码该如何重新修改登录密码

文章目录 前言一、重新修改登录密码1.1、第一步1.2、第二步1.3、第三步1.4、第四步1.5、第五步1.6、第六步1.7、第七步1.8、第八步 前言 忘记密码并不可怕&#xff0c;只要学会方法&#xff0c;密码随时都可以找回。 一、重新修改登录密码 1.1、第一步 当打开centOS7之后忘记…...