ホームページ  >  記事  >  バックエンド開発  >  Python2と3の違いを説明してください

Python2と3の違いを説明してください

coldplay.xixi
coldplay.xixi転載
2021-01-11 09:28:483201ブラウズ

Python2と3の違いを説明してください

関連する無料学習の推奨事項: Python ビデオ チュートリアル

##python2 と python3 の違い

    違い
  • 1. python3.0
    • #1.print のいくつかの変更Function
    • 2.Unicode
    • 3.除算演算
    • 4.Exception
    • 5.xrange
    • 6.8 進リテラル表現
    • 7. 不等演算子
    • #8. repr 式「
    • 9. 複数のモジュールの名前が変更されました (PEP8 に従って)
    • #10 .Data type##」
    • #概要
  • 相違点

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
# でのいくつかの変更


#1.print function

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=', ')

2.Unicode

# をサポートしています。

## 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関数を使用する必要があります。

4. 例外

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&#39;lalala&#39;type(b)#输出<type &#39;bytes&#39;>

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 サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。