昔のPython print文には括弧が要らず結構便利な感じがありましたが、
最近そういうコードが全部エラーになりました。
要は括弧が抜けちゃうだめって。
新版のPythonが括弧を強要するメリットは何でしょうか。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
ベストアンサー
Python 3からprint
は文からただの関数になりました。Pythonの関数呼び出しでは括弧()
は省略できないため、括弧をつけて呼び出すようになりました。
では、なぜ文から関数に変更したのか?PEP 3105のRationaleにいくつかの理由が書いてあります。要約するとだいたい次のような理由です。
print
が行うことは通常の関数として定義することが可能です。文として実装する必要性がありません。また、構文としてしか実現できないもの(if
等がそうです)で無い限り、構文に含めた形で実装すべきではありません。print
は単純な標準出力への書き出しですが、時には標準では無い所へ書き出しやフォーマットされた書き出しを行いたい場合があります。関数の場合は関数を置き換えるだけになりますが、文の場合は括弧を追加する必要があるなど、他の関数へ置換することが簡単できません。print
が文であった場合、その拡張は文として拡張する必要があり、将来的な文法拡張で問題が出てくる場合があります。
言ってしまえば、Python 2でprint
を文にしてしまっていたことが言語設計上の間違いだったということです。Python 3では互換性を捨てでも、この間違いをこのタイミングで修正し、将来に供えたかったと言うことだと思います。
投稿2018/01/28 05:22
編集2018/01/28 05:25総合スコア21754
0
Python言語に関わる仕様で変更理由を調べる時は、PEP(Python Enhancement Proposal)を調べると根拠が書いて有ることが多いです。
PEP 3105 Make print a function
[Python-Dev] Replacement for print in Python 3.0
投稿2018/01/28 05:22
編集2018/01/28 05:23総合スコア5846
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
0
個別の特殊構文を廃止して、関数化出来る物は関数にすることで、言語仕様がシンプルになると言うことだと思います。別の言い方をするとprint
が構文である必要性がない。
http://www.atmarkit.co.jp/ait/articles/0901/31/news017.html
に少し書いてあります。
投稿2018/01/28 05:06
総合スコア86313
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/01/28 10:14