1.bytes 和 str 函数
这个得感谢这个博主的分享 https://www.cnblogs.com/chownjy/p/6625299.html
那我接下来就简述下他文章的意思吧:
bytes 格式时二进制型的文件, 全为 010101 之类的, 而 str 为字符串型的
bytes 函数中的参数为 bytes(字符串, encoding='括号里面经常填 utf-8') 其中 encoding 一定要填, str 函数则为 str() 与其是一样的格式, 针对 utf-8 格式为万国码格式, 一个英文字母一个字节, 一个中文字符三个字节
bytes 数据有方法 decode 方法, 因此我们前面的 read 方法返回的是字符串类型数据, 而 str 则有方法 encode 类型, 这两个方法可将这两个数据类型转为 utf-8 类型
Python 已经严格区分了 bytes 和 str 两种数据类型, 你不能在需要 bytes 类型参数的时候使用 str 参数, 反之亦然. 这点在读写磁盘文件时容易碰到
2.python 的 try 语句
- try...except....else
- try A:
- B;
- except C: #如果发生错误看是否为错误类型 C
- D;
- except E: #如果在 try 后的语句里发生了异常, 却没有匹配的 except 子句, 异常将被递交到上层的 try, 或者到程序的最上层 (这样将结束程序, 并打印缺省的出错信息)
- F;
- else G; #如果程序未出错则执行 G
- H;
- try...finally
- try A:
- B;
- finally C: #不管有无发生错误都会执行 C 语句
- D;
详情还可以参考这篇博客 https://blog.csdn.net/sdustliyang/article/details/23159659
3. with...as 结构
这个语法是用来代替传统的 try...finally 语法的
- file = open("/tmp/foo.txt")
- try:
- data = file.read()
- finally:
- file.close()
使用 with...as... 的方式替换, 修改后的代码是:
- with open("/tmp/foo.txt") as file:
- data = file.read()
下面解析他的具体结构:
- class Sample:
- #魔法方法相当于他的属性
- def __enter__(self):
- print "In __enter__()"
- return "Foo"
- def __exit__(self, type, value, trace):
- print "In __exit__()"
- def get_sample():
- return Sample()
- with get_sample() as sample:
- print "sample:", sample
结果为
- In __enter__()
- sample: Foo
- In __exit__()
1. __enter__() 方法被执行
2. __enter__() 方法返回的值 - 这个例子中是 "Foo", 赋值给变量'sample'
3. 执行代码块, 打印变量 "sample" 的值为 "Foo"
4. __exit__() 方法被调用 with 真正强大之处是它可以处理异常. 可能你已经注意到 Sample 类的__exit__方法有三个参数 - val, type 和 trace. 这些参数在异常处理中相当有用.
在一开始的例子中也就相当于:
1. 打开文件
2. 返回了文本的内容
3. 执行读取操作
来源: http://www.bubuko.com/infodetail-2735840.html