小小程序员的第二篇笔记
1.生成器函数
使用yield返回返回值,函数并没有结束,还可以继续执行
生成器一次返回一个(组)数据
def func1():
yield "h"
yield "e"
yield "l"
yield "l"
yield "o"
gen = func1() #生成器对象
1)生成器对象
循环生成器对象时,一次获取一个值
for i in gen:
print(i)
将生成器对象强制类型转换为列表
print(list(gen))
2)元组生成器
生产或处理大量数据,使用生成器一个一个的处理,用于节省内存空间
gen = (2 ** i for i in range(1,65))
print(gen)
print(list(gen))
斐波那契序列(兔子序列)
0 1 1 2 3 5 8 13 21 34 55 89 144 233
def feibo(n):
a,b,s =0,1,1
while s < n:
s += 1
yield a #返回数据不会结束函数
a,b =b,a+b
for i in feibo(10000):
print(i)
input()
2.装饰器函数
在不修改原函数代码的前提下,给原函数增加或修改功能,可以使用装饰器函数
其中有一个名字叫装饰语法糖是@tools
特点:a.它是一个高阶函数
b. 将原函数作为参数,放到装饰器内部定义的函数中执行
c. 在内部函数中增加新的功能
d. 返回内部函数用于替换原函数
使用场景:框架中定义特定功能的函数,日志,验证,权限的管理
来一个装饰器函数的例子
def tools(func):
def inter(*args,**kwargs):
print("开始执行…")
res = func(*args,**kwargs)
print("结束执行…")
return res
return inter
3.文件
被持久化存储在磁盘上的字符串
4.文件的操作
1)读操作:将文件中的字符串加载进内存
2)写操作:将字符串写入到磁盘中的操作
例如:open函数用于读写文件
print(help(open))
4.参数
1)file:文件名
注意路径:绝对路径 r"C:\test\hello.txt"
相对路径 next\hello. txt
2)encoding:指定open函数在读写文件时使用 的字符集
windows 默认字符集是gbk
notepad++ 默认字符集是utf-8
open函数在windows上默认字符集是gbk,在Linux上 默认字符集是utf-8,open函数执行后返回一个对象文件
3)mode
“r” 只读模式(默认)
"w"只写模式,文件不存在可以创建文件,文件存在时覆盖文件
"a"追加模式,文件不存在创建文件,文件存在时将内容添加到文件末尾
5.文件对象read( )方法默认将文件中所有字符串读取到内存,
也可以根据字符个数读取read(n)[n表示字符个数]。
文件中的换行也占一个字符,使用\n表示
readline( ) 按行读取数据
readlines( ) 将所有数据按行存放到列表中
f = open(r"D:\python\test.txt",mode="r",encoding="utf-8")
foods = f. readlines()
f. close()
print(foods)
foods. insert(1,"蛋糕\n")
writelines(list) 将列表中字符串直接写入到文件
write(string)将字符串写入到文件
f = open(r"D:\python\test.txt",mode="w",encoding="utf-8")
f. write lines(foods)
f. write("苹果\n桃子\n葡萄\n草莓\n")
f. close()
6.加载词库
def load_word(file):
print("开始加载数据…")
f = open(file,encoding="utf-8")
data = f. readlines()
f. close()
print("加载成功!")
return data
def find_word():
data = load_word("word.txt")
while True:
w = input("请输入您要查询的内容,输入Q退出:")
if w =="Q":
break
n = 0
for line in data:
if w in line:
n += 1
print(n,line,end="")
find_word()
input()
7.模块
.py文件,所有的python脚本都可以作为python模块被调用
8.包:存放有相互关联的一组python模块的文件夹,例如:init_.py文件
*从包中引用所有模块或从模块中引用所有的函数和变量
9.pyc:经过python编译后的py模块文件,执行速度更快
import p1
print(p1.a+p1.b)
p1.hello()
from p1 import a,b
from p1 import hello as h
print(a,b,a+b)
h()
from tools. p1 import hello
hello()
10.模块的类型
内置模块 自定义模块 第三方模块
#sys是python内置模块,修改或调用python解释器的方法
import sys## 标题
#将模块的所在路径添加到python的模块路径中
print(system.path)
system. path. append("d:\\")
#pip命令可以下载安装第三方模块
安装 pip install 模块名
卸载 pip uninstall 模块名
查看 pip list
11.模块的调用
.py文件就是一个模块
使用关键字 import或from xxx import xxx 引用模块
import m1
print(m1.a,m1.b,m1.a+m1.b)
m1.hello()
from m1 import hello,a,b
hello()
print(a,b,a+b)
#使用包
import bao
from bao. m1 import hello
hello