※Houdiniのエクスプレッションをちょっと書いたことがあるくらいの人向けの記事です。
何故PythonでExpression?
私も簡単なエクスプレッションは HScript で書いていたのですが
複雑なものになると Python で書くことが多くなってきました。
というかPythonじゃないと解決出来ない場合もあります。
例えばファイルの日付を見たりデータベースを参照したりなど
Pythonならではのいろいろな機能をエクスプレッションに使えるのは
とても大きいアドバンテージです。
普通にExpressionを書くと…

パラメータが緑色になっています。
これは Hscript の書式です。
簡便に書けてとても便利なのですが複雑なことをやらせるには向いていません。
エクスプレッションの言語を変えるには?
パラメータを右クリックして
Expression -> Change Language to Python
で出来ます。
昔は違うやり方でした
19.5まではパラメータの右上の歯車の隣にHscriptとPythonを切り替えるボタンがありました。
メジャーバージョンがひとつ変わると随分と昔の様に感じます。

現状(21.5)の引っかかりどころ
分かりづらいのですがパラメータの背景が黒(デフォルト)の状態だと

Expression -> Change Language to Python
がグレーアウト状態になっていて選択できません。
しかし適当な文字列を入れるだけでエラーは出ますがパラメータの背景が緑色になります。

この状態なら
Expression -> Change Language to Python
が選択出来る様になります。
文字を入れるのがめんどくさいとかエラーが出て気分的に嫌だとかであれば
Altを押しながらパラメータをクリックするとアニメーションのキーが打たれ
パラメータの背景が緑色になります。

こちらの方がめんどくさくなくて良いかもしれません。
私はいつもこの様にしています。
果たしてこれが正式なPythonエクスプレッションの設定方法なのかは分かりませんが
H20の時にインターフェイスが変わりましたとは言われたものの正式なPythonへの変更の仕方については正式な情報がなかったように思います。
簡単なエクスプレッションだと逆に煩雑
簡単なエクスプレッション、例えば
sin($F*3)
の様なものの場合、Pythonで同じ内容を書こうとするとこうなります。
import hou
return sin( hou.frame()*3*6.283/360 )
5倍以上タイプしないといけなくなり逆に煩雑で冗長なコードになります。
めんどくさいですね。
sin関数の引数もdegreeからradianに変換しないといけないのも手間です。
ExpressionでPythonが役立つ時
冒頭でも書きましたが処理が複雑な時、Hscriptにはなく
様々なPythonモジュールの中に必要な機能がある場合、Pythonが役立つと言えるでしょう。
比較的シンプルな例を提示します。
点群はアルファベット大文字小文字の入り混じった4文字のアトリビュートを持ち
この中から VFX という文字列が一度でも含まれる場合は右へスイッチしなさい、というものです。

SwitchのSelect Input にPythonを書いていきます。
import hou
import re
nd = hou.node('../setSTR')
geo = nd.geometry()
code = geo.findPointAttrib("code")
flg = 0
for pt in geo.points():
val = pt.attribValue(code)
if re.search( 'VFX', val ):
flg = 1
print(pt)
return flg

この様に検索した文字列にヒットしたらSwitchは右側の入力が選択されます。
HScriptではおそらくこういうことは出来ないでしょう。
パラメータの枠を超える長いPythonコードの書き方

ちなみにPythonのエクスプレッションを設定したパラメータは背景がこの様な小豆色になっています。
当然、エクスプレッションの文字数は多いのでAlt+EでEdit Expressionを起動してこの様な小ウィンドウを出して
Expressionを編集するのですが

外部エディタを設定してある場合
Expression -> Edit in External Editor

をするとこの様に

VisualStudioCodeなどで編集出来るようになります。
1文字でも間違うと動かない
Expressionもコードなので当然そういうものです。
Pythonに限らずwrangleもC++もみんなそうです。
書き方が違うとSyntax Error(文法エラー)を吐きます。
Pythonはコードが長くなるので余計間違えやすいです。
AIに考えさせたコードもどこかしら間違いがありそのままでは使えないことが多いです。
英語を話すのも、絵を描くのも、コードを書くのも慣れです。
エラーメッセージを吐いてくれる分まだ優しい方です。
頑張れる人の為にお助け機能をご紹介します。

Houdini Python専用のものはありませんがVSCのPythonの拡張機能もありますので
こういったもので凡ミスは減らせるでしょう。
まとめ
ここを読むとSideFXはユーザーにHscriptから徐々にPython(hou)に移行して欲しがってる感じはしますが、実際Hscriptを廃止するという選択肢は有り得ないので現状で良いのかもしれません。
PythonのExpressionを設定する際の煩雑さは改善を求めたいところですが
(とはいえ昔のバージョンのHoudiniを触ると確実に触り心地の良さが改善されているのが分かります。)
ユーザーにもPythonをカジュアルに書けるコーディング能力が求められるところでもありましょう。
(個人的にはPython内でverbとして扱えるSOPの数が増えてくれると自動化の助けになるので嬉しいですが。)
この記事が過去の私の様な迷える子羊な皆様の一助となれば幸いです。

