Python2.X和Pyhon3.X的语法区别
1、print函数:
(1)2.X
print函数后面加一个空格,然后直接写上要输出的内容。输出的内容可以是任何的Python数据,包括None。例如:
a=10
b=’xyz’
c=None
print a,b,c
(2)3.X
print函数后面要把输出的内容用圆括号括起来,例如:
a=10
b=’xyz’
c=None
print (a,b,c)
2、input函数
(1)2.X
有两个输入函数分别是input()和raw_input()。
①Input()函数只能输入数值,既可以是整数也可以是浮点数,但不能输入字符串,输入的信息按照数值类处理,例如:
x=input(‘please input a number:’)
假如你输入的是10,那么x这个变量就是10这个数。如果你输入abc,此时会报错
②raw_input()函数可以输入字符和数字,但结果都按照字符串处理,例如:
x=raw_input(‘please input your info:’)
假如你输入的是10,那么x这个变量就是’10’这个字符串。如果你输入abc,x变量就是’abc’这个字符串。
(2)3.X
只有一个input()函数,含义等同于2.X的raw_input(),也就是说无论输入什么内容都按字符串处理。例如:
x=input(‘please input your info:’)
假如你输入的是10,那么x这个变量就是’10’这个字符串。如果你输入abc,x变量就是’abc’这个字符串。
注意:如果你需要输入数值怎么办呢,需要用强制转换,int()或float(),例如:
x=int(input(‘please input a number:’))
此时如果你输入10,x这个变量就是10这个数值,如果输入abc,会报错,特别要注意到的是输入9.8(浮点数)时也会报错。
再例如:
x=float(input(‘please input a number:’))
此时如果你输入9.8,x就是9.8这个数值,如果输入10,x就是10.0,而不会报错,但是如果输入abc,程序报错。
3、网络发送和接收函数send() ,recv(),sendto(),recvfrom()
(1)2.X
可以直接发送和接收字符串,不用编码和解码,例如
data=clientsock.recv(1024)
print(data)
此时的data就是一个字符串,如果套接字收到hello信息,data就是’hello’这个字符串。
再例如:
data=’nice to meet you’
clientsock.send(data)
就可以了。
recvfrom和sendto也是一样。
(2)3.X
send和sendto时需要对字符串进行编码操作(encode),recv和recvfrom时需要对收到的数据进行解码操作,例如:
data=clientsock.recv(1024) #此时的data是一个字节序列,不是字符串
print(data.decode())#要输出这个内容需要使用decode方法进行解码。
再例如:
data=’nice to meet you’
clientsock.send(data.encode())#发送时,需要对字符串进行编码
4、异常处理try……except的格式
(1)2.X
格式是:
try:
clientsock.send(data)
except Exceptioin,e:
print(‘error’)
注意红色字体部分和3.X不同
(2)3.X
格式是:
try:
clientsock.send(data)
except Exceptioin as e:
print(‘error’)
注意:当没有Exception时,2.X和3.X的格式是一样的。
5、有些系统包的名称不同,例如2.X里有一个SocketServer的包,注意它含两个大写的S,而在3.X中这个包的名称为socketserver。当这种情况出现时,可以使用搜索的方式找到相关的数据包,对应好它们在不同环境下的名称就行了。
6、2.X不直接支持中文,如果需要用中文时,需要加载编码,3.X可以直接支持中文。