深拷贝和浅拷贝
import copy
a=[1,2,3,['a','b','c']]
c=copy.copy(a)
#python 中的赋值操作都是对对象的浅拷贝,拷贝引用(“多个标签指向同一内存区”),
#一旦内存空间的内容改变,所有标签对应的内容都会改变,浅拷贝只拷贝父对象(标签)
#但是copy方法会重新开辟新的内存空间,改变内容不影响深拷贝的副本内容
数字字符串是不可变类型,列表字典是可变类型
即使是copy函数,改变变量内容的子元素中属于可变类型的值的时候,子元素变量的内容也会跟着改变,
因为子元素其实也共享着同一块内存空间,虽然父变量已经改变地址。父对象所占的空间不一样。
深拷贝是对对象资源的拷贝 d=copy.deepcopy(a)
对象完全独立开来,完完全全有自己的空间和内容,
这样不仅父元素的地址变化了,子元素的地址也变化了
对程序的效率会有影响。。
python 文件读写
open 函数或者 file类
fo = open('/root/test.txt')
fo.read()
fo.close()
f1=file('/root/test.txt')
f1.read()
f1.read()
f1.close()
mode
r 只读 r+ 读写 w 写入以追加的形式写入,先删除在写入,没有文件则创建 w+ 读写 先删除在写入,没有文件则创建
fo = open('/root/test.txt','w')
先读在写 会追加到文件末尾,但是如果直接写 则会从头开始覆盖文件
文件流的指针操作
f1.seek(偏移量,选项) 其中选项可以为0(文件开头),1(文件当前),2(文件结尾)
f1.flush() 把文件提交更新。
OS 模块
import os
os.mkdir('test',mode=777) 还有os.listdir('xxxxx') 列出目录 os.makedirs('a/b/c') 创建多级目录 os.rmdir('xxxxx') 和 os.removedir('a/b/c')
查看目录的多级结构 用tree xxxx 命令
os.getcwd() 得到当前目录路径
os.chdir('/') 切换当前目录到根目录
os.isdir('/') 判断路径是文件还是目录
g=os.walk('/root/testdir') g.next() 返回结果是一系列格式如('/root/testdir',[目录下的目录],[目录下的文件])的列表
每次只要g.next() 就可以返回对应目录下的元组,然后不断的对目录进行深度搜索
for path,d,filelist in os.walk('/root/test'):
for filename in filelist:
os.path.join(path,filename)
这样就获得了文件目录下的所有文件的路径
异常处理
try:
except 异常类型(如IOError),msg :
pass
finally:
pass
raise TypeErrot('Error: 'a' must be integer) 让程序自己抛出异常 其中TypeError是系统内定的异常类型,括号里的是异常信息
python 操作mysql
import MySQLdb
conn=MySQLdb.connect(user='root',passwd='',host='127.0.0.1')
cur=conn.cursor()
conn.select_db('week')
cur.execute("insert into userinfo(name,age,gender) value('luis',20,'m ')")
sqli="insert into userinfo(name,age,gender) value (%s.%s,%s)"
cur.execute(sqli,('csvt',5,'s'))
sqli="insert into userinfo(name,age,gender) values (%s.%s,%s)"
cur.executemany(sqli,[('vt',5,'s'),('c',1,'s'),('t',23,'m')])
cur.execute("select * from userinfo")
cur.fetchone() 只能一个个取出,结果为元组的集合
cur.scroll(偏移量,位置) 如 (0,'absolute') 让游标指针回到起始位置
cur.fetchmany(n) 表示一次性取出n条
cur.close()
conn.close()
python面向对象
Class Test:
first =123
second=456
def f(self)
return 'test'
类的方法中至少有一个参数self !!!!
实例化
if __name__=="__main__":
yuyi = Test()
yuyi.f()
yuyi.first