python3**2**3的值为_python 2.*和3.*的变化

本文介绍了Python 2到3的主要变化,包括urllib2更改为urllib.request,raw_input和input函数的调整,以及处理字符串和字节对象时的差异。在Python 3中,input()等同于Python 2的raw_input(),而原始的input()功能可以通过eval(input())实现。此外,处理字节数据时需注意模式匹配前加b前缀,以及正确使用encode和decode方法进行字符串与字节间的转换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、urllib2是python自带的模块,在python3.x中被改为urllib.request,如

url = "http://music.baidu.com/album/all?order=time&style=pop"

html = urllib.request.urlopen(url).read()

2、raw_input 和 input

在 Python 版本 2.x 中,raw_input() 会从标准输入(sys.stdin)读取一个输入并返回一个字符串,且尾部的换行符从末尾移除

>>>quest = raw_input("What is your quest? ")

What is your quest? To seek the holy grail.

与之不同,Python 2.x 中的 input() 函数需要的是一个有效的 Python 表达式,比如 3+5

最初,曾有人建议将 input() 和 raw_input() 从 Python 内置的名称空间一并删除,因此就需要进行导入来获得输入能力。这从方法上就不对;因为,简单键入:

>>>quest = input("What is your quest?")

将会变为:

>>>import sys

>>>print("What is your quest?")

>>>quest = sys.stdin.readline()

对于一个简单输入而言,这太过繁琐,并且对于一个新手,这未免太难理解。往往需要向他们讲述模块 和导入 究竟是怎么回事、字符串输出以及句点操作符又是如何工作的(如此麻烦的话,与 Java™ 语言就没什么差别了)。所以,在 Python 3 内,将 raw_input() 重命名为 input(),这样一来,无须导入也能从标准输入获得数据了。如果您需要保留版本 2.x 的 input() 功能,可以使用 eval(input()),效果基本相同。

3、can't use a string pattern on a bytes-like object

3.0现在的参数更改了,现在读取的是bytes-like的,但参数要求是chart-like的,故定义pattern的时候在前面加一个小b,表示要操作的对象是bytes类型就可以了,,如

url = "http://music.baidu.com/album/all?order=time&style=pop"

html = urllib.request.urlopen(url).read()

uri = re.findall(b'/song/d+',html,re.M)

s.encode(encoding) -> bytes

b.decode(encoding) -> str

bytes 就是一堆字节,str 是字符串;你把字符串按某种编码编码之后就成了一堆字节,正确地解码后就成了字符串。

eg1:

# apps.append(apk.split(":")[-1].split("=")[0])报错:TypeError: 'str' does not support the buffer interface

按照下面做一个转换,就fix了

s=apk.decode("GBK").split(":")[-1].split("=")[0]

apps.append(s)

eg2:

out = shell("dumpsys window w | %s \/ | %s name=" %(find_util, find_util)).stdout.read()

return pattern.findall(out)[0]

报错:can't use a string pattern on a bytes-like object

按照下面做一个转换,就fix了

out = shell("dumpsys window w | %s \/ | %s name=" %(find_util, find_util)).stdout.read().decode("GBK")

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值