質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

3636閲覧

Pythonの2系と3系の互換性について

makoto.n

総合スコア12

Python 2.7

Python 2.7は2.xシリーズでは最後のメジャーバージョンです。Python3.1にある機能の多くが含まれています。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2016/11/06 19:36

編集2016/11/07 10:18

対話型シェルにおいて3系をグローバル指定にした状態で、2系のprint文「print "Hello World!"」を実行してもエラーにならずちゃんと表示されます。一方、2系をグローバル指定にした状態で、3系の「print ("Hello World")」を実行してもエラーにならずにちゃんと表示されます。2系と3系では互換性がないということですが、何処がおかしいのでしょうか?また、後者の場合は2to3が自動で働いてるのでしょうか?お分かりの方、ご回答宜しくお願いします。

追記:幾つかの回答有難う御座いました。質問の意味は下記の状況になります。

Python

1$ python -V 2Python 2.7.10 3$ pyenv global 2.7.12 4$ pyenv versions 5 system 6* 2.7.12 (set by /Users/~/.pyenv/version) 7 3.5.2 8$ python 9Python 2.7.10 (default, Oct 23 2015, 19:19:21) 10[GCC 4.2.1 Compatible Apple LLVM 7.0.0 (clang-700.0.59.5)] on darwin 11Type "help", "copyright", "credits" or "license" for more information. 12>>> print("Hello World") 13Hello World

ご指摘頂いた、$ python -Vコマンドと$ pythonコマンドの後に、Python 2.7.10が表示されるのは何故でしょうか?
$ pyenv global 2.7.12コマンドで、使用するPythonの全体のバージョンが2.7.12に変わるものだと思っていました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shimizukawa

2016/11/06 23:32

「グローバル指定」ってなんのことでしょうか?実行時のPythonバージョンはどのように表示されていますか?対話シェルのバージョン表示を添付してください。対話シェルを使っていないのであれば、python -V でバージョンを確認してください。
makoto.n

2016/11/07 06:34

ご質問有難う御座いました。追記させて頂きました。
shimizukawa

2016/11/07 07:14

更新された内容では、コマンドラインの内容が引用に解釈されてしまっていて読めません。コードを埋め込むための記法を使って書いてください。また、Pythonコマンドの実行時にバージョンなどは表示されませんか?されているなら、それも貼り付けてください。それとは別に、 `python` を起動する代わりに `python -V` を実行してみてください。起動しようとしているPythonのバージョンが表示されます。
makoto.n

2016/11/07 10:30

見づらくて失礼致しました。上記にも記載させて頂きましたが、$ pyenv globalコマンドで使用するPython全体のバージョンの切り替えが可能と思ってましたが違うのでしょうか?
yohhoy

2016/11/10 03:10 編集

質問の真の趣旨は「pyenv設定が反映されないのはなぜか」でしょうか。PATH環境変数に問題があると推測されます。OS標準Pythonインストール先へのパスが、pyenv環境が設定する先のパスよりも優先されています(もしくは、単にpyenv環境を正しく構成できていない)。
guest

回答2

0

対話型シェルにおいて3系をグローバル指定にした状態で、2系のprint文「print "Hello World!"」を実行してもエラーにならずちゃんと表示されます。

(下を書いてから気づきましたが、「グローバル指定」の意味を明らかにした方が良いですね。該当環境内で import platform; print(platform.python_version()) してみては)


print ("Hello")という表記はPython2/3の両方で有効です。一方、print "Hello"Python2でのみ有効です。

Python2では「print文」という特別な構文が提供されており、print "文字列"と記述できます。文字列を括弧で括った場合は、単に冗長な括弧とみなされます。

Python3では「print関数」という普通の関数に変更されました。そのためprint "文字列"という記述は構文エラーになります。print ("文字列")のように関数呼び出しのための括弧が必要です。(空白文字の挿入は意味を持ちません)

投稿2016/11/07 01:17

編集2016/11/07 01:21
yohhoy

総合スコア6191

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2016/11/06 22:52

Orlofsky

総合スコア16415

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shimizukawa

2016/11/07 14:13

質問の意図とググった回答の方向性があってないのはさすがに-1です
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問