最もタメになる「初心者用言語」は Python!

追記:これはネタだったのですが、思いの外ページランクが高いみたいで「初心者 Python」で検索した人がここに来てしまうそうです。
本当にPython初めての人は下の記事を読むといいと思います。

        • -

Pythonだってクロージャつくれるもんっ!><

// JS
function make_counter(){
    var x = 0;
    return function counter(){
        x++;
        console.log(x);
        return counter;
    }
}

make_counter()()()()
# Python
def make_counter():
    def counter():
        counter.x += 1
        print counter.x
        return counter
    counter.x = 0
    return counter

make_counter()()()()

ほら!そっくり!(><)

class make_counter():
    def __init__(counter):
        counter.x = 0

    def __call__(counter):
        counter.x += 1
        print counter.x
        return counter

ちょっとdefがclassになって初期化処理が__init__の中に入っただけだよ!

class Counter(object):
    def __init__(self):
        self.count = 0

    def __call__(self):
        self.count += 1
        print self.count,
        return self

    def reset(self):
        self.count = 0
        print "[reset]",
        return self
>>> Counter()()()().reset()()()()
1 2 3 [reset] 1 2 3
<__main__.Counter object at 0x0149C7B0>

リセットボタンも簡単につけられるよ!
最もタメになる「初心者用言語」は Python
インデントを使う習慣がつくよ!(><)

        • -

amachangに「Pythonってクロージャ使えるの?ぷぷっ」とDISられてかっとなって書いた記事がなんだか祭りにPython代表で参加したみたいな形になっていてびっくり。
誰かがまじめにPythonのいいところを書いてくれるといいなー。

自分でまじめに書く気がないので過去の記事へリンクリンク。

どう書くorgPythonで作られています。