这一节总结点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)相关推荐

  1. Python心经(6)

    目录 callable super type()获取对应类型 isinstance判断对象是否是某个类或者子类的实例 issubclass,判断对象是不是类的子孙类 python3的异常处理 反射: ...

  2. Python心经(2)

    有关数字类型,字符串,函数 目录 有关数字类型,字符串,函数 数字 字符串 索引操作 切片操作 单个字符编码 运算符 还有一些常用的内置函数 Python输入函数 输出函数print()语法 pyth ...

  3. Python心经(5)

    目录 python对于类和实例,,都能随时动态绑定 属性或者函数 可以通过__slots__去限定实例所能绑定属性的范围 python里面类很多定制函数__xx__ 下面给个python里面枚举类型 ...

  4. Python心经(4)

    这节记录一些内置模块的使用 目录 hashlib模块,,加密用 json模块 os模块 一个实用的案例: os模块的找文件的操作 随机生成random模块 时间相关模块 time,datetime h ...

  5. Python心经(1)

    因为工作要用python写一些脚本,所以自己就开始学习了一下. 这个系列不知道能更多少,看我学的深浅吧.总之先过一下语法,记录一下学习的时候敲的demo 代码测试的话我用vscode+python解释 ...

  6. 语音控制 python_用Python编程实现语音控制电脑

    电脑面前的你,是否也希望能让电脑听命于你? 当你累的时候,只需说一声"我累了",电脑就会放着优雅的轻音乐来让你放松. 或许你希望你在百忙之中,能让电脑郎读最新的NBA比分赛况-.一 ...

  7. python性能测试方法_Python实现测试磁盘性能的方法

    本文实例讲述了Python实现测试磁盘性能的方法.分享给大家供大家参考.具体如下: 该代码做了如下工作: create 300000 files (512B to 1536B) with data f ...

  8. python中的集合类型_Python中的集合类型知识讲解

    >>> s.add('z') >>> s set(['c', 'e', 'h', 'o', 'p', 's', 'z']) >>> s.updat ...

  9. python列表常用操作_Python列表(list)常用操作方法小结

    常见列表对象操作方法: list.append(x) 把一个元素添加到链表的结尾,相当于 a[len(a):] = [x] . list.extend(L) 将一个给定列表中的所有元素都添加到另一个列 ...

最新文章

  1. PHP TP5框架 安装运行 Warning: require(E:\phpstudy_pro\WWW\TP5\tp5\public/../thinkphp/base.php): failed to
  2. 使用 Python 的基于边缘和基于区域的分割
  3. linux插光驱自动重启,Linux两种光驱自动挂载的方法
  4. C语言基础-第一个C程序
  5. 工作与生活的平衡-一些955的良心公司
  6. 第十六天:9.1规划人力资源管理。
  7. CodeForces - 1523E Crypto Lights(组合数学+推公式)
  8. 1、Tensorflow 之 saver与checkpoint
  9. 第一百三十二期:MySQL系列:一句SQL,MySQL是怎么工作的?
  10. ICCV 2021 best paper-Swin Transformer:对各类SOTA的降维打击!
  11. php 如何生成txt文件,PHP生成TXT文件
  12. TeXmacs 中文输入问题
  13. 存储卡规格等级全解!SD卡TF卡都能用
  14. c# excel插入图表
  15. Epub格式电子书格式
  16. 印刷行业中过UV是什么意思?
  17. 重装系统后笔记本电脑无线wifi怎么连接
  18. 计算机基础课程-书籍和视频教程资源
  19. 敏捷实践不可忽略的环节
  20. 取消关闭计算机怎么弄,win7自动关机命令怎么设置和取消

热门文章

  1. Simple Gestures on Android
  2. 服务器多如何开虚拟机,服务器可以多开虚拟机
  3. Sedona NetFusion SDN软件升级指出更多网络分析和报告功能
  4. 基于安卓的备忘录文件加密_手机里面还隐藏一个扫描仪功能,以后扫描文件,都不用去复印店了...
  5. 【动态ppt制作软件】Focusky教程 | 如何在微信朋友圈上分享自己的Focusky作品?
  6. Microsoft Excel 教程:如何在 Excel 中移动或复制工作表或工作表数据?
  7. c语言程序设计循环结构求奇数和,C语言程序设计实验报告循环结构程序设计.doc...
  8. 烟台二中高考2021成绩查询,烟台二中|2021新高考I卷数学试卷分析
  9. 【行业分析】震坤行工业超市:数字化趋势下的生意该怎么做
  10. C++函数与结构体——哥德巴赫猜想