Python初学者的几个迷惑点
程序员文章站
2022-05-04 14:29:53
1.bytes和str函数 那我接下来就简述下他文章的意思吧: bytes格式时二进制型的文件,全为010101之类的,而str为字符串型的 bytes函数中的参数为bytes(字符串,encoding=' 括号里面经常填utf 8')其中encoding一定要填,str函数则为str()与其是一样 ......
1.bytes和str函数
那我接下来就简述下他文章的意思吧:
- bytes格式时二进制型的文件,全为010101之类的,而str为字符串型的
- bytes函数中的参数为bytes(字符串,encoding=' 括号里面经常填utf-8')其中encoding一定要填,str函数则为str()与其是一样的格式,针对utf-8格式为万国码格式,一个英文字母一个字节,一个中文字符三个字节
- bytes数据有方法decode方法:x.decode('utf-8'),因此我们前面的read方法返回的是字符串类型数据,而str则有方法encode类型,这两个方法可将这两个数据类型转为utf-8类型
- python已经严格区分了bytes和str两种数据类型,你不能在需要bytes类型参数的时候使用str参数,反之亦然。这点在读写磁盘文件时容易碰到
那么我们平时看到的以b'开头后面的字码其实就是utf-8编码,虽然应该为0101的形式,但是计算机上给我们看的时候编码了一下变成了这种形式,而你使用byte函数的时候,其实也就是在告诉计算机你在手动编码,而平时这个操作是由计算机自动转换的,而str编码就是那种可以直接看到中文字的形式
以及每次使用requests请求后得到的网页内容text都有一个属性encoding
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;
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()
下面解析他的具体结构:
#python学习交流qq群:579817333 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__()
-
__ enter__()方法被执行
-
__ enter__()方法返回的值 - 这个例子中是"foo",赋值给变量'sample'
-
执行代码块,打印变量"sample"的值为 "foo"
-
__ exit__()方法被调用with真正强大之处是它可以处理异常。可能你已经注意到sample类的__exit__方法有三个参数- val, type 和 trace。这些参数在异常处理中相当有用。
在一开始的例子中也就相当于:
1.打开文件
2.返回了文本的内容
3.执行读取操作
上一篇: 李亨是一个十分懦弱的人 为何敢在安史之乱北上灵武称帝
下一篇: 怕吵醒你