Python初学的几个迷惑点
Posted gausstu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python初学的几个迷惑点相关的知识,希望对你有一定的参考价值。
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.360doc.com/content/16/0905/16/25664332_588595085.shtml
https://www.cnblogs.com/DswCnblog/p/6126588.html
以上是关于Python初学的几个迷惑点的主要内容,如果未能解决你的问题,请参考以下文章