合肥网站制作报,临泉建设网站,扁平化网站建设公司,网站展示型推广有哪些这一节总结点demo和常用知识点
目录
有关字符串格式化打印的
lambda匿名函数#xff0c;#xff0c;将匿名函数作为参数传入
文件读写
生成器
python的装饰器
简单的网站代码#xff1a;
有关三元运算
推导式#xff1a;
新浪面试题#xff1a;
有关面向对象里…这一节总结点demo和常用知识点
目录
有关字符串格式化打印的
lambda匿名函数将匿名函数作为参数传入
文件读写
生成器
python的装饰器
简单的网站代码
有关三元运算
推导式
新浪面试题
有关面向对象里面三种方法 有关字符串格式化打印的
nameasas
age12
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菜鸟教程, urlwww.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,sad12)print(type(fx))funs(5,func)
lambda匿名函数将匿名函数作为参数传入
格式是 lambda 参数 : 函数体 只能写一行
def test_func(com):print(f结果是:{com(1,2)})#lambda匿名函数将匿名函数作为参数传入
test_func(lambda x,y:xy) 文件读写
fdopen(D:/xxt.txt,r,encodingUTF-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,encodingUTF-8) as f: #自带close
做一个小案例。。要不说python方便 案例是打开文件统计一下里面Python3的个数
方法1
with open(D:/xxt.txt,r,encodingUTF-8) as f: #自带closenumf.read()print(Python3的数量是:,num.count(Python3))
方法2
strip()去除开头和结尾的空格和换行符
Python split() 通过指定分隔符对字符串进行切片如果参数 num 有指定值则分隔 num1 个子字符串
ans0
with open(D:/xxt.txt,r,encodingUTF-8) as f: #自带closefor line in f:lsline.strip() #去除开头尾巴空格 换行符print(ls)wordsls.split( ) #以空格分割for word in words:if wordPython3:ans1
print(ans)
写的操作的话就是writew文件不存在就创建存在清空重新写a直接给内容追加
生成器
有yield的就是生成器你去调用的话这个函数不会运行的需要你next和for去用
用好yield可以很好的节省内存做优化用多少拿多少
生成器函数yield 函数里的东西 一点点返还给你碰到yield就暂停了
next生成器对象会从上次yield位置继续往下走
#生成器函数
def func():print(进来了)yield 11 #返回一个11 用next接受#走到yield 冻结了要往下执行需要继续调nextprint(又来了)yield 22print(最后一次)yield 33genfunc()v1next(gen)
print(v1)v2next(gen)
print(v2)v3next(gen)
print(v3)
#生成器函数
def func():print(进来了)yield 11 yield 22print(最后一次)yield 33genfunc()
for it in gen:print(it)def create_big_num(maxnum):start0while True:yield startstart1if startmaxnum:returnobjcreate_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函数
结果就是beforeinfoafter
def outer(func):def inner():print(before)resfunc()print(after)return resreturn innerouter
def info():print(info)info()
没有这个语法糖上面调用 的话就得这么写
ansouter(info)
ans()
其实就等于 逻辑上的ansinner
换句话说其实使用装饰器的是默认传入的参数就是被装饰的函数
#语法糖
xxx() #函数名
def ss():pass调用ss()
python内部会自动执行 xxx(ss),执行完之后把结果赋值给ss
等于ssxxx(ss)
xxx就充当了装饰器形成了闭包
提一嘴有关py的作用域全局变量在局部里面只能去读或者修改内部元素也是能是可变的类型比如列表等等注意是不能赋值的。如果要赋值需要在局部里面给变量标识globol标志他是全局的变量
局部和全局同名局部内部操作优先是局部如果找不到才会往上一级去找
lis[1,2,3,4,你好]
print(lis)
def sis():lis[5,5,5,sas]lis[0]jkprint(lis)lis.append(再见)print(lis)sis()
print(lis)
只能修改可变类型的
lis[1,2,3,4,你好]
print(lis)
def sis():lis[0]jkprint(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 FlaskappFlask(__name__)def index():return 首页def info():return 中心app.add_url_rule(/index/,view_funcindex)
app.add_url_rule(/info/,view_funcinfo)app.run()
运行 有关三元运算
三元运算和lambda可以实现简单的函数
lambda只能写一行三元运算可以进行简单的条件判断 三元运算 # true if 条件 else falsefunclambda x: 大了 if x66 else 小了print(func(1))print(func(99)) 内置排序 推导式
列表字典集合都可以直接就生成了对应数据
而对于元组用推导式生成的是生成器对象需要用next或者for去使用
num_list[i for i in range(10) if i6]
num_list[(i,i) for i in range(10) if i6]
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:美羊羊}ressorted(dis.items(),keylambda x:x[0])
print(res)
data%.join([{}{}.format(key,value) for key,value in res])
print(data)
新浪面试题
dip[lambda x:xi for i in range(10)]#i变成9最后
v1dip[0](100) #执行到这 才去lambda xi这块执行函数
v2dip[3](100)
print(v1,v2) #都是109
包文件夹都会有个__init__.py这个主要就是说明这个包是干嘛的py2里面必须有py3里面可以不需要建议弄包的时候都创建这么个文件
对于导入包来说想要导入任意的包怎么办
#添加到python的内置路径位置
import sys
sys.path.append(想要添加的路径)
注意写模块名称的时候不能和内置模块重名 有关面向对象里面三种方法
类方法传类绑定/实例方法传对象静态方法不用传类或者对象去调用
其实对于三种方法来说类和对象都是可以去调用的只不过依情况而定
一般而言用对象去调用绑定方法类去调用类方法类去调用静态方法