トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS   ログイン


python-logo.gif

Python Programing Langage

このページの参照数 6185 回

リンク(随時更新)

日本語のサイト

一般サイト

初心者用入門/紹介サイト

リンク

英語サイト

Pythonってどんな言語?

「プログラミング未経験の方」向けの説明

Pythonは数あるプログラミング言語の中で、入門者に優しく、奥の深い言語です。Pythonだけではできないこともたくさんありますが、習得したPython言語が不要になる日はまずこないでしょう。
なお、有名なマーフィーの法則に「教育用にも使えるものは、教育用にしか使えない」というものがありますが、このPython言語に関して言えば、その法則にはあてはまりません(実際、教育用としても実用としても使われているのですから)
欠点といえば、実行速度の遅さと、日本での知名度の低さ、でしょうか。
ともかく、「はじめてプログラミングを習ってみたい」なら、Pythonがお勧めです。

「他言語を経験された方」向けの説明

Pythonは、プログラミングの概念をすでにある程度理解された方にとっては、ものの2、3時間で習得できるお手軽な言語です。もしかしたら、前言語には無かった新しい視点が得られるかもしれません。

「マニアを自認する方」向け

ここでは、Pythonという言語をある程度見聞きして知っている方について、ややコアなPythonの話題を掲げます。

※注意:この項目の特徴に関しては、使用の際、十分注意が必要です。さらに、この項目に挙げられた特徴を使用せずとも、通常のプログラミングにはほとんど支障がありません。

Pythonのオブジェクト的メタファ

完全なオブジェクト指向言語であるSmalltalk(Squeakなど参照)から見ると、Pythonのオブジェクトというのは、かなり珍妙に見えるかもしれない。

object message

と書くとき、Smalltalkでは、messageという単項メッセージをobjectに送った、という話だけで済む。

ところが、Pythonで同様に

object.method()

と書くと、話は非常にややこしくなる。まず、二通りの考え方が生まれる。

'object.method'を一つの名前とし、このオブジェクトに()という単項メッセージを送る。

'object'というオブジェクトに引数methodの二項メッセージ'.'を送り、その返り値である'object.method'に単項メッセージ()を送る。

つまり、methodがあくまでメッセージ(演算子)でなくオブジェクト(値)であることが、Pythonの解釈をややこしくしている。

使用上の注意

fact = lambda n m=1:m if n==0 else fact(n-1, m*n)

 この例では、大体1,000回程度でフローオーバーしてしまいます。この場合は、reduce(functools.reduce)を使用するか、素直にforループなどを使用しましょう。

import functools
fact2 = lambda n: functools.reduce((lambda x, y: x * y),range(1, n+1))
def fact3(n):
  k = 1
  for x in range(1,n+1):
    k *= x
  return k

 どちらでも、10,000を指定してもスタックフローオーバーにはなりません。

Python3(Python 3000, py3k)

最初はGuidoの夢想から始まったらしいPython3000の実現! Python3系が登場しました。現在豊富な資産を持つPython2派と、未来志向Python3派の地味な戦いが激化?

その他のサイト内Python関連ページ

おまけ