ホームページ >バックエンド開発 >Python チュートリアル >Python2と3の違いを説明してください
関連する無料学習の推奨事項: Python ビデオ チュートリアル
##python2 と python3 の違い
Python バージョン 3.0 (通常 python3000 と呼ばれます) は、py3k と呼ばれます。 with 以前のバージョンの Python では、これはメジャー アップグレードです。あまりにも煩わしさをもたらさないために、Python3.0 は下位互換性を考慮して設計されていませんでした。 初期の Python バージョンでは多くの設計が行われています。どのプログラムも正常に実行できません。既存のプログラムを継承するため、python2.6 は移行版として基本的に python2.x の構文とライブラリを使用しますが、python3.0 への移行を考慮し、一部の構文の使用を許可します。 python3.0 の機能と機能. 実行環境に python3.0 をインストールできない場合や、プログラム自体が python3.0 をインストールできないサードパーティ ライブラリを使用している場合を除き、新しい Python プログラムは python3.0 バージョンの構文を使用することをお勧めします。 python3.0 をサポートします。現在はサポートされていません Python 用のサードパーティ ライブラリには、Twisted、py2exe、PIL などが含まれます。 0 はすぐには使用できません。互換性のあるバージョン 3.0 の Python プログラムを作成することをお勧めします。その後、2.6 および 2.7 を使用して実行します。
1. python3.0
# でのいくつかの変更
print ステートメントはなくなり、print() 関数に置き換えられました。python2.6 と python2.7 はこの形式の print 構文を部分的にサポートしています。 python2.6 と 2.7 では、次の 3 つの形式は同等です
print "我是菜鸟"print (我是菜鸟) #注意print后边有个空格print("我是菜鸟") #print()不能带有其他任何参数
しかし、python2.6 は実際には新しい print() 構文 from _future_import print_functionprint("我是个菜鸟","我好菜啊",sep=', ')
# をサポートしています。
## python2 は ASCII str() 型ですが、unicode() は別で byte 型ではありません。現在、python3 には Unicode (utf-8) 文字列と、バイト クラス (byte および bytearrays) が含まれています。 Python3 以降、この言語には高度でやや複雑なルールがあり、Python の除算には / と // の 2 つの演算子があります。まず、除算について話しましょう。
python3.x の除算ではこれがなくなり、整数間の除算の結果も浮動小数点数になります。 (ここでは0/1と理解できます) //除算ですが、この除算はフロア除算と呼ばれ、除算の結果に対して自動的にフロア演算が行われますが、これはpython2.xでも一貫しています。および 3.x。 我没女友='I have no girlfriends'print(我没女友)
なお、小数部は切り捨てられませんが、フロア演算が行われますので、小数部を切り取りたい場合は、mathモジュールのtrunc関数を使用する必要があります。
Python3 では例外の処理も少し変更されており、Python3 では as をキーワードとして使用します。例外をキャッチするための構文が、exceed,var から exc as var に変更されました。
複数のカテゴリの例外を同時にキャッチするには、var として例外 (exc1,exc2) という構文を使用します。 python2.6 はすでにこれら 2 つの構文をサポートしています。 ·2.x時代では、すべての種類のオブジェクトを直接スローできましたが、3.x時代では、BaseExceptionを継承したオブジェクトのみをスローできます。
·2.x の raise ステートメントでは、スローされるオブジェクトの型とパラメータをカンマで区切っていますが、3.x ではこの奇妙な書き方をキャンセルし、コンストラクターを直接呼び出してオブジェクトをスローします。
2.x 時代では、コード内の例外はプログラム エラーを表すだけでなく、通常の制御構造が行うべきことを行うこともよくありました。3.x では、設計者が例外をより具体的にしたことがわかります。例外捕捉ステートメントは、エラーが発生した場合にのみ使用できます。
5.例: for ループまたはリスト/セット/辞書の内包表記。
これはジェネレータと非常によく似た動作をします(例:「遅延評価」)。ただし、この xrange-iterable は無限です。つまり、無限に走査できることを意味します。xrange() 関数は遅延評価のため、複数回反復処理する場合 (for ループなど) は range() 関数よりも高速です。ただし、ジェネレーターは毎回最初から開始されるため、1 回ではなく複数回反復することはお勧めできません。 python3 では、range() は xrange() と同様に実装されるため、専用の xrange() 関数は存在しなくなりました (python3 の xrange() は名前付き例外をスローします。
6. 8 進リテラル表現
八进制必须写成0o777,原来的形式0777不能用了;二进制0b111。新增了一个bin()函数用于将一个整数转换成二进制字串。python2.6已经支持这两种语法
7.不等运算符
python2.x中不等于 !=和a8093152e673feb7aba1828c43532094
python3.x中不等于只有!=
8.去掉了repr表达式"
python2.x中反引号"相当于repr函数的作用
python3.x中去掉了"这种写法,只允许repr函数,感觉repr只有debug的时候才用,多数时候还是用str函数来用字符串描述对象。
9.多个模块被改名(根据PEP8)
旧名字 | 新名字 |
---|---|
_winreg | winreg |
ConfigParser | configparser |
copy_reg | copyreg |
Queue | queue |
SocketServer | socketserver |
repr | reprlib |
StringIO模块现在被合并到新的io模组内new,md5,gopherlib等模块被删除 。python2.6已经支援新的io模组。
httplibBase,HTTPServer,CGIHTTPServer,SimpleHTTPServer,Cookie,cookerlib被合并到http包内。取消了exec语句只剩下exec()函数。python2.6已经支援exec()函数。
10.数据类型
python3.x去除了long类型,现在只有一种整型——int
新增了bytes类型,对应于2.x版本的八位串,定义一个butes字面量方法如下
b=b'lalala'type(b)#输出<type 'bytes'>
str对象和bytes对象可以使用encode()(str->bytes)or.decode()(bytes->str)方法互相转换。
s=b.decode()b1=s.encode()
dict的.keys()、.items和.values()方法返回迭代器,而之前的iterkeys()等函数都被遗弃。同事去掉的还有dict.has_key(),用in替代它吧>_<。
总结
总之一句话,用python3吧,不要再倔强了!
才开始学习计算机不久,第一次写博客,如果有问题希望大家指正,希望我们能一起学习一起进步。共勉!
以上がPython2と3の違いを説明してくださいの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。