#文件
f=open("E:\\a.txt","w")#在E盘下以只写的方式打开a.txt文件,绝对位置
f.write("北京我爱你")#将引号里的内容写入a.txt
f.close()#关闭a.txt
f=open("b.txt","w")#相对位置
f.write("234432")
f.close()
f=open("E:\\a.txt","r")#"r"只读
content=f.read()
print(content)
f.close()
f=open("b.txt","r")
content=f.read(3)#只读3个,括号里不填就是全读
print(content)
f.close()
f=open("b.txt","r",encoding="utf-8")
content=f.readline()#一次readline是输出一行
print(content)
content=f.readline()#在此readline是输出下一行
print(content)
content=f.readline(2)#括号里输入数字就是输出这行中的几个字符
print(content)
f.close
f=open("b.txt","r",encoding="utf-8")
content=f.readline()
print(content)
content=f.readlines()#readlines是以行为元素输出剩下的所有行中的字符
print(content,type(content))
f.close()
#read():括号里不填就是全读,填多少就输出前几个字符
#radeline():括号里不填就是全读一行,填多少就输出这行的前几个字符
#readlines():将剩下的所有行以列表的形式输出
f=open("E:\\a.txt","w+")
f.write("北京")#不加\n则保存在同一行
f.write("南京\n")
f.write("上海")
f.close()
f=open("E:\\a.txt","a+")
f.write("123你好123")
f.close()
#"w"会覆盖原内容,“a”是在原内容后面追加内容,不会覆盖
# r只读,r+读写,不创建
# w新建只写,w+新建读写,二者都会将文件内容清零(新文件覆盖旧文件)
# a:附加写方式打开,不可读;a+: 附加读写方式打开
f=open("b.txt","r")
print(f.tell())#开始读之前游标指在0的位置
x=f.read(3)
print(x)
print(f.tell())#读3个数后游标指在3的位置
f.close
f=open("b.txt","r")
x=f.read(4)
print(x)
f.seek(3,0)#第一个参数代表偏移的字符数。第二个参数代表从哪个地方偏移,0代表开头,1代表当前位置,2代表末尾
x=f.read(5)
print(x)
f.seek(0,1)
x=f.read(2)
print(x)
f.close()
import os
os.rename("b.txt","c.txt")#重命名
# os.rename("c.txt","b.txt")
os.remove("b.txt")
os.mkdir("abc",0x777)#r=4,w=2,x=1(执行),第一个7是自己,第二个是7是组,第三个是其他人
os.rmdir("abc")#删除
p=os.getcwd()#获取当前的工作目录(get current work directory)
print(p)
b=os.path.exists("E:\\a.txt")#判断文件或目录是否存在
print(b)
b=os.path.exists("day2.py")
print(b)
os.makedirs("a//b//c")
os.makedirs("d\\e\\f")
import copy
a=3
b=3
c=3
d=c
print(id(a),id(b),id(c),id(d))
print(id(a)==id(b))
print(id(a)==id(c))
print(id(c)==id(d))
a=[1,2,3]
b=[1,2,3]#复杂的类型在声明时会获得一个新的空间。常量拥有固定的空间,是确定的一个区域
c=a
print(id(a))
print(id(b))
print(id(a)==id(b))
print(id(c))
print(id(a)==id(c))
a.append(4)
print(id(a)==id(c))#a和c指向同一个空间,所以a修改后c也被修改
a=3
b=a#此时b指向的是3的位置
a=4#a指向的位置变成4,但是b指向的位置还是3
print(b)
print(id(a)==id(b))
import copy
a=3
b=copy.copy(a)
c=copy.deepcopy(a)
print(id(a)==id(b)==id(c))
import copy
a=[1,2,3]
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
print(id(a)==id(b))
print(id(a)==id(c))
print(id(a)==id(d))
print(id(a))
print(id(b))
print(id(c))
print(id(d))
#copy给的是值,copy常量时地址不发生改变,copy复杂的数据类型时地址会发生变化
import copy
a=[1,2,3,[4,5,6]]
b=a
c=copy.copy(a)
d=copy.deepcopy(a)
print(a,b,c,d)
print(id(a),id(b),id(c),id(d))
a.append(7)
print(a,b,c,d)
print(id(a),id(b),id(c),id(d))
a[3].append(99)
print(a,b,c,d)
print(id(a),id(b),id(c),id(d))
print(id(a[3]),id(c[3]),id(d[3]))
# deepcopy是完全的拷贝,内层外层都拷贝,copy只拷贝外层,内层只拷贝一个地址
#迭代器
a=(1,2,3)
b=iter(a)#iter:依次访问a里面的每一个元素
print(type(b))#iterator:迭代器
print(next(b))
print(next(b))
print(next(b))
# 生成器
def shengcheng(n):
i=0
while i<n:
yield i#yield:暂时停止函数的执行并交出i的值
i+=1
a=shengcheng(1000)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
#用生成器做斐波那契数列
def fbnq(n):
a=0
b=1
i=0
while i<n:
a,b=b,a+b
yield a
i+=1
a=fbnq(12)
for x in a:
print(x)
# 函数的封装
def a(b):
b()
def x():
print("12345")
a(x)
#装饰器
import time
def hanshu(f):#装饰器的函数,f接受被装饰的函数名
def neibu():#装饰内部函数
start=time.time()
f()#调用被装饰的函数
end=time.time()
print(end-start)
return neibu#装饰器返回内部函数,(内部代表的是包装盒)
@hanshu#@加函数名,代表下面的函数被这个函数装饰
def jisuan():
print("12345")
jisuan()
def zs(fun):
def neibu(cs):
print("****************")
fun(cs)
print("****************")
return neibu
@zs
def ych(name):
print(name,"开演唱会")
ych("刘德华")
def zs(fun):
def neibu(cs):
print("************")
fun(cs)
print("************")
return neibu
def zsq(fun):
def neibu(cs):
print("############")
fun(cs)
print("############")
return neibu
@zsq
@zs
def ych(name):
print(name,"开演唱会")
ych("刘德华")
#闭包:闭包的三大要素:
def bb(b):#1.包含内部函数的函数
a=3
def neibu(c):
d=a*b+c#3.内部函数使用了外部函数的变量
return d
return neibu#2.返回内部函数的函数名
x=bb(4)
print(x(5))
print(x(6))
#所以装饰器也形成闭包