TL;DR;
_ = """
変数化すれば?
"""
困っていること
Streamlitでテストコードとかをブロックコメント化すると、実行時にブラウザへコメント部分が表示されてしまう問題がある。
この原因は、Streamlitの標準機能として備わっているMagicというスマートで強力な特徴である。
いちいち行ごとにst.write(...)
みたいな呪文をコピペする必要がなくなるので、ちゃんと使えば有用だが、ズボラな個人開発者はたまに困ることがよくあるのだ。
下記コード例のようにコメントアウトすると、実行結果のようにMarkdown化して表示される。
コード例
import streamlit as st
# 行コメントは表示されない
st.write("hoge")
"""
ToDo 下記の計算は間違いなので直す
※とりあえずコメントアウトしとく
# 計算処理
fuga = '1 + 2 = 4'
st.write(fuga)
"""
実行結果
解決方法
Streamlit公式フォーラムに解決方法がいくつか書いてある。
本稿はそれらを日本語の箇条書きにまとめた備忘録である。
変数化
本稿の要約に書いた方法がスマートだと思う。
下記の例は """
の前に _ =
を付けて無名変数っぽくするだけで目的を達成している。
もちろん同様のコメントアウトが複数ある場合はその数だけ対応が必要だが、ブロックコメントのMarkdown表示機能を失わずに併用することができる。
コード例
import streamlit as st
# 行コメントは表示されない
st.write("hoge")
# 変数化すれば表示されない
_ = """
ToDo 下記の計算は間違いなので直す
(以下略)
"""
magicEnabled
ブロックコメントは一律でブラウザ上に表示したくないなら、設定ファイルで機能を無効化することができる。
実行時のカレントディレクトリに .streamlit
フォルダを作成し、その中に config.toml
を作れば設定ファイルとして実行前に読み取ってくれる。
本家のHow Magic worksのとおり、 config.toml
を作ってその中に下記を記述すれば機能を無効化できる。
[runner]
magicEnabled = false
この方法だと部分的にMagicを有効化できないので注意すること。
IDE機能
最近のイケてる(死語)IDEやテキストエディタはショートカットキーで複数行を行コメント化できる。
リンク先のフォーラムでは、「VS Codeなら CTRL + /
が使える」とアドバイスしてくれてる。
そんな機能がないテキストエディタなら、正規表現置換、マクロ機能、矩形選択でご自由にどうぞ。
え?メモ帳にそんな機能ないって?
今すぐPython IDLEを立ち上げてAlt+3
を押すんだ!(ちなみにAlt+4
でコメント解除)