ホームページ バックエンド開発 Python チュートリアル Python3.xとPython2.xの違いを詳しく解説

Python3.xとPython2.xの違いを詳しく解説

Apr 05, 2017 pm 02:00 PM

Python3.x は Python の革命的なアップグレードであり、以前の多くの機能が廃止され、新しい機能が導入されています。 1.x および 2.x の古いコードと完全な互換性はありません。

Python2.x には下位互換性があり、最新バージョンは Python 2.7 です。その中で、Python が 3.X にスムーズに移行できるようにするためにバージョン 2.6 と 2.7 がリリースされ、3.X の機能もいくつか追加されました。

現在、多くのライブラリは 3.x をサポートしておらず (例: Django、wxPython)、ほとんどのアプリケーションは依然として 2.x に基づいています。初心者はバージョン 2.7 を使用することをお勧めします。

Python 3.X と 2.X の主な違いは次のとおりです

1.パフォーマンス
Py3.0 は、pystone ベンチマークの実行が Py2.5 より 30% 遅くなります。 Guido は、Py3.0 には最適化の余地が大きく、文字列と整数の演算を実行できると信じています
良好な最適化結果を達成するために。
Py3.1 のパフォーマンスは Py2.5 よりも 15% 遅く、まだ改善の余地がたくさんあります。

2. エンコーディング
Py3.X ソース コード ファイルはデフォルトで utf-8 エンコーディングを使用するため、次のコードが合法になります:
>>> 中国 = 「中国」
>>>印刷(中国)
中国

3. 文法
1) <> を削除し、すべて !=
に置き換えます。 2) `` を削除し、代わりに repr() を使用します
3) as および with as キーワード、True、False、None を追加します
4) 整数の除算は浮動小数点数を返します。整数の結果を取得するには、//
を使用してください。 5) 非ローカルステートメントを追加します。ペリフェラル (非グローバル) 変数は、noclocal x
を使用して直接割り当てることができます 6) print ステートメントを削除し、print() 関数を追加して同じ機能を実現します。同じことが exec ステートメントにも当てはまり、 exec() 関数に変更されました
例:
2.X: 「答えは」を出力、2*2
3.X: print("答えは", 2*2)
2.X: x を印刷、 3.X: print(x, end=" ") # スペースを使用して行を置換します
                                                      3.X: print() 2.X: print >>sys.stderr、「致命的エラー」
3.X: print("致命的なエラー", file=sys.stderr)
                                                             3.X: print((x, y)) # print(x, y) とは異なります!
7) x 8) 入力関数が変更され、raw_input が削除され、input に置き換えられました:
2.X:guess = int(raw_input('整数を入力してください : ')) # キーボード入力の読み方
3.X:guess = int(input('整数を入力してください: '))

9) タプルパラメータのアンパックを削除します。 def(a, (b, c)):pass
のような関数を定義することはできません 10) 新しい 8 進ワード変数、oct() 関数がそれに応じて変更されました。
2.Xの方法は以下の通りです:
>>>0666
438
>>> オクト(438)
「0666」
3.X は次のようになります:
>>>0666
SyntaxError: 無効なトークン (、行 1)
>>>0o666
438
>>> オクト(438)
「0o666」
11) バイナリリテラルと bin() 関数を追加しました
>>> ビン(438)
「0b110110110」
>>> _438 = '0b110110110'
>>> _438
「0b110110110」
12) 拡張された反復可能なアンパック。 Py3で。 オブジェクトとシーケンスは反復可能です。
13) 新しい super() は super() にパラメーターを渡すことができなくなりました。
>>> クラス C(オブジェクト):
def __init__(self, a):
print('C', a)
>>> クラス D(C):
def __init(self, a):
super().__init__(a) # パラメーターなしで super() を呼び出します
>>>D(8)
C8
<__main__.D オブジェクト、0x00D7ED90>
14) 新しいメタクラス構文:
クラス Foo(*bases, **kwds):
パス
15) クラスデコレータをサポートします。使用法は関数デコレータと同じです:
>>> def foo(cls_a):
def print_func(self):
print('Hello, world!')
cls_a.print = print_func
cls_a を返す
>>> @foo
クラスC(オブジェクト):
パス
>>> C().print()
こんにちは、世界!
クラスデコレータを使用すると、ジャコウネコを王子様に変えるトリックを実行できます。詳細については、PEP 3129 を参照してください

4. 文字列とバイト文字列 1) 現在、文字列のタイプは str の 1 つだけですが、これは Unicode の 2.x バージョンとほぼ同じです。

2) バイト列については、「データ型」の項目 2 を参照してください

5.データ型 1) Py3.X では long 型が削除され、整数型は int の 1 つだけになりましたが、2 と同様に動作します。 2) バージョン 2.X のオクテット文字列に対応する新しいバイト型が追加されました。バイト リテラルの定義方法は次のとおりです。 >>> b = b'中国'
>>> タイプ(b)
<「バイト」と入力>
str オブジェクトと bytes オブジェクトは、.encode() (str -> bytes) または .decode() (bytes -> str) メソッドを使用して相互に変換できます。
>>> s = b.decode()
>>> 「中国」
>>> b1 = s.encode()
>>> 「中国」
3) dict の .keys()、.items、および .values() メソッドは反復子を返しますが、以前の iterkeys() およびその他の関数は廃止されました。こちらも同時に削除
dict.has_key() を in
に置き換えます

6.オブジェクト指向
1) 抽象基本クラス (抽象基本クラス、ABC) を導入します。
2) コンテナクラスとイテレータクラスが ABC 化されているため、cellections モジュールには Py2.5 よりも多くの型があります。
>>> コレクションをインポートします
>>> print('n'.join(dir(collections)))
呼び出し可能
コンテナ
ハッシュ可能
アイテムビュー
反復可能
イテレーター
キービュー
マッピング
マッピングビュー
可変マッピング
可変シーケンス
可変セット
名前付きタプル
シーケンス
セット
サイズあり
値ビュー
__全員__
__組み込み__
__doc__
__ファイル__
__名前__
_abcoll
_アイテムゲッター
_シス
デフォルト辞書
デク
さらに、数値型も ABC サイズになります。これら 2 つの点については、PEP 3119 および PEP 3141 を参照してください。
3) イテレータの next() メソッドの名前が __next__() に変更され、イテレータの __next__() メソッドを呼び出すための組み込み関数 next() が追加されました
4) 抽象メソッド (プロパティ) の記述をより便利にするために、2 つのデコレーター @abstractmethod と @abstractproperty が追加されました。

7.異常
1) すべての例外は BaseException から継承され、StardardError は削除されます
2) 例外クラスのシーケンス動作と .message 属性を削除しました
3) raise Exception、args 構文の代わりに raise Exception(args) を使用します
4) 例外をキャッチするための構文の変更。Py2.5 では、例外インスタンスを識別するために as キーワードが導入されています:
>>> 試してください:
… NotImplementedError('Error') を発生させます
...NotImplementedError を除く、エラー:

... ... エラーメッセージを印刷します
...
エラー
Py3.0 の場合:
>>> 試してください:
NotImplementedError('エラー') を発生させる
エラーとして NotImplementedError を除く: #これに注意してください
print(str(error))
エラー
5) __context__ がバージョン 3.0a1 に実装されていないため、例外チェーンが発生します

8.モジュールの変更
1) cPickle モジュールは削除され、pickle モジュールで置き換えることができます。最終的には、透過的で効率的なモジュールが完成するでしょう。
2) imageop モジュールを削除しました
3) audiodev、Bastion、bsddb185、例外、linuxaudiodev、md5、MimeWriter、mimify、popen2、
を削除しました。 rexec、sets、sha、stringold、strop、sunaudiodev、timing および xmllib モジュール
4) bsddb モジュールを削除しました (個別にリリースされ、http://www.jcea.es/programacion/pybsddb.htm から入手可能)
5) 新しいモジュールを削除しました
6) os.tmpnam() および os.tmpfile() 関数は tmpfile モジュールに移動されました
7) トークン化モジュールはバイトを扱うようになりました。メインのエントリ ポイントは、generate_tokens ではなく、tokenize.tokenize() になりました

9.その他
1) xrange() の名前が range() に変更されました。 range() を使用してリストを取得したい場合は、明示的に呼び出す必要があります:
>>> リスト(範囲(10))
[0、1、2、3、4、5、6、7、8、9]
2) bytes オブジェクトはハッシュできず、b. lower()、b.strip()、および b.split() メソッドをサポートしませんが、後者の 2 つは b.strip(b’
を使用できます) ntr f’) と b.split(b’ ‘) を使用して同じ目的を達成します
3) zip()、map()、filter() はすべてイテレータを返します。そして apply()、callable()、coerce()、execfile()、reduce()、そして reload
() 関数は削除されました

hasattr() を使用して callable() を置き換えることができるようになりました。 hasattr() の構文は次のとおりです: hasattr(string, '__name__')

4) string.letters および関連する . lowercase および .uppercase は削除されます。代わりに string.ascii_letters などを使用してください
5) x < y を比較できない場合、TypeError 例外がスローされます。バージョン 2.x は擬似ランダムのブール値を返します
6) __getslice__ シリーズのメンバーは放棄されます。 a[i:j] は、コンテキストに応じて a.__getitem__(slice(I, j)) または __setitem__ および
に変換されます。 __delitem__ が
を呼び出します 7) ファイル クラスは Py2.5 で非推奨になりました:
>>> <「ファイル」と入力>
Py3.X の場合:
>>> トレースバック (最後の呼び出し):
ファイル「」、 の 1 行目
ファイル
NameError: 名前「ファイル」が定義されていません

以上がPython3.xとPython2.xの違いを詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

C言語関数の基本的な要件は何ですか C言語関数の基本的な要件は何ですか Apr 03, 2025 pm 10:06 PM

C言語関数は、コードモジュール化とプログラム構築の基礎です。それらは、宣言(関数ヘッダー)と定義(関数体)で構成されています。 C言語は値を使用してパラメーターをデフォルトで渡しますが、外部変数はアドレスパスを使用して変更することもできます。関数は返品値を持つか、または持たない場合があり、返品値のタイプは宣言と一致する必要があります。機能の命名は、ラクダを使用するか、命名法を強調して、明確で理解しやすい必要があります。単一の責任の原則に従い、機能をシンプルに保ち、メンテナビリティと読みやすさを向上させます。

PSのエクスポートPDFのパスワード保護を設定する方法 PSのエクスポートPDFのパスワード保護を設定する方法 Apr 06, 2025 pm 04:45 PM

Photoshopでパスワードで保護されたPDFをエクスポート:画像ファイルを開きます。 [ファイル]&gtをクリックします。 「エクスポート」&gt; 「PDFとしてのエクスポート」。 「セキュリティ」オプションを設定し、同じパスワードを2回入力します。 [エクスポート]をクリックして、PDFファイルを生成します。

H5とミニプログラムとアプリの違い H5とミニプログラムとアプリの違い Apr 06, 2025 am 10:42 AM

H5。ミニプログラムとアプリの主な違いは次のとおりです。技術アーキテクチャ:H5はWebテクノロジーに基づいており、ミニプログラムとアプリは独立したアプリケーションです。経験と機能:H5は軽量で使いやすく、機能が限られています。ミニプログラムは軽量で、インタラクティブが良好です。アプリは強力で、スムーズな経験があります。互換性:H5はクロスプラットフォーム互換性があり、アプレットとアプリはプラットフォームによって制限されています。開発コスト:H5には、開発コストが低く、中程度のミニプログラム、最高のアプリがあります。適用可能なシナリオ:H5は情報表示に適しており、アプレットは軽量アプリケーションに適しており、アプリは複雑な機能に適しています。

C言語関数の概念 C言語関数の概念 Apr 03, 2025 pm 10:09 PM

C言語関数は再利用可能なコードブロックです。彼らは入力を受け取り、操作を実行し、結果を返すことができます。これにより、再利用性が改善され、複雑さが軽減されます。関数の内部メカニズムには、パラメーターの渡し、関数の実行、および戻り値が含まれます。プロセス全体には、関数インラインなどの最適化が含まれます。単一の責任、少数のパラメーター、命名仕様、エラー処理の原則に従って、優れた関数が書かれています。関数と組み合わせたポインターは、外部変数値の変更など、より強力な関数を実現できます。関数ポインターは機能をパラメーターまたはストアアドレスとして渡し、機能への動的呼び出しを実装するために使用されます。機能機能とテクニックを理解することは、効率的で保守可能で、理解しやすいCプログラムを書くための鍵です。

Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Routerフォルダーの下のindex.jsファイルでvue.use(vuerouter)を呼び出す必要があるのはなぜですか? Apr 05, 2025 pm 01:03 PM

Vueアプリケーションを開発するときに、ルーターフォルダーの下にindex.jsファイルにvuerouterを登録する必要性があるため、ルーティング構成で問題が発生することがよくあります。特別...

CとC#の違いと接続は何ですか? CとC#の違いと接続は何ですか? Apr 03, 2025 pm 10:36 PM

CとC#には類似点がありますが、それらは完全に異なります。Cはプロセス指向の手動メモリ管理、およびシステムプログラミングに使用されるプラットフォーム依存言語です。 C#は、デスクトップ、Webアプリケーション、ゲーム開発に使用されるオブジェクト指向のガベージコレクション、およびプラットフォーム非依存言語です。

XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? XPathを使用して、JavaScriptの指定されたDOMノードから検索する方法は? Apr 04, 2025 pm 11:15 PM

JavaScriptのDOMノードの下でのXpath検索方法の詳細な説明、XPath式に基づいてDOMツリーから特定のノードを見つける必要があることがよくあります。あなたがする必要があるなら...

H5とMINIプログラムを宣伝するさまざまな方法は何ですか? H5とMINIプログラムを宣伝するさまざまな方法は何ですか? Apr 06, 2025 am 11:03 AM

H5とMINIプログラムのプロモーション方法には違いがあります。プラットフォーム依存:H5はブラウザに依存し、MINIプログラムは特定のプラットフォーム(WeChatなど)に依存しています。ユーザーエクスペリエンス:H5エクスペリエンスは貧弱で、ミニプログラムはネイティブアプリケーションと同様のスムーズな体験を提供します。通信方法:H5はリンクを介して広がり、ミニプログラムはプラットフォームで共有または検索されます。 H5プロモーション方法:ソーシャル共有、電子メールマーケティング、QRコード、SEO、有料広告。ミニプログラムプロモーション方法:プラットフォームプロモーション、ソーシャル共有、オフラインプロモーション、ASO、他のプラットフォームとの協力。

See all articles