Python のだめなとこ

Pythonはダメなところは信者がアレすぎるところ - odz bufferさん経由Python の嫌いなところ - kなんとかの日記さん。

いちいちいろいろ同意なのですけれど、kwatchさんの上げた中では私は一番「list や dict や str が大文字で始まっていない。」にストレスを感じます。

オレは list や dict や tuple や str や set や file という変数名を使いたいんだよ!

うんうん、ですよねー。結局

これからは Samlltalk 風に aList や aDict を使おうか

な感じで落ち着いてしまったですが、これもちょっと気持ち悪いのです。


もうひとつ私がストレスを感じるのは 変数や関数の名前付けのルールが一本化されてないところかな。全部小文字だったり、小文字アンスコつなぎだったり、キャメルパターンだったり。

で、何となく Python の小さい名前に 小文字始まりのキャメルパターン を使うのは似合わない気がしていて、前述の aList とか aDict とかが 格好悪くみえてしまうのが悩みどころ。


* * *


よくやり玉にあがる print の驚き最大限の法則な挙動ですが、「print と println くらいあっても良いじゃん」には「そうだよねー」とは思うのですが、でも 私はあんまりストレスは感じていません。多分出力フォーマットにこだわりのない てけとー な文字出力にしか使ってないからだと思います。


それと「変数のスコープの仕様がわかりにくい」という話は、いままで私は感じたことが無くって、例を見るまで何がわかりにくいのかピンときませんでした。

わかりにくいというか、わかりやすい説明をみたことがない。たとえばこんなの。

def foo(self, x):
    print x
deff bar(self, y):
    foo(self, y)     #  これは OK なのに

class Test(object):
    def foo(self, x):
        print x
    def bar(self, y):
        foo(self, y)   # これは NG というのがうまく説明できない

と言われて、「なるほどなー」と。

モジュールのスロットと、関数の実行時コンテキストのスロット(?)以外の名前は そのスロットの持ち主を指定しなくちゃいけない、でいいんでない?・・・なんていい加減なこと思ってたですよ。

定義とかじゃなくって、def も class も何もかもが実行される文だと言う視点さえあれば、後は自然に飲み込める構造に Python はなっていると思います。そう、心にオブジェクトの御姿を描けばいいのです。

・・・なんて宗教じみた説明をしちゃいたい私は、あぁ、確かにアレすぎるのかしらん、と思ったり。orz