Python.use(better) #関数オブジェクト

記事一覧
Python.use(better)《Python3.1》

関数オブジェクト

《著》森こねこ、小粒ちゃん@湘南組《監修》小泉ひよ子とタマゴ倶楽部
第0版♪2001/03/02 ● 第1版♪2003/05/23 ● 第2版♪2004/06/01 ● 第3版♪2009/02/28

Python で作成した事例を介して「OOP」の理解を深めます。
※ Python1.5 で作成した例題を、Python3.1 で再構成しました。


■ モジュールを利用する

任意のモジュールを取り込むには、from/import 文を利用します。

>>> sqrt
Traceback (most recent call last):
  File "", line 1, in 
    sqrt
NameError: name 'sqrt' is not defined

sqrt は既存の組み込み関数ではないので、例外 NameError を生成します。from/import 文を利用すると、

>>> from math import sqrt

from に続くモジュール math の中から、import に続く変数 sqrt を介して、関数オブジェクトを参照できるようになります。

>>> sqrt

>>> type(sqrt); hex(id(sqrt))

'0x123b738'

(他のオブジェクトと同様に)関数オブジェクトも型 type を持ち、固有の識別情報 id を持ちます。

■ 関数を呼び出す

(他の呼び出し可能オブジェクトと同様に)関数を呼び出すには、

>>> sqrt(2)
1.4142135623730951

呼び出し演算子 () の中に実引数を指定します。

■ 関数の属性

(他のオブジェクトと同様に)関数オブジェクトの属性を参照するには、アクセス演算子「.」の後に属性名を指定します。


特殊属性 .__class__ を参照すると、

>>> sqrt.__class__

>>> sqrt.__class__.__name__
'builtin_function_or_method'

その関数オブジェクトが属するクラスオブジェクトが得られます。その出力を見ると、組み込み関数 type によって得られる情報と同じだと分かります。


特殊属性 .__doc__ を参照すると、

>>> sqrt.__doc__
'sqrt(x)\n\nReturn the square root of x.'
>>> print(_)
sqrt(x)

Return the square root of x.

その関数オブジェクトに関する文書化文字列が得られます。その出力を見ると、

>>> help(sqrt)
Help on built-in function sqrt in module math:

sqrt(...)
    sqrt(x)
    
    Return the square root of x.

>>> 

組み込み関数 help によって得られる情報と同じだと分かります。

>>> def piyo():
	"as happy as happy can be"

	
>>> help(piyo)
Help on function piyo in module __main__:

piyo()
    as happy as happy can be

>>> 

TOP
》作業中です《


関連記事

Last updated♪2010/05/20