Python心经(3)

news2024/9/22 15:45:55

这一节总结点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:  #自带close
    num=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:  #自带close
    for 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 冻结了,要往下执行,需要继续调next
    print("又来了")
    yield 22
    print("最后一次")
    yield 33

gen=func()

v1=next(gen)
print(v1)

v2=next(gen)
print(v2)

v3=next(gen)
print(v3)
#生成器函数
def func():
    print("进来了")
    yield 11 
    yield 22
    print("最后一次")
    yield 33

gen=func()
for it in gen:
    print(it)

def create_big_num(maxnum):
    start=0
    while True:
        yield start
        start+=1
        if start==maxnum:
            return
        
obj=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 res
    return 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 Flask

app=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  false

func=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("想要添加的路径")

注意:写模块名称的时候不能和内置模块重名

有关面向对象里面三种方法

类方法(传类),绑定/实例方法(传对象),静态方法(不用传类或者对象去调用)

其实对于三种方法来说,类和对象都是可以去调用的,只不过依情况而定

一般而言,用对象去调用绑定方法;类去调用类方法;类去调用静态方法

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/506164.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot项目中一些常用的,工具类

推荐多使用这个: Hutool参考文档Hutool,Java工具集https://hutool.cn/docs/#/core/%E9%9B%86%E5%90%88%E7%B1%BB/%E9%9B%86%E5%90%88%E5%B7%A5%E5%85%B7-CollUtil?id%e4%bb%8b%e7%bb%8d 1:断言 断言是一个逻辑判断,用于检查不应…

芯片封装技术(三)

Interposer 是一种用于连接芯片的中间层技术,它的基底通常是一块硅基底,而硅基底也是 Substrate 的一种。因此,Interposer 与 Substrate 有一定的关系。对于RDL Interposer来说,Si Interposer的信号布线密度进一步提高&#xff0c…

[Linux] Linux文件系统

🥁作者: 华丞臧. 📕​​​​专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 文章目录 一、Linux文件系统1.1 磁盘1.2 inode1.3 软硬…

Philosophy of life: growing flowers in your heart

Growing flowers in your heart An aged man lived in a nice cottage with a large garden in a town in England. He is seen busy looking after his flowers all time. 第一部分介绍的是: 有一个老人在英格兰的镇上有一个带大花园的屋子,他一直在忙着照顾他的花…

机器学习实战:带你进入AI世界!

机器学习是人工智能领域的一个重要分支,可以帮助我们从大量数据中发现规律,进行预测和分类等任务。然而,想要真正掌握机器学习算法,并将其应用到实际问题中,还需要进行大量的实战练习。 本文将介绍几个常见的机器学习实…

seurat -- 细胞注释部分

文章目录 brief寻找差异基因部分注释细胞部分详细参数 brief 细胞注释大概分为两步:差异基因 --> marker genes —> map reference 差异基因可以是表达量上存在差异也可以是表达细胞占比上存在差异,通常二者兼顾考虑。 marker genes 个人理解为…

蓝牙网状网络的基本原理及应用开发

借助蓝牙 5 的网状网络功能,开发人员可以增强无线连接系统(如物联网设备)的通信范围和网络可用性。但是,网状网络的低功耗无线硬件设计与网状网络软件开发之间存在着复杂的层次,这可能会使开发人员迅速陷入混乱并危及项…

GLM论文精读-自回归填空的通用语言模型

GLM作为ChatGLM的前期基础论文,值得精读。本文是对GLM论文的精读笔记,希望对大家有帮助。GLM主要思想概述,利用自回归填空的思想,基于transformer的编码器实现了同时在NLU和有无条件生成任务上较好的表现。 基本信息 原文&#…

设计模式 -- 备忘录模式

前言 月是一轮明镜,晶莹剔透,代表着一张白纸(啥也不懂) 央是一片海洋,海乃百川,代表着一块海绵(吸纳万物) 泽是一柄利剑,千锤百炼,代表着千百锤炼(输入输出) 月央泽,学习的一种过程,从白纸->吸收各种知识->不断输入输出变成自己的内容 希望大家一起坚持这个过程,也同…

邮件营销自动化:优化营销流程,提升转化率

对于希望与客户联系,并推广其产品或服务的企业来说,电子邮件营销是一个强大的工具。然而,随着电子邮件通信量的持续增长,企业要跟上客户对个性化和及时性消息的需求,可能会面临一定的挑战。而这就是电子邮件营销自动化…

干货满满!破解FP安全收款难题

怎样安全收款是做擦边产品卖家比较忧虑的问题,2023年已经即将来到了年中,跨境卖家们在这一方面做得怎么样了呢? 这期分享破解FP独立站收款难题的方法。 一、商家破解FP收款难题方法 1.第三方信用通道 优点:信用卡在国外使用率比…

强化学习p2-价值学习

基本概念 折扣回报(Discounted Return) 在 MDP 中,通常使用折扣回报 (discounted return),给未来的奖励做折扣。折扣回报的定义如下: U t R t γ R t 1 γ 2 R t 2 γ 3 R t 3 . . . U_t R_t\gamma R_{t1}\gamma ^2R_{t2}\gamma ^3R_{t3}...…

【IoT】<硬件产品经理进阶课> 正式在CSDN学院上线

目录 课程目录 适用人群 课程介绍 课程地址 课程目录 001-产品经理进阶:开课介绍 002-产品经理进阶:产品经理简介 003-产品经理进阶:产品经理所需具备的核心素质 004-产品经理进阶:产品经理的进阶路径 005-产品经理进阶&a…

指定城市|眼科医生入世界名校斯坦福大学访学深造

J医生计划利用一年时间自费到美国进行访学交流。提出的要求是专业匹配,兼顾基础医学研究及眼科临床观摩,并且指定城市,希望在今年3、4月份出国。最终我们确定了世界名校斯坦福大学。邀请函上明示:访学期间除从事基础研究外&#x…

手把手教你学习PyQT5:打造精美、功能强大的桌面应用程序(更新中。。)

目录 前言一、PyQt5介绍&开发环境安装&简单案例分析1-1、PyQt5的介绍1-2、开发环境安装1-3、简单案例分析 二、QT Designer2-1、安装和配置2-2、QT Designer基础入门2-3、ui文件转换为python文件 三、PyQt5基本窗口控件(QMain Window、Qwidget、QDialog、Ql…

C# 利用ffmpeg的image2pipe参数实现USB摄系头本地预览同时推流

本地USB摄像头在使用中时,不支持另一个程序的并发访问,也就是所USB摄像头只能令第一个连接的程序“独享”。 在开发一个软件时,希望实现预览USB摄像头的同时,实现摄像头的推流。 推流要用的ffmpeg,经过资料查找&…

mac m2芯片 安装 brew 和cocoapods

Homebrew的安装 /bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 这里可能会失败,如 git clone 时候报错 error: RPC failed; curl 92 HTTP/2 stream 5 was not closed cleanly before end of the underlyi…

进程(二)

进程二 2.6 调度的概念、层次2.6.1 基本概念2.6.2 三个层次2.6.3 三层调度的联系、对比2.6.4 补充知识2.6.5 本小节总结 2.7 进程调度的时机、切换与过程、方式2.7.1 进程调度的时机2.7.2 切换与过程2.7.3 进程调度的方式2.7.4 总结 2.8 调度器/调度程序/闲逛线程2.9 调度算法的…

HTML5 + JavaScript绘柱状图

之前用HTML5 JavaScript绘柱状图,可以直观显示各类型产品或品牌的所占比例大小。详见: HTML5 JavaScript绘柱状图1 现在需要针对每年获得各类品牌数据进行对比,绘制柱状图会更直观。 首先我们定义二维数组aBrandType,存放品牌…

双指针的基本应用

一、环形链表 I 方法1:哈希表 struct hashTable {struct ListNode* key;UT_hash_handle hh; };struct hashTable* hashtable;struct hashTable* find(struct ListNode* ikey) {struct hashTable* tmp;HASH_FIND_PTR(hashtable, &ikey, tmp);return tmp; }void insert(struc…