変数名や関数名など、複数箇所を一度に修正する必要が生じた経験はありませんか?
手作業で一つずつ修正するのは時間がかかるだけでなく、ミスの可能性も高まります。
特にコード内の抜け漏れは、予期せぬエラーを引き起こす原因となり得ます。
そんな時、PyCharmの「範囲を指定した一括置換」という便利な機能が大いに役立ちます。
この記事では、PyCharmで複数の変数名や関数名を簡単かつ迅速に一括で修正する方法を紹介します。
Pythonのコーディングには、PyCharmがおススメですが、ご存じない方はこちらの動画でその便利さを知ってください!
状況説明
以下にサンプルコードを提示します。
これは、あるウェブアプリケーションの一部です。
これをコピーして、一部の文字を変更したいという状況です。
@route('/test3')
def test3():
session3 = request.environ.get('beaker.session')
if 'count3' not in session3:
rec = 'first'
session3['count3'] = 1
else:
session3['count3'] = session3.get('count3',0) + 1
rec = session3['count3']
session3.save()
return 'session:{}'.format(rec)
コード内の「3」をすべて「4」に変更したいと思っています。
@route('/test4')
def test4():
session4 = request.environ.get('beaker.session')
if 'count4' not in session4:
rec = 'first'
session4['count4'] = 1
else:
session4['count4'] = session4.get('count4',0) + 1
rec = session4['count4']
session4.save()
return 'session:{}'.format(rec)
その際、一つずつ手作業で修正すると、ミスが起きたり漏れがあるかもしれません。
それを防ぐためにも、まとめて置換することができれば良いですよね。
検索の基本
置換の前に、検索方法について確認しましょう。
文字を検索する場合、「ctrl + F」で検索フォームを表示することができます。
この検索窓の中に探したい文字を入れると、対象の文字に色が付きます。
これだけでも、対象の文字に対する修正が分かりやすくなりますね。
このとき、下図の矢印をクリックすると、対象の文字を選択していきます。
「マウスでクリックすると効率が悪い」という場合、「F3キー」で次を選択できるので効率良く作業ができます。
ちなみに、前の文字に移動するには「shiftキー + F3キー」です。
置換の基本
ここからが本題です。
置換の場合は「ctrl + R」で置換フォームを表示することができます。
「R」は「Replace」のRと覚えましょう。
検索と似ていますが、2段になっています。
上段が「検索したい文字」を入れるフォーム。
下段が「置き換えたい文字」を入れるフォーム。
文字を指定後、一つずつ置換するなら「Replace」、全てまとめて置換するなら「Replace All」をクリックすればOKです。
ただし、一つ問題があります。
この方法では、コード全体から対象となる文字を全て置換してしまいます。
これでは、困る場合があります。
範囲を指定した置換
そこで、「選択範囲内で置換する」という機能を使いましょう。
先ほどの置換フォーム内に、「Search in selection」というボタンがあります。
これを「ON」にして、対象範囲を選択してから「Replace All」をクリックすると、選択範囲内のみ置換をすることができます。
その他の方法:名前を変更する
もう一つ、便利な方法があるので紹介します。
「置換(Relplace)」と似ているのですが、「名前を変更する(Rename)」という機能です。
まずは手順から。
変更したい関数名または変数名をクリック。
この状態で「Refactor」の「Rename」をクリック。
ショートカットなら「shiftキー+F6キー」です。
選択中の変数名を修正すると、リアルタイムで同じ変数が変わります。
今回は「session3」を「session4」に変更しました。
作業が終わったら、Enterキーで終了します。
「名前を変更する」は、同じメソッド内または関数内など「同一スコープ内」のみに適用されます。
範囲選択せずとも、必要な範囲で名前を変更することができます。
「置換」と「名前を変更する」の違い
似たような、同じことができる両者の違いと使い分けについて紹介します。
「置換」は、基本的に選択した文字を自由に置き換えることができます。
特に制限なく、文字を指定することが可能です。
ただし、記事内で紹介した「Search in selection」を使わないと、全てのコードが置換対象となるので注意が必要です。
「名前を変更する」は、以下の要素のみ指定することができます。
- 変数名(variable names)
- 関数名(function names)
- クラス名(class names)
上記以外のものは「名前を変更する」が使えません。
- リテラル (literals)
⇒ いわゆる普通の文字や値のこと。 - キーワード (keywords)
⇒ Pythonの予約語、例えば for、if など。 - 演算子 (operators)
⇒ +-*/など。
以上を踏まえて、適切に使い分けができると良いですね。
まとめ
今回は、PyCharmで複数の変数名や関数名を簡単かつ迅速に一括で修正する方法を紹介しました。
適切に置換やリネーム機能を活用することで、作業効率は格段にアップし、時間を大幅に節約することが可能です。
また、これらの機能を使うことでミスを減らし、より精度の高い作業を実現するのに役立ちます。
結果として、時間と労力を節約し、より効率的かつ正確な作業を行うことができます。
「置換」と「名前を変更する機能(refactor)」は、両者の特徴を理解し、上手く使い分けると良いですね。
今後もPythonを中心としたプログラミングの情報をお届けします。
以下のメルマガにご登録頂くと、不定期に配信をお届けします。
ぜひ購読してください!
それでは、ステキなPythonライフを!