Python インタプリタは数多くの組み込み関数を持っていて、いつでも利用 することができます。それらの関数をアルファベット順に挙げます。
name[, globals[, locals[, fromlist[, level]]]]) |
例えば、文 "import spam" は結果として以下の呼び出し:
__import__('spam',
globals(),
locals(), [], -1)
になります; 文 "from spam.ham import eggs" は
"__import__('spam.ham', globals(), locals(), ['eggs'], -1)" です。
locals()
および ['eggs']
が引数で与えられますが、
関数 __import__() は eggs
という名のローカル変数
を設定しないので注意してください; この操作はそれ以後の import 文の
ために生成されたコードで行われます。(実際、標準の実装では locals
引数を全く使わず、import 文のパッケージ文脈を決定するため
だけに globals を使います。)
変数 name が package.module
の形式であった場合、
通常、name という名のモジュール ではなく トップレベルの
パッケージ (最初のドットまでの名前) が返されます。しかし、
空でない fromlist 引数が与えられていれば、name
と名づけられたモジュールが返されます。これは異なる種類の import
文に対して生成されたバイトコードと互換性をもたせるために行われます;
"import spam.ham.eggs" とすると、トップレベルのパッケージ
spam はインポートする名前空間に置かれなければなりませんが、
"from spam.ham import eggs" とすると、変数 eggs
を
見つけるためには spam.ham
サブパッケージを使わなくては
なりません。この振る舞いを回避するために、getattr() を
使って必要なコンポーネントを展開してください。例えば、
以下のようなヘルパー関数:
def my_import(name): mod = __import__(name) components = name.split('.') for comp in components[1:]: mod = getattr(mod, comp) return mod
level で絶対インポートを使うか相対インポートを使うかを指定します。
デフォルトは -1
で、この値は絶対と相対の両インポートを試すことを示します。
0
を指定すると、絶対インポートだけ行なう、という意味になります。
level が正の値ならば、__import__ を呼び出すモジュールの
ディレクトリから幾つ上の親ディレクトリまで探索するか、を意味します。
バージョン 2.5 で 変更 された仕様:
level パラメータが追加されました
バージョン 2.5 で 変更 された仕様:
引数のキーワードサポートが追加されました
x) |
iterable) |
def all(iterable): for element in iterable: if not element: return False return True
iterable) |
def any(iterable): for element in iterable: if element: return True return False
) |
isinstance(obj, basestring)
は
isinstance(obj, (str, unicode))
と同じです。
バージョン 2.3 で 新たに追加 された仕様です。
[x]) |
bool
はクラスでも
あり、int
のサブクラスになります。bool
クラスは
それ以上サブクラス化できません。このクラスのインスタンス
はFalse および True だけです。
バージョン 2.3 で 変更 された仕様: 引数が与えられなかった場合、この関数は False を返 します。
object) |
i) |
chr(97)
は文字列 'a'
を返します。
この関数は ord() の逆です。引数は [0..255] の両端を含む
範囲内に収まらなければなりません; i が範囲外の値のときには
ValueError が送出されます。
function) |
クラスメソッドは、インスタンスメソッドが暗黙の第一引数として インスタンスをとるように、第一引数としてクラスをとります。 クラスメソッドを宣言するには、以下の書きならわしを使います:
class C: @classmethod def f(cls, arg1, arg2, ...): ...
@classmethod
は関数デコレータ形式です。詳しくは
../ref/ref.htmlPython リファレンスマニュアル
の 7 章にある関数定義についての説明を参照してください。
このメソッドはクラスで呼び出すこと (例えば C.f() ) も、 インスタンスとして呼び出すこと (例えば C().f()) もできます。 インスタンスはそのクラスが何であるかを除いて無視されます。 クラスメソッドが導出クラスに対して呼び出された場合、 導出されたクラスオブジェクトが暗黙の第一引数として渡されます。
クラスメソッドは C++ や Java における静的メソッドとは異なります。 そのような機能を求めているなら、staticmethod() を参照してくだ さい。
もっとクラスメソッドについての情報が必要ならば、 Python リファレンスマニュアル の3章にある標準型階層についてのドキュメントを繙いてください。 バージョン 2.2 で 新たに追加 された仕様です。 バージョン 2.4 で 変更 された仕様: 関数デコレータ構文を追加しました
x, y) |
x
< y
のときには負、
x == y
の時にはゼロ、x > y
には
厳密に正の値になります。
string, filename, kind[, flags[, dont_inherit]]) |
'<string>'
を使います)。引数
kind には、どの種類のコードをコンパイルするかを指定します。
string が命令文の列からなる場合には 'exec'
、単一の式から
なる場合には 'eval'
、単一の対話的な命令文からなる場合には
'single'
にします (最後のケースでは、式の評価結果が None
以外の場合に値を出力します)。
複数行の命令文をコンパイルする時には、2 つの注意点があります: 行末は単
一の改行文字 ('\n'
) で表さねばなりません。また、入力行は少な
くとも 1 つの改行文字で終端せねばなりません。行末が '\r\n'
で表現されている場合、文字列に replace() メソッドを使って
'\n'
に変換してください。
オプションの引数 flags および dont_inherit (Python 2.2 で 新たに追加) は、 string のコンパイル時にどの future 文 (PEP 236 参照) の影響を及ぼすかを制御します。どちらも省略した場合 (または両方ともゼロの場合)、コンパイルを呼び出している側のコードで有効 になっている future 文の内容を有効にして string をコンパイルしま す。flags が指定されていて、かつ dont_inherit が指定されて いない (またはゼロ) の場合、上の場合に加えて flags に指定された future 文をいます。dont_inherit がゼロでない整数の場合、 flags の値そのものを使い、この関数呼び出し周辺での future 文の効 果は無視します。
future 文はビットで指定され、互いにビット単位の論理和を取って複数の文 を指定できます。ある機能を指定するために必要なビットフィールドは、 __future__ モジュールの _Feature インスタンスにおける compiler_flag 属性で得られます。
[real[, imag]]) |
0j
を返します。
object, name) |
delattr(x, 'foobar')
は
del x.foobar
と等価です。
[mapping-or-sequence]) |
キーワード引数が与えられた場合、キーワードとそれに関連付けられた 値が辞書の要素として追加されます。オプションの場所にある オブジェクト内とキーワード引数の両方で同じキーが指定されていた場合、 辞書中にはキーワード引数の設定値の方が残されます。
例えば、以下のコードはどれも、{"one": 2, "two": 3}
と同じ辞書を返します:
dict({'one': 2, 'two': 3})
dict({'one': 2, 'two': 3}.items())
dict({'one': 2, 'two': 3}.iteritems())
dict(zip(('one', 2), ('two', 3)))
dict([['two', 3], ['one', 2]])
dict(one=2, two=3)
dict([(['one', 'two'][i-2], i) for i in (2, 3)])
バージョン 2.2 で 新たに追加 された仕様です。 バージョン 2.3 で 変更 された仕様: キーワード引数から辞書を構築する機能が追加されました
[object]) |
>>> import struct >>> dir() ['__builtins__', '__doc__', '__name__', 'struct'] >>> dir(struct) ['__doc__', '__name__', 'calcsize', 'error', 'pack', 'unpack']
注意: dir() は第一に対話プロンプトのために提供されているので、 厳密さや一貫性をもって定義された名前のセットよりも、むしろ興味深い名前 のセットを与えようとします。また、この関数の細かい動作はリリース間で 変わる可能性があります。
a, b) |
(a // b, a % b)
と同じ
です。浮動小数点数の場合、結果は (q, a % b)
であり、 q は通常 math.floor(a / b)
ですが、
そうではなく 1 になることもあります。
いずれにせよ、q * b + a % b
は a に非常に近い値になり、 a % b
がゼロでない値の場合、その符号は b と同じで、
0 <= abs(a % b) < abs(b)
になります。
バージョン 2.3 で 変更 された仕様: 複素数に対する divmod() の使用は廃用されました。
iterable) |
(0, seq[0])
, (1, seq[1])
, (2, seq[2])
, ...
を得るのに便利です。
バージョン 2.3 で 新たに追加 された仕様です。
expression[, globals[, locals]]) |
引数 expressionは Python の表現式 (技術的にいうと、条件のリストです) として構文解釈され、 評価されます。このとき辞書 globals および locals はそれぞれ グローバルおよびローカルな名前空間として使われます。 locals 辞書が存在するが、'__builtins__' が欠けている場合、 expression を解析する前に現在のグローバル変数を globals にコピーします。このことから、expression は通常 標準の __builtin__ モジュールへの完全なアクセス を有し、制限された環境が伝播するようになっています。 locals 辞書が省略された場合、標準の値として globals に 設定されます。辞書が両方とも省略された場合、表現式は eval が 呼び出されている環境の下で実行されます。構文エラーは例外として報告されます。
以下に例を示します:
>>> x = 1 >>> print eval('x+1') 2
この関数は (compile() で生成されるような) 任意の
コードオブジェクトを実行するために利用することもできます。
この場合、文字列の代わりにコードオブジェクトを渡します。
このコードオブジェクトは引数 kind を 'eval'
にして
コンパイルされていなければなりません。
ヒント: 文の動的な実行は exec 文でサポートされています。 ファイルからの文の実行は関数 execfile() でサポートされて います。関数 globals() および locals() は それぞれ現在のグローバルおよびローカルな辞書を返すので、 eval() や execfile() で使うことができます。
filename[, globals[, locals]]) |
引数は文字列とオプションの 2 つの辞書からなります。file
は読み込まれ、(モジュールのように) Python 文の列として評価されます。
このとき globals および locals がそれぞれグローバル
およびローカルな名前空間として使われます。
locals は任意のマップ型に指定できます。
バージョン 2.4 で 変更 された仕様:
以前は locals も辞書でなければなりませんでした
locals 辞書が
省略された場合、標準の値として globals に設定されます。辞書が
両方とも省略された場合、表現式は execfiles が呼び出されている
環境の下で実行されます。戻り値は None
です。
警告: 標準では locals は後に述べる関数 locals() のように動作します: 標準の locals 辞書に対する変更を試みては いけません。execfile() の呼び出しが返る時にコードが locals に与える影響を知りたいなら、明示的に loacals 辞書を 渡してください。execfile() は関数のローカルを変更するための 信頼性のある方法として使うことはできません
filename[, mode[, bufsize]]) |
ファイルを開くときは、このコンストラクタを直接呼ばずに open() を 呼び出すのが望ましい方法です。file は型テストにより適しています (たとえば "isinstance(f, file)" と書くような)。
バージョン 2.2 で 新たに追加 された仕様です。
function, list) |
None
の場合、恒等関数を仮定
します。すなわち、list の偽となる要素
は除去されます。
function が None
ではない場合、filter(function, list)
は [item for item in list if function(item)]
と同等です。
function が None
の場合 [item for item in list if
item]
と同等です。
[x]) |
0.0
を返します。
注意: 文字列で値を渡す際、背後の C ライブラリによって NaN および Infinity が返されるかもしれません。これらの 値を返すような特殊な文字列のセットは完全に C ライブラリに依存しており、 バリエーションがあることが知られています。
[iterable]) |
frozenset([])
を返します。
バージョン 2.4 で 新たに追加 された仕様です。
object, name[, default]) |
getattr(x, 'foobar')
は x.foobar
と等価です。
指定された属性が存在しない場合、default が与えられている
場合にはしれが返されます。そうでない場合には AttributeError
が送出されます。
) |
object, name) |
True
を、そうでない場合 False
を返します
(この関数は getattr(object, name)
を呼び出し、
例外を送出するかどうかを調べることで実装しています)。
object) |
[object]) |
x) |
object) |
[prompt]) |
eval(raw_input(prompt))
と同じです。
警告:
この関数はユーザのエラーに対して安全ではありません! この関数
では、入力は有効な Python の式であると期待しています; 入力が
構文的に正しくない場合、SyntaxError が送出されます。
式を評価する際にエラーが生じた場合、他の例外も送出されるかもしれません。
(一方、この関数は時に、熟練者がすばやくスクリプトを書く際に必要なまさに
そのものです)
readline モジュールが読み込まれていれば、input() は精緻な行編集およびヒストリ機能を提供します。
一般的なユーザからの入力のための関数としては raw_input() を使うことを検討してください。
[x[, radix]]) |
0
を返します。
object, classinfo) |
class, classinfo) |
o[, sentinel]) |
0
から開始する
__getitem__() メソッド) をサポートする集合オブジェクト
でなければなりません。これらのプロトコルが両方ともサポート
されていない場合、 TypeError が送出されます。
2 つ目の引数 sentinel が与えられていれば、o
は呼び出し可能なオブジェクトでなければなりません。この場合に
生成されるイテレータは、next() を呼ぶ毎に o を引数無し
で呼び出します。返された値が sentinel と等しければ、
StopIteration が送出されます。そうでない場合、
戻り値がそのまま返されます。
バージョン 2.2 で 新たに追加 された仕様です。
s) |
[sequence]) |
sequence[:]
と同様にコピーを作成して返します。
例えば、list('abc')
は ['a', 'b', 'c']
および
list((1, 2, 3))
は [1, 2, 3]
を返します。
引数が与えられなかった場合、新しい空のリスト []
を返します。
) |
[x[, radix]]) |
0L
を返します。
function, list, ...) |
None
で延長されます。function
が None
の場合、恒等関数であると仮定されます; すなわち、
複数のリスト引数が存在する場合、map() は全てのリスト引数に
対し、対応する要素からなるタプルからなるリストを返します (転置操作の
ようなものです)。list 引数はどのようなシーケンス型でもかまいません;
結果は常にリストになります。
s[, args...][key]) |
オプションの key 引数には list.sort() で使われるのと同じ ような1引数の順序付け関数を指定します。key を指定する場合はキーワー ド形式でなければなりません (たとえば "max(a,b,c,key=func)")。 バージョン 2.5 で 変更 された仕様: オプションの key 引数が追加されました
s[, args...][key]) |
オプションの key 引数には list.sort() で使われるのと同じ ような1引数の順序付け関数を指定します。key を指定する場合はキーワー ド形式でなければなりません (たとえば "min(a,b,c,key=func)")。 バージョン 2.5 で 変更 された仕様: オプションの key 引数が追加されました
) |
バージョン 2.3 で 変更 された仕様: この関数はいかなる引数も受け付けません。 以前は、引数を受理しましたが無視していました。
x) |
filename[, mode[, bufsize]]) |
最初の 2 つの引数は studio
の fopen()
と同じです: filename は開きたいファイルの名前で、
mode はファイルをどのようにして開くかを指定します。
最もよく使われる mode の値は、読み出しの 'r'
、
書き込み (ファイルがすでに存在すれば切り詰め
られます) の 'w'
、追記書き込みの 'a'
です
(いくつかの Unix システムでは、全て の書き込みが
現在のファイルシーク位置に関係なくファイルの末尾に追加されます) 。
mode が省略された場合、標準の値は 'r'
になります。
移植性を高めるためには、バイナリファイルを開くときには、mode
の値に 'b'
を追加しなければなりません。(バイナリファイルと
テキストファイルを区別なく扱うようなシステムでも、ドキュメンテーション
の代わりになるので便利です。)
他に mode に与えられる可能性のある値については後述します。
オプションの bufsize 引数は、ファイルのために必要とする バッファのサイズを指定します: 0 は非バッファリング、 1 は行単位 バッファリング、その他の正の値は指定した値 (の近似値) のサイズを もつバッファを使用することを意味します。bufsize の値が負の 場合、システムの標準を使います。通常、端末は行単位のバッファリング であり、その他のファイルは完全なバッファリングです。省略された 場合、システムの標準の値が使われます。 2.4
'r+'
、'w+'
、および 'a+'
はファイルを更新
モードで開きます ('w+'
はファイルがすでに存在すれば切り詰め
るので注意してください) 。バイナリとテキストファイルを区別する
システムでは、ファイルをバイナリモードで開くためには 'b'
を追加してください (区別しないシステムでは 'b'
は無視されます)。
標準の fopen() における mode の値に加えて、
'U'
または 'rU'
を使うことができます。
Python が全改行文字サポートを行っている (標準ではしています) 場合,
ファイルがテキストファイルで開かれますが、行末文字として Unix における
慣行である '\n'
、Macintosh における慣行である '\r'
、
Windows における慣行である '\r\n'
のいずれを使うことも
できます。これらの改行文字の外部表現はどれも、Python プログラムからは
'\n'
に見えます。Python が全改行文字サポートなしで構築
されている場合、mode 'U'
は通常のテキストモードと
同様になります。開かれたファイルオブジェクトはまた、newlines
と呼ばれる属性を持っており、その値は None
(改行が見つから
なかった場合)、'\n'
、'\r'
、 '\r\n'
、
または見つかった全ての改行タイプを含むタプルになります。
'U'
を取り除いた後のモードは 'r'
、'w'
、'a'
の
いずれかで始まる、というのが Python における規則です。
バージョン 2.5 で 変更 された仕様: モード文字列の先頭についての制限が導入されました
c) |
ord('a')
は整数 97
を返し、
ord(u'\u2020')
は 8224
を返します。この値は
8ビット文字列に対する chr() の逆であり、unicode オブジェクトに対する
unichr() の逆です。引数が unicode で Python が UCS2 Unicode
対応版ならば、その文字のコードポイントは両端を含めて [0..65535] の範囲に
入っていなければなりません。この範囲から外れると文字列の長さが 2 になり、
TypeError が送出されることになります。
x, y[, z]) |
pow(x, y)% z
より効率よく計算
されます)。引数二つの pow(x, y)
という形式は、
冪乗演算子を使った x**y
と等価です。
引数は数値型でなくてはなりません。型混合の場合、
2 進算術演算における型強制規則が適用されます。通常整数
および長整数の被演算子に対しては、二つ目の引数が負の数でない
限り、結果は (型強制後の)被演算子と同じ型になります;
負の場合、全ての引数は浮動小数点型に変換され、浮動小数点
型の結果が返されます。例えば、 10**2
は 100
を返しますが、 100**-2
は 0.01
を返します。
(最後に述べた機能は Python 2.2 で追加されたものです。
Python 2.1 以前では、双方の引数が整数で二つ目の値が負の
場合、例外が送出されます。) 二つ目の引数が負の場合、
三つめの引数は無視されます。z がある場合、x
および y は整数型でなければならず、y は非負
の値でなくてはなりません。(この制限は Python 2.2 で追加
されました。 Python 2.1 以前では、3 つの浮動小数点引数を
持つ pow()
は浮動小数点の丸めに関する偶発誤差
により、プラットフォーム依存の結果を返します。)
[fget[, fset[, fdel[, doc]]]]) |
fget は属性値を取得するための関数で、同様に fset は 属性値を設定するための関数です。また、fdel は属性を 削除するための関数です。以下に属性 x を扱う典型的な利用法を示します:
class C(object): def __init__(self): self._x = None def getx(self): return self._x def setx(self, value): self._x = value def delx(self): del self._x x = property(getx, setx, delx, "I'm the 'x' property.")
doc がもし与えられたならばそれがプロパティ属性のドキュメント文字列になります。 与えられない場合、プロパティは fget のドキュメント文字列(がもしあれば)を コピーします。これにより、読み取り専用プロパティを property() を デコレータとして使って容易に作れるようになります。
class Parrot(object): def __init__(self): self._voltage = 100000 @property def voltage(self): """Get the current voltage.""" return self._voltage
のようにすると、voltage() が同じ名前の読み取り専用属性 の ``getter'' になります。
バージョン 2.2 で 新たに追加 された仕様です。 バージョン 2.5 で 変更 された仕様: doc が与えられない場合に fget の ドキュメント文字列を使う
[start,] stop[, step]) |
1
になります。
start 引数が蒸しされた場合標準の値 0
になります。
完全な形式では、通常の整数列 [start, start + step,
start + 2 * step, ...]
を返します。
step が正の値の場合、最後の要素は stop よりも小さい
start + i * step
の最大値になります;
step が負の値の場合、最後の要素は stop よりも大きい
start + i * step
の最小値になります。
step はゼロであってはなりません (さもなければ ValueError
が送出されます)。以下に例を示します:
>>> range(10) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) [0, 3, 6, 9] >>> range(0, -10, -1) [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
[prompt]) |
>>> s = raw_input('--> ') --> Monty Python's Flying Circus >>> s "Monty Python's Flying Circus"
readline モジュールが読み込まれていれば、input() は精緻な行編集およびヒストリ機能を提供します。
function, sequence[, initializer]) |
reduce(labmda x, y: x+y, [1, 2, 3, 4, 5])
は ((((1+2)+3)+4)+5)
を計算します。左引数x
は累計の値になり、右引数 y はsequence
から取り出した
更新値になります。オプションの initializer
が存在する場合、計算の際にシーケンスの先頭に置かれます。また、
シーケンスが空の場合には標準の値になります。initializer が与えられて
おらず、sequence が単一の要素しか持っていない場合、
最初の要素が返されます。
module) |
reload(module)
を実行すると、以下の処理が行われます:
init
関数が二度呼び出されることはありません。
いくつか補足説明があります:
モジュールは文法的に正しいが、その初期化には失敗した場合、
そのモジュールの最初の import 文はモジュール名を
ローカルにはバインドしませんが、(部分的に初期化された) モジュール
オブジェクトを sys.modules
に記憶します。従って、モジュールを
ロードしなおすには、reload() する前にまず import
(モジュールの名前を部分的に初期化されたオブジェクトにバインドします)
を再度行わなければなりません。
モジュールが再ロードされた再、その辞書 (モジュールのグローバル変数を 含みます) はそのまま残ります。名前の再定義を行うと、以前の定義を 上書きするので、一般的には問題はありません。新たなバージョンのモジュール が古いバージョンで定義された名前を定義していない場合、古い定義が そのまま残ります。 辞書がグローバルテーブルやオブジェクトのキャッシュを維持していれば、 この機能をモジュールを有効性を引き出すために使うことができます -- つまり、 try 文を使えば、必要に応じてテーブルがあるかどうかをテストし、 その初期化を飛ばすことができます:
try: cache except NameError: cache = {}
組み込みモジュールや動的にロードされるモジュールを再ロードする ことは、不正なやり方ではありませんが、一般的にそれほど便利では ありません。例外は sys、__main__ および __builtin__ です。 しかしながら、多くの場合、拡張モジュールは 1 度以上初期化される ようには設計されておらず、再ロードされた場合には何らかの理由で 失敗するかもしれません。
一方のモジュールが from ... import ... を使って、オブジェクトを他方のモジュールからインポートしているなら、 他方のモジュールを reload() で呼び出しても、その モジュールからインポートされたオブジェクトを再定義することは できません -- この問題を回避する一つの方法は、from 文を 再度実行することで、もう一つの方法は from 文の代わりに import と限定的な名前 (module.name) を使うことです。
あるモジュールがクラスのインスタンスを生成している場合、その クラスを定義しているモジュールの再ロードはそれらインスタンスの メソッド定義に影響しません -- それらは古いクラス定義を使いつづけ ます。これは導出クラスの場合でも同じです。
object) |
seq) |
0
から始まる整数を引数にとる__getitem__() メソッド)
をサポートしていなければなりません。
バージョン 2.4 で 新たに追加 された仕様です。
x[, n]) |
round(0.5)
は 1.0
になり、
round(-0.5)
は -1.0
になります)。
[iterable]) |
set([])
を返します。
バージョン 2.4 で 新たに追加 された仕様です。
object, name, value) |
setattr(x, 'foobar', 123)
は
x.foobar = 123
と等価です。
iterable[, cmp[, key[, reverse]]]) |
cmp は2つの引数(iterable の要素)からなるカスタムの比較関数を指定します。 これは始めの引数が2つ目の引数に比べて小さい、等しい、大きいかに応じて 負数、ゼロ、正数を返します。 "cmp=lambda x,y: cmp(x.lower(), y.lower())"
key は1つの引数からなる関数を指定します。これは個々のリストの要素から 比較のキーを取り出すのに使われます。 "key=str.lower"
reverse は真偽値です。 True
がセットされた場合、リストの要素は
個々の比較が反転したものとして並び替えられます。
一般的に、 key および reverse の変換プロセスは同等の cmp 関数を 指定するより早く動作します。これは key および reverse がそれぞれの要素に 一度だけ触れる間に、cmp はリストのそれぞれの要素に対して複数回呼ばれることに よるものです。
バージョン 2.4 で 新たに追加 された仕様です。
[start,] stop[, step]) |
range(start, stop, step)
で指定される
インデクスの集合を表すスライスオブジェクトを返します。
range(start)
スライスオブジェクトを返します。
引数 start および step は標準では None
です。
スライスオブジェクトは読み出し専用の属性 start、stop
および step を持ち、これらは単に引数で使われた値 (または
標準の値) を返します。これらの値には、その他のはっきりとした機能は
ありません; しかしながら、これらの値は Numerical Python
およびその他のサードパーティによる拡張
で利用されています。スライスオブジェクトは拡張されたインデクス指定
構文が使われる際にも生成されます。例えば: "a[start:stop:step]"
や "a[start:stop, i]" です。
function) |
静的メソッドは暗黙の第一引数を受け取りません。 静的メソッドの宣言は、以下のように書き慣わされます:
class C: @staticmethod def f(arg1, arg2, ...): ...
@staticmethod
は関数デコレータ形式です。詳しくは
../ref/function.htmlPython リファレンスマニュアル
の 7 章にある関数定義についての説明を参照してください。
このメソッドはクラスで呼び出すこと (例えば C.f() ) も、 インスタンスとして呼び出すこと (例えば C().f()) もできます。 インスタンスはそのクラスが何であるかを除いて無視されます。
Python における静的メソッドは Java や C++ における静的メソッドと 類似しています。より進んだ概念については、 classmethod() を参照してください。
もっと静的メソッドについての情報が必要ならば、 Python リファレンスマニュアル の3章にある標準型階層についてのドキュメントを繙いてください。 バージョン 2.2 で 新たに追加 された仕様です。 バージョン 2.4 で 変更 された仕様: 関数デコレータ構文を追加しました
[object]) |
repr(object)
との違いは、str(object)
は常に eval() が
受理できるような文字列を返そうと試みるわけではないという点です;
この関数の目的は印字可能な文字列を返すところにあります。
引数が与えられなかった場合、空の文字列 ''
を返します。
sequence[, start]) |
0
です。
sequence の要素は通常は数値で、文字列であってはなりません。
文字列からなるシーケンスを結合する高速かつ正しい方法は
''.join(sequence)
です。
sum(range(n), m)
は reduce(operator.add, range(n), m)
と同等です。
バージョン 2.3 で 新たに追加 された仕様です。
type[, object-or-type]) |
isinstance(obj, type)
は真でなくてはなりません。
二つ目の引数が型オブジェクトの場合、issubclass(type2,
type)
は真でなくてはなりません。
super() は新スタイルのクラスにのみ機能します。
協調する上位クラスのメソッドを呼び出す典型的な利用法を以下に示します:
class C(B): def meth(self, arg): super(C, self).meth(arg)
super は"super(C, self).__getitem__(name)" のような 明示的なドット表記の属性参照の一部として使われているので注意してください。 これに伴って、super は"super(C, self)[name]" のような 文や演算子を使った非明示的な属性参照向けには定義されていないので 注意してください。
バージョン 2.2 で 新たに追加 された仕様です。
[sequence]) |
tuple('abc')
は ('a', 'b', 'c')
を返し、
tuple([1, 2, 3])
は (1, 2, 3)
を返します。
object) |
3 引数で呼び出された場合には type 関数は後述するように コンストラクタとして働きます。
name, bases, dict) |
>>> class X(object): ... a = 1 ... >>> X = type('X', (object,), dict(a=1))
i) |
unichr(97)
は文字列 u'a'
を返します。この関数は Unicode 文字列に対する ord() の逆
です。引数の正当な範囲は Python がどのように構成されているかに依存しています
-- UCS2 ならば [0..0xFFFF] であり UCS4 ならば [0..0x10FFFF] であり、
このどちらかです。
それ以外の値に対しては ValueError が送出されます。
バージョン 2.0 で 新たに追加 された仕様です。
[object[, encoding [, errors]]]) |
もし encoding かつ/または errors が与えられていれば、
unicode()
は 8 ビットの文字列または文字列バッファになっている
オブジェクトを encoding の codec を使ってデコードします。
encoding パラメタはエンコーディング名を与える文字列です;
未知のエンコーディングの場合、LookupError が送出されます。
エラー処理は errors に従って行われます; このパラメタは
入力エンコーディング中で無効な文字の扱い方を指定します。errors
が 'strict'
(標準の設定です) の場合、エラー発生時には
ValueError が送出されます。一方、'ignore'
では、
エラーは暗黙のうちに無視されるようになり、'replace'
では
公式の置換文字、U+FFFD
を使って、デコードできなかった
文字を置き換えます。codecs モジュールについても参照して
ください。
オプションのパラメタが与えられていない場合、 unicode()
は
str()
の動作をまねます。ただし、8 ビット文字列ではなく、
Unicode 文字列を返します。もっと詳しくいえば、 object
が Unicode 文字列かそのサブクラスなら、デコード処理を一切介する
ことなく Unicode 文字列を返すということです。
__unicode__() メソッドを提供しているオブジェクトの場合、
unicode() はこのメソッドを引数なしで呼び出して
Unicode 文字列を生成します。それ以外のオブジェクトの場合、
8 ビットの文字列か、オブジェクトのデータ表現 (representation)
を呼び出し、その後デフォルトエンコーディングで 'strict'
モードの
codec を使って Unicode 文字列に変換します。
バージョン 2.0 で 新たに追加 された仕様です。 バージョン 2.2 で 変更 された仕様: __unicode__() のサポートが追加されました
[object]) |
引数無しでは、現在のローカルシンボルテーブルに対応する辞書を 返します。モジュール、クラス、またはクラスインスタンスオブジェクト (またはその他 __dict__ 属性を持つもの) を引数として与えた場合、 そのオブジェクトのシンボルテーブルに対応する辞書を返します。 返される辞書は変更すべきではありません: 変更が対応するシンボルテーブル にもたらす影響は未定義です。2.5
[start,] stop[, step]) |
注意: xrange() はシンプルさと速度のために定義されている 関数であり、その実現のために実装上の制限を課している場合があります。 Python の C 実装では、全ての引数をネイティブの C long 型 (Python の "short" 整数型) に制限しており、要素数がネイティブの C long 型の 範囲内に収まるよう要求しています。
[iterable, ...]) |
None
の map()
と似ています。引数が単一のシーケンスの場合、1 要素のタプルからなる
リストを返します。引数を指定しない場合、空のリストを返します。
バージョン 2.0 で 新たに追加 された仕様です。
バージョン 2.4 で 変更 された仕様: これまでは、zip() は少なくとも一つの引数を 要求しており、空のリストを返す代わりに TypeError を送出 していました