python学习
程序员文章站
2022-03-13 14:29:23
学习python中as的用法 对于文件操作,正常的操作方法是: filename = raw_input("please enter you filename:") # open and exceptiontry: fs = open(filename)except: print "open fil ......
学习python中as的用法
对于文件操作,正常的操作方法是:
filename = raw_input("please enter you filename:")
# open and exception
try:
fs = open(filename)
except:
print "open file %s failed" % filename
exit(-1)
# read file
data = fs.read()
print "file data %s" % data
# close file
fs.close()
为了简化操作,可以通过as取代打开文件的except部分和关闭文件,简化写法:
filename = raw_input("please enter you filename:")
with open(filename) as fs:
data = fs.read()
print "file data %s" % data
原理:
紧跟with后面的语句被求值后,返回对象的 __enter__() 方法被调用,这个方法的返回值将被赋值给as后面的变量。
当with后面的代码块全部被执行完之后,将调用前面返回对象的 __exit__()方法。
扩展:
C++中比较头疼的是内存泄露问题,如果使用new动态申请内存,需要时刻记得delete回收内存,避免发生内存泄露。
对于分支很多的代码来讲,在多个分支进行内存释放很容易产生遗漏,排查代码非常浪费时间。
为了避免这种情况,C++采用智能指针的方式进行内存管理,智能指针本身就是一个类,在类的对象超出作用域范围时,会自动调用析构函数。
因此,只需要在析构函数中完成内存的释放即可,非常方便,智能指针内容详见下一篇笔记。