Python3は括弧なしで印刷します


83

printPythonの2の文であるために使用されるが、今では、Python 3に括弧を必要とする関数となりました。

Python 3でこれらの括弧を抑制する方法はありますか?たぶん、印刷機能を再定義することによって?

だから、代わりに

print ("Hello stack over flowers")

私はタイプすることができます:

print "Hello stack over flowers"

4
これをやりたい特別な理由はありますか?それともあなたはただ興味がありますか?一般的にそれがあっても、キーワードを再定義することをお勧めではないですが可能。
Michael S Priz

6
好奇心から、なぜ人々はこれに反対票を投じるのですか?SOガイドラインの範囲外にあるのかわかりません。
Michael S Priz

21
私はPython3を使用しています。ただし、()常に入力 するのは不必要に時間がかかります。
ローラ

7
マイケル、あなたはそれほど親切ではないようです。私は何か間違ったことをしましたか?回避策のコーディング標準のように聞こえても、正直な質問をしています。もしそれがとても「標準的」だったら、彼らはPython 3でそれを変更しないだろうか?
ローラ

4
私は「言語仕様」と言うべきだったと思います:)私が言ったことが不快なものとして出くわした場合はお詫びします。私はあなたがSOを最大限に活用するのを手伝おうとしているだけです。
Michael S Priz

回答:


26

Python 3で印刷するには括弧のペアが必要ですがprint、関数であるため、の後にスペースは必要ありません。つまり、これは1つの余分な文字だけです。

それでも1組の括弧を入力するのが「不必要に時間がかかる」場合はp = print、その方法で数文字を保存できます。新しい参照を関数にバインドすることはできますが、キーワードにバインドすることはできないため、このprintショートカットはPython3でのみ実行できます。

Python 2:

>>> p = print
  File "<stdin>", line 1
    p = print
            ^
SyntaxError: invalid syntax

Python 3:

>>> p = print
>>> p('hello')
hello

コードが読みにくくなりますが、何かを印刷するたびにこれらの数文字を保存します。


TigerhawkT3ありがとうございます。はい、これで時間を節約できますが、あなたが言ったように、コードが読みにくくなります。
ローラ

@Tigerhawkこの回避策はIDEと互換性がありません
Chandra Shekhar

1
@ ChandraShekhar-どのIDEですか?あなたは何について話していますか?これがIDEの選択によって影響を受ける理由はありません。
TigerhawkT3 2016

1
@ TigerhawkT3 Eclipseで同じことを試しましたが、機能しませんでした
Chandra Shekhar 2016

4
@ ChandraShekhar-そして、それはどのように「互換性がない」のですか?試してみるとどうなりますか?
TigerhawkT3 2016

7

Python3printコードで括弧なしで使用することは良い考えではありません。エイリアスなども作成していません。それが取引を妨げるものである場合は、Python2を使用してください。

ただし、print括弧なしはインタラクティブシェルで役立つ場合があります。文字数を減らすことは実際には問題ではありませんが、デバッグ中に何かを印刷するたびにShiftキーを2回押す必要がなくなります。IPythonでは、行をスラッシュで始めると、括弧を使用せずに関数を呼び出すことができます。

Python 3.6.6 (default, Jun 28 2018, 05:43:53)
Type 'copyright', 'credits' or 'license' for more information
IPython 6.4.0 -- An enhanced Interactive Python. Type '?' for help.

In [1]: var = 'Hello world'

In [2]: /print var
Hello world

また、をオンにautocallすると、スラッシュを入力する必要もありません。

In [3]: %autocall
Automatic calling is: Smart

In [4]: print var
------> print(var)
Hello world

投稿で示唆されているように、代わりにpython2を使用することはもうすぐ不可能です。
アルノー

5

Autohotkeyを使用してマクロを作成します。AHKは無料で、インストールは非常に簡単です。www.autohotkey.com

マクロを、たとえばalt-pに割り当てることができます。

!p::send print(){Left}

これにより、alt-pがprint()を出力し、カーソルを親の内側に移動します。

または、さらに良いことに、問題を直接解決するには、自動置換を定義し、開いているファイルの拡張子が.pyの場合にスコープを制限します。

#IfWinActive .py            ;;; scope limiter
:b*:print ::print(){Left}   ;;; I forget what b* does. The rest should be clear 
#IfWinActive                ;;; remove the scope limitation

これは、保証された、痛みのない、透明なソリューションです。


4

AHKスクリプトは素晴らしいアイデアです。興味のある人のために、私はそれを少し変更して私のために働く必要がありました:

SetTitleMatchMode,2         ;;; allows for a partial search 
#IfWinActive, .py           ;;; scope limiter to only python files
:b*:print ::print(){Left}   ;;; I forget what b* does
#IfWinActive                ;;; remove the scope limitation

3

いいえ。Python3では常に構文エラーになり2to3ます。コードをPython3に変換するためにを使用することを検討してください。


10
私はPython3を使用しています。常に括弧を入力するのは避けたいだけです。shift+ 9.....そして再びshift+0は網羅的です。
ローラ

関数呼び出しによって入力が困難になることをお詫びします。私自身はかなりくだらないタイピストなので、身体に障害はありませんが、Shiftキーの使用を最小限に抑えるためにできることをしています。
holdenweb 2015

どうやら、bashの「履歴リコール」を使用するときに上矢印の単純さを評価する人は誰もいないようです。簡単です。と同じようにprint、括弧のペアなどの役に立たないデバッグ手法によって邪魔されないようにする必要があります。
ジョングリーン

Python 3が導入される前に広範囲にリハーサルされたという議論があります。余分な括弧は私たち貧しいタイピストにとっては不便かもしれませんが、再定義する機能によって提供される柔軟性はprintそれだけの価値があると感じました。
holdenweb 2018

1

Python 2のように、括弧なしで実行できる唯一の方法はキーワードにすることであるため、できません。手動でキーワードを定義することはできないため、できません。


1

私はついに、古いPython2サンプルスクリプトでこれらすべてを変更するための正規表現を見つけました。それ以外の場合は2to3.pyを使用します。

Regexr.comで試してみてください。NP++(?)では機能しません。

find:     (?<=print)( ')(.*)(')
replace: ('$2')

変数の場合:

(?<=print)( )(.*)(\n)
('$2')\n

ラベルと変数の場合:

(?<=print)( ')(.*)(',)(.*)(\n)
('$2',$4)\n

これがNP ++で機能する正規表現です(?<=print)( ')(.*)(') \('$2'\)
Jack

@Jackに感謝します。かっこをエスケープする必要があります(置き換えになりますか?)。また、Py3が間print ('string')にスペースがあることを認識する半関連のトリックを見つけました。これにより、印刷可能なものをより簡単に強調表示し、多くのエディターの自動クローズを使用して括弧と引用符を追加できます。
錬金術

0

Python 3では、printは関数ですが、以前のバージョンではステートメントでした。@holdenwebが提案したように、2to3を使用してコードを翻訳します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.