python3和python2的区别
Posted 夏晓旭
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python3和python2的区别相关的知识,希望对你有一定的参考价值。
进入不同语言版本的Python交互环境
py -2
py -3
pip 命令的执行 :
py -2 -m pip install xxxx
py -3 -m pip install xxxx
pip3 install nose 这个也可以
执行python文件
py -2 a.py
py -3 a.py
也可以进入到python3.6的安装目录
把python.exe 修改为python3.exe
在环境变量里面加入这个Python3.6的路径
Python3改变的点:
Print重大变化,print 后加括号
D:\\test\\pytyon3>py -3
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("hello")
hello
>>> print ("hello",end="")
hello>>>
print ("hello",end=""),没有end默认以回车结尾,end表示以什么结尾,就不是以回车结尾了,
python3里没有xrange了,只有range,会生成一个迭代器,相当于python2的xrange
>>> range(1,10)
range(1, 10)
>>> list(range(1,10))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>>
>>> for i in range(1,10,2):
... print (i)
...
1
3
5
7
9
a=iter(range(10))生成一个迭代器,用next(a)访问
>>> a=iter(range(10))
>>> next(a)
0
>>> next(a)
1
>>> next(a)
2
str类型-重大变化
>>> s="s"
>>> type(s)
<class \'str\'>
>>>
python3:str类型---》相当于py2的unicode类型
str类型encode之后变为了bytes类型---》相当于python2的str类型
>>> s="s"
>>> type(s)
<class \'str\'>
>>> type(s.encode(\'utf-8\'))
<class \'bytes\'>
>>> s="我们"
>>> print (s)
我们
>>> print (s.encode("gbk"))
b\'\\xce\\xd2\\xc3\\xc7\'
>>> print (s.encode("gbk").decode("gbk"))
我们
Python3下即使encode成gbk-和cmd默认编码格式一样,也不能显示,因为encode后是bytes类型,要在unicode格式下才可以显示
Python3默认是unicode类型
读文件:可以执行编码格式
fp=open("d:\\\\a.txt","r",encoding="utf-8")
>>> fp=open("d:\\\\a.txt","r",encoding="utf-8")
>>> fp.read()
\'\\ufeff光荣之路学习,\\n夏晓旭\\n嘻嘻嘻嘻 \'
With open
>>> with open("d:\\\\a.txt","r",encoding="utf-8") as fp:
... print (fp.read())
...
光荣之路学习,
夏晓旭
嘻嘻嘻嘻
>>>
Python3 MySQL安装
pip3 install PyMySQL
import pymysql
# 打开数据库连接
db = pymysql.connect("localhost","testuser","test123","TESTDB" )
# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()
# 使用 execute() 方法执行 SQL 查询
cursor.execute("SELECT VERSION()")
# 使用 fetchone() 方法获取单条数据.
data = cursor.fetchone()
print ("Database version : %s " % data)
# 关闭数据库连接
db.close()
pickle序列化
pickle可以把变量的放在文本里,下次打开时可以从文本里取
import pickle
data2 = [1,2,3,4]
det_str = pickle.dumps(data2)
print(det_str)
pickle参考博客
https://www.cnblogs.com/zhangxinqi/p/8034380.html
thread改成了threading
thread 模块已被废弃。用户可以使用 threading 模块代替。所以,在 Python3 中不能再使用"thread" 模块。为了兼容性,Python3 将 thread 重命名为 "_thread"。
Import queue,首字母不能大写
>>> import queue
>>> import Queue
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ModuleNotFoundError: No module named \'Queue\'
>>> queue.Queue(10)
<queue.Queue object at 0x000001C4882AE860>
>>> q=queue.Queue(10)
>>> q.put(0)
>>> q.get()
0
想要用时间字符串中加中文,需要引入locale的包
>>> import time
>>> import locale
>>> locale.setlocale(locale.LC_CTYPE, \'chinese\')
\'Chinese_China.936\'
>>> print(time.strftime(\'%Y年%m月%d日\'))
2018年08月16日
写文件时需要注意:不能用encode之类的
写文件后返回一个写入的字节数
>>> with open("e:\\\\x.txt","w",encoding="utf-8") as fp:
... fp.write("我们\\n你们\\n")
...
6
>>>
>>> with open("d:\\\\a.txt","w",encoding="utf-8") as fp:
... fp.write("我们")
...
2
Python3里没有cmp函数了
以上是关于python3和python2的区别的主要内容,如果未能解决你的问题,请参考以下文章