使用with
在对文件进行写入操作之后,一定要牢记一个事情:file.close(),这个操作千万不要忘记,忘记了怎么办,那就补上吧,也没有什么天塌地陷的后果。
有另外一种方法,能够不用这么让人揪心,实现安全地关闭文件。
>>> with open("130.txt","a") as f:
... f.write("\nThis is about 'with...as...'")
...
>>> with open("130.txt","r") as f:
... print f.read()
...
learn python
http://qiwsir.github.io
qiwsir@gmail.com
hello
This is about 'with...as...'
>>>
这里就不用close()了。而且这种方法更有Python味道,或者说是更符合Pythonic的一个要求。
名称
并非所有对象都有名称,但那些有名称的对象都将名称存储在其 __name__ 属性中。注:名称是从对象而不是引用该对象的变量中派生的。
>>> dir() #dir()函数
['__builtins__', '__doc__', '__name__', '__package__', 'keyword', 'math']
>>> directory = dir #新变量
>>> directory() #跟dir()一样的结果
['__builtins__', '__doc__', '__name__', '__package__', 'directory', 'keyword', 'math']
>>> dir.__name__ #dir()的名字
'dir'
>>> directory.__name__
'dir'
>>> __name__ #这是不一样的
'__main__'
模块拥有名称,Python 解释器本身被认为是顶级模块或主模块。当以交互的方式运行 Python 时,局部__name__ 变量被赋予值 '__main__' 。同样地,当从命令行执行 Python 模块,而不是将其导入另一个模块时,其 __name__ 属性被赋予值 '__main__' ,而不是该模块的实际名称。这样,模块可以查看其自身的 __name__ 值来自行确定它们自己正被如何使用,是作为另一个程序的支持,还是作为从命令行执行的主应用程序。因此,下面这条惯用的语句在 Python 模块中是很常见的:
if __name__ == '__main__':
# Do something appropriate here, like calling a
# main() function defined elsewhere i