文件的读写:
f=open('E:\\a.txt','w') #w代表只写的方式,打开一个文件,叫a.txt,路径是E盘下
f.write('北京我爱你')
f.close()
f=open('a.txt','w') #相对路径
f=open('a.txt','r')
content=f.read(3)
print(content)
f.close()
f=open('a.txt','r',encoding='utf-8')
content=f.readline() #读一行
print(content)
content=f.readline()
print(content)
content=f.readline()
print(content)
f.close()
f=open('a.txt','r',encoding='utf-8')
content=f.readlines() #读出所有的行,放到列表里
print(content)
f.close()
f=open('a.txt','w')
f.write('北京')
f.write('\n')
f.write('南京')
f.close()
f=open('a.txt','a') #a,是追加
f.write('北京123')
f.close()
f=open('a.txt','r')
print(f.tell())
print('---------')
x=f.read(4)
print(x)
print('-----------')
print(f.tell()) #字节数,光标
print(x)
f=open('a.txt','r')
x=f.read(4)
print(x)
f.seek(0,0)#第一个参数代表的是偏移的字节数,第二个参数从哪个地方偏移,0代表文件头,1代表当前,2代表末尾
x=f.read(4)
print(x)
f.close()
import os #os为操作系统
os.rename('a.txt','c.txt') #重命名
import os
os.remove('a.txt') #删除文件
import os
os.mkdir('abc',0x777) #创建名字为‘abc’的目录,允许所有人读写操作
import os
p=os.getcwd() #获取当前所在目录
print(p)
import os
os.rmdir('abc') #删除目录
import os
b=os.path.exists('c.txt') #查询文件是否存在
print(b)
b=os.path.exists('abc')
print(b)
b=os.path.exists('C:\\Users\\Administrator\\python作业')
print(b)
import os
os.makedirs('a//b//c')
拷贝
import copy
a=3
b=3
print(a==b)
print(id(a)==id(b))
c=3
d=c
print(id(c)==id(d))
import copy
a=[1,2,3]
b=[1,2,3]
print(a==b) #相同
print(id(a))
print(id(b))
c=a
print(id(a)==id(c)) #地址相同
a.append(4)
print(c)
a=3
b=a
a=4
print(b)
import copy
a=3
b=copy.copy(a)
c=copy.deepcopy(a)
print(a,b,c)
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(c))
print(id(d))
copy.copy() #拷贝外层,内层还是用地址
copy.deepcopy() #从里到外彻彻底底的拷贝,不管多少层,全部拷贝
import copy
a=[1,2,3,[4,5,6]]
b=a
c=copy.copy(a) #当浅copy的时候,第一层是新的,第二层用的还是原来的地址
d=copy.deepcopy(a) #当用深copy的时候,所有的内容都是新的,所以不会影响地址
print(id(a)==id(b))
print(id(a)==id(c))
print(id(a)==id(d))
a.append(9)
print(c)
print(d)
a[3].append(99)
print(c)
print(d)
迭代
a=[1,2,3] #列表,元组,字符串,集合,都能迭代
b=iter(a) #迭代器,一次输出一个
print(next(b))
print(next(b))
print(next(b))
print(type(b))
生成器
def hanshu(n):
i=0
while i<n:
yield i
i+=1
a=hanshu(1000)
print(next(a))
print(next(a))
print(next(a))
print(next(a))
print(next(a))
def fbnq(n):
a,b=0,1
i=0
while i<n:
a,b=b,a+b
yield a #返回a的值
i+=1
f=fbnq(10)
for x in f:
print(x)
def a(b):
b()
def x():
print('123')
a(x)
装饰器
import time
def hx(f): #装饰器的函数,f接受被装饰的函数名
def neibu(): #装饰内部函数
start=time.time()
f() #调用被装饰的函数
end=time.time()
print(end-start)
return neibu() #装饰器返回内部函数。(内部代表的是包装盒)
@hx #@加函数名,代表下面的函数被hx装饰
def jisuan():
print('123456')
jisuan
import time
def decor(func):
def nb(cs):
print('***************')
func(cs)
print('***************')
return nb
@decor
def ych(name):
print(name,'开演唱会')
ych('刘德华')
import time
def decor(func):
def nb(cs):
print('***************')
func(cs)
print('***************')
return nb
def dd(func):
def nb(cs):
print('###############')
func(cs)
print('###############')
return nb
@dd
@decor
def ych(name):
print(name,'开演唱会')
ych('刘德华')
装饰器形成了闭包
def hanshu(b): # 1,外部函数包含内部函数的函数
a=3
def nb(c): #闭包
d=a*b+c #3,内部函数使用了外部函数的变量
return d
return nb #2,外部函数返回内部函数名
x=hanshu(4)
print(x(5))
print(x(6))