web-dev-qa-db-ja.com

Python 3括弧なしで印刷

printはPython 2のステートメントでしたが、現在はPython 3の括弧を必要とする関数になりました。

とにかくPython 3でこれらの括弧を抑制する方法はありますか?多分印刷機能を再定義することで?

だから、代わりに

print ("Hello stack over flowers")

次のように入力できます:

print "Hello stack over flowers"
63
Laura

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

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

Python 2:

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

Python 3:

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

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

20
TigerhawkT3

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
TokyoMike

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

2
holdenweb

Python 3コードでprintを括弧なしで使用することはお勧めできません。また、エイリアスなども作成していません。それが契約違反の場合は、Python 2を使用します。

ただし、括弧のない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
2
michau

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

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

2

Python 2のように、かっこなしでキーワードにすることしかできないため、できません。手動でキーワードを定義することはできません。

1
user3917838

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

0
SPKB24