2. 組み込み関数—Pythonドキュメント

提供:Dev Guides
< PythonPython/docs/2.7/library/functions
移動先:案内検索

2.2。 組み込み関数

Pythonインタープリターには、いつでも利用できる多くの関数が組み込まれています。 ここではアルファベット順にリストされています。

組み込み関数
abs() divmod() input() open() staticmethod()
all() enumerate() int() ord() str()
any() eval() isinstance() pow() sum()
basestring() execfile() issubclass() print() super()
bin() file() iter() property() tuple()
bool() filter() len() range() type()
bytearray() float() list() raw_input() unichr()
callable() format() locals() reduce() unicode()
chr() frozenset() long() reload() vars()
classmethod() getattr() map() repr() xrange()
cmp() globals() max() reversed() zip()
compile() hasattr() memoryview() round() __import__()
complex() hash() min() set()
delattr() help() next() setattr()
dict() hex() object() slice()
dir() id() oct() sorted()

さらに、必須とは見なされなくなった他の4つの組み込み関数があります。 apply()buffer()coerce()、および[ X154X] intern()。 これらは、必須ではない組み込み関数セクションに記載されています。

abs(x)
数値の絶対値を返します。 引数は、単純整数、長整数、または浮動小数点数の場合があります。 引数が複素数の場合、その大きさが返されます。
all(iterable)

iterable のすべての要素がtrueの場合(またはiterableが空の場合)、Trueを返します。 に相当:

def all(iterable):
    for element in iterable:
        if not element:
            return False
    return True

バージョン2.5の新機能。

any(iterable)

iterable のいずれかの要素がtrueの場合、Trueを返します。 イテラブルが空の場合は、Falseを返します。 に相当:

def any(iterable):
    for element in iterable:
        if element:
            return True
    return False

バージョン2.5の新機能。

basestring()

この抽象型は、 str および unicode のスーパークラスです。 呼び出すこともインスタンス化することもできませんが、オブジェクトが str または unicode のインスタンスであるかどうかをテストするために使用できます。 isinstance(obj, basestring)isinstance(obj, (str, unicode))と同等です。

バージョン2.3の新機能。

bin(x)

整数を2進文字列に変換します。 結果は有効なPython式です。 x がPython int オブジェクトでない場合は、整数を返す__index__()メソッドを定義する必要があります。

バージョン2.6の新機能。

class bool([x])

ブール値を返します。 TrueまたはFalseのいずれか。 x は、標準の真理テスト手順を使用して変換されます。 x がfalseまたは省略されている場合、 False が返されます。 それ以外の場合は、 True を返します。 bool もクラスであり、 int のサブクラスです。 クラス bool をこれ以上サブクラス化することはできません。 その唯一のインスタンスは FalseTrue です。

バージョン2.2.1の新機能。

バージョン2.3で変更:引数が指定されていない場合、この関数は False を返します。

class bytearray([source[, encoding[, errors]]])

バイトの新しい配列を返します。 NS bytearray classは、0 <= x <256の範囲の整数の可変シーケンスです。 可変シーケンスタイプで説明されている可変シーケンスの通常のメソッドのほとんどと、 str タイプのほとんどのメソッドがあります。文字列メソッドを参照してください。

オプションの source パラメーターを使用して、いくつかの異なる方法でアレイを初期化できます。

  • unicode の場合は、 encoding (およびオプションで errors )パラメーターも指定する必要があります。 bytearray()は、unicode.encode()を使用してUnicodeをバイトに変換します。

  • integer の場合、配列はそのサイズになり、nullバイトで初期化されます。

  • buffer インターフェースに準拠するオブジェクトの場合、オブジェクトの読み取り専用バッファーがバイト配列の初期化に使用されます。

  • iterable の場合、配列の初期コンテンツとして使用される0 <= x < 256の範囲の整数の反復可能である必要があります。

引数がない場合、サイズ0の配列が作成されます。

バージョン2.6の新機能。

callable(object)
object 引数が呼び出し可能と思われる場合は True を返し、そうでない場合は False を返します。 これがtrueを返した場合でも、呼び出しが失敗する可能性がありますが、falseの場合、 object の呼び出しは成功しません。 クラスは呼び出し可能であることに注意してください(クラスを呼び出すと新しいインスタンスが返されます)。 クラスインスタンスは、__call__()メソッドがある場合に呼び出すことができます。
chr(i)
ASCIIコードが整数 i である1文字の文字列を返します。 たとえば、chr(97)は文字列'a'を返します。 これは ord()の逆です。 引数は[0..255]の範囲内である必要があります。 ValueErrorが発生します。 unichr()も参照してください。
classmethod(function)

関数のクラスメソッドを返します。

クラスメソッドは、インスタンスメソッドがインスタンスを受け取るのと同じように、暗黙の最初の引数としてクラスを受け取ります。 クラスメソッドを宣言するには、次のイディオムを使用します。

class C(object):
    @classmethod
    def f(cls, arg1, arg2, ...):
        ...

@classmethod形式は、関数デコレータです。詳細については、関数定義を参照してください。

クラスメソッドは、クラス(C.f()など)またはインスタンス(C().f()など)のいずれかで呼び出すことができます。 インスタンスは、そのクラスを除いて無視されます。 派生クラスに対してクラスメソッドが呼び出されると、派生クラスオブジェクトが暗黙の最初の引数として渡されます。

クラスメソッドは、C ++またはJavaの静的メソッドとは異なります。 それらが必要な場合は、 staticmethod()を参照してください。

クラスメソッドの詳細については、標準タイプ階層を参照してください。

バージョン2.2の新機能。

バージョン2.4で変更:関数デコレータ構文が追加されました。

cmp(x, y)
2つのオブジェクト xy を比較し、結果に応じて整数を返します。 戻り値は、x < yの場合は負、x == yの場合はゼロ、x > yの場合は厳密に正です。
compile(source, filename, mode[, flags[, dont_inherit]])

source をコードまたはASTオブジェクトにコンパイルします。 コードオブジェクトは、 exec ステートメントによって実行するか、 eval()の呼び出しによって評価できます。 source は、Unicode文字列、 Latin-1 でエンコードされた文字列、またはASTオブジェクトのいずれかです。 ASTオブジェクトの操作方法については、 ast モジュールのドキュメントを参照してください。

filename 引数は、コードが読み取られたファイルを指定する必要があります。 ファイルから読み取られなかった場合は、認識可能な値を渡します('<string>'が一般的に使用されます)。

mode 引数は、コンパイルする必要のあるコードの種類を指定します。 source が一連のステートメントで構成されている場合は、'exec'、単一の式で構成されている場合は'eval'、単一の対話型ステートメント(後者の場合、None以外に評価される式ステートメントが出力されます)。

オプションの引数 flags および dont_inherit は、 source のコンパイルに影響を与える将来のステートメント( PEP 236 を参照)を制御します。 。 どちらも存在しない場合(または両方がゼロの場合)、コードは compile()を呼び出しているコードで有効な将来のステートメントを使用してコンパイルされます。 flags 引数が指定され、 dont_inherit が指定されていない(またはゼロである)場合、 flags 引数で指定された将来のステートメントが使用されます。とにかく使用されます。 dont_inherit がゼロ以外の整数の場合、 flags 引数はそれです–コンパイルの呼び出しの周りで有効な将来のステートメントは無視されます。

将来のステートメントは、複数のステートメントを指定するためにビット単位で論理和をとることができるビットによって指定されます。 特定の機能を指定するために必要なビットフィールドは、 __ future __ モジュールの_Featureインスタンスのcompiler_flag属性として見つけることができます。

この関数は、コンパイルされたソースが無効な場合はSyntaxErrorを発生させ、ソースにnullバイトが含まれている場合はTypeErrorを発生させます。

PythonコードをそのAST表現に解析する場合は、 ast.parse()を参照してください。

ノート

'single'または'eval'モードで複数行コードを含む文字列をコンパイルする場合、入力は少なくとも1つの改行文字で終了する必要があります。 これは、 code モジュール内の不完全なステートメントと完全なステートメントの検出を容易にするためです。

警告

PythonのASTコンパイラではスタックの深さの制限があるため、ASTオブジェクトにコンパイルするときに、十分に大きい/複雑な文字列でPythonインタープリタをクラッシュさせる可能性があります。

バージョン2.3で変更: flags および dont_inherit 引数が追加されました。

バージョン2.6で変更: ASTオブジェクトのコンパイルのサポート。

バージョン2.7で変更: WindowsおよびMacの改行の使用を許可しました。 また、'exec'モードでの入力は、改行で終了する必要がなくなりました。

class complex([real[, imag]])

値が real + imag * 1jの複素数を返すか、文字列または数値を複素数に変換します。 最初のパラメーターが文字列の場合、それは複素数として解釈され、関数は2番目のパラメーターなしで呼び出す必要があります。 2番目のパラメーターを文字列にすることはできません。 各引数は、任意の数値型(複合を含む)にすることができます。 imag を省略すると、デフォルトでゼロになり、この関数は int()long()float( )。 両方の引数を省略した場合は、0jを返します。

ノート

文字列から変換する場合、文字列の中央の+または-演算子の周囲に空白を含めることはできません。 たとえば、complex('1+2j')は問題ありませんが、complex('1 + 2j')ValueErrorを発生させます。

複合型については、数値型— int、float、long、complex で説明されています。

delattr(object, name)
これは setattr()の親戚です。 引数はオブジェクトと文字列です。 文字列は、オブジェクトの属性の1つの名前である必要があります。 オブジェクトで許可されている場合、関数は名前付き属性を削除します。 たとえば、delattr(x, 'foobar')del x.foobarと同等です。

class dict(**kwarg)
class dict(mapping, **kwarg)
class dict(iterable, **kwarg)

新しい辞書を作成します。 dict オブジェクトは辞書クラスです。 このクラスのドキュメントについては、 dict およびマッピングタイプ— dict を参照してください。

その他のコンテナについては、組み込みのlistsettuple クラス、および collections モジュールを参照してください。

dir([object])

引数なしで、現在のローカルスコープ内の名前のリストを返します。 引数を使用して、そのオブジェクトの有効な属性のリストを返そうとします。

オブジェクトに__dir__()という名前のメソッドがある場合、このメソッドが呼び出され、属性のリストを返す必要があります。 これにより、カスタム__getattr__()または__getattribute__()関数を実装するオブジェクトは、 dir()が属性を報告する方法をカスタマイズできます。

オブジェクトが__dir__()を提供しない場合、関数は、オブジェクトの __ dict __ 属性(定義されている場合)およびその型オブジェクトから情報を収集するために最善を尽くします。 結果のリストは必ずしも完全ではなく、オブジェクトにカスタム__getattr__()がある場合は不正確になる可能性があります。

デフォルトの dir()メカニズムは、完全ではなく最も関連性の高い情報を生成しようとするため、オブジェクトの種類によって動作が異なります。

  • オブジェクトがモジュールオブジェクトの場合、リストにはモジュールの属性の名前が含まれます。

  • オブジェクトが型またはクラスオブジェクトの場合、リストにはその属性の名前と、そのベースの属性の再帰的な名前が含まれます。

  • それ以外の場合、リストには、オブジェクトの属性の名前、そのクラスの属性の名前、およびそのクラスの基本クラスの属性の再帰的な名前が含まれます。

結果のリストはアルファベット順にソートされます。 例えば:

>>> import struct
>>> dir()   # show the names in the module namespace
['__builtins__', '__doc__', '__name__', 'struct']
>>> dir(struct)   # show the names in the struct module
['Struct', '__builtins__', '__doc__', '__file__', '__name__',
 '__package__', '_clearcache', 'calcsize', 'error', 'pack', 'pack_into',
 'unpack', 'unpack_from']
>>> class Shape(object):
        def __dir__(self):
            return ['area', 'perimeter', 'location']
>>> s = Shape()
>>> dir(s)
['area', 'perimeter', 'location']

ノート

dir()は、主にインタラクティブプロンプトで使用するための利便性として提供されるため、厳密にまたは一貫して定義された名前のセットとその詳細を提供するよりも、興味深い名前のセットを提供しようとします。動作はリリース間で変わる可能性があります。 たとえば、引数がクラスの場合、メタクラス属性は結果リストに含まれません。

divmod(a, b)

引数として2つの(複素数ではない)数値を取り、筆算を使用する場合は、商と剰余で構成される数値のペアを返します。 混合オペランドタイプでは、2進算術演算子の規則が適用されます。 プレーン整数と長整数の場合、結果は(a // b, a % b)と同じです。 浮動小数点数の場合、結果は(q, a % b)になります。ここで、 q は通常math.floor(a / b)ですが、それより1少ない場合があります。 いずれの場合も、q * b + a % ba に非常に近く、a % bがゼロ以外の場合、 b および0 <= abs(a % b) < abs(b)

バージョン2.3で変更: divmod()を複素数で使用することは非推奨です。

enumerate(sequence, start=0)

列挙オブジェクトを返します。 sequence は、シーケンス、 iterator 、または反復をサポートするその他のオブジェクトである必要があります。 enumerate()によって返されるイテレータのnext()メソッドは、カウント( start からデフォルトは0)と[を繰り返して得られた値を含むタプルを返します。 X191X]シーケンス:

>>> seasons = ['Spring', 'Summer', 'Fall', 'Winter']
>>> list(enumerate(seasons))
[(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
>>> list(enumerate(seasons, start=1))
[(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]

に相当:

def enumerate(sequence, start=0):
    n = start
    for elem in sequence:
        yield n, elem
        n += 1

バージョン2.3の新機能。

バージョン2.6で変更: start パラメーターが追加されました。

eval(expression[, globals[, locals]])

引数は、Unicodeまたは Latin-1 でエンコードされた文字列と、オプションのグローバルおよびローカルです。 指定する場合、 globals は辞書である必要があります。 提供されている場合、 locals は任意のマッピングオブジェクトにすることができます。

バージョン2.4で変更:以前の locals は辞書である必要がありました。

expression 引数は、 globals および locals ディクショナリをグローバルおよびローカル名前空間として使用して、Python式(技術的には条件リスト)として解析および評価されます。 globals ディクショナリが存在し、 '__ builtins__'がない場合、 expression が解析される前に、現在のグローバルが globals にコピーされます。 これは、 expression が通常、標準の __ builtin __ モジュールへのフルアクセスを持ち、制限された環境が伝播されることを意味します。 locals ディクショナリを省略すると、デフォルトで globals ディクショナリになります。 両方の辞書を省略した場合、式は eval()が呼び出される環境で実行されます。 戻り値は、評価された式の結果です。 構文エラーは例外として報告されます。 例:

>>> x = 1
>>> print eval('x+1')
2

この関数は、任意のコードオブジェクト( compile()によって作成されたものなど)を実行するためにも使用できます。 この場合、文字列の代わりにコードオブジェクトを渡します。 コードオブジェクトが'exec'mode 引数としてコンパイルされている場合、 eval() 'の戻り値はNoneになります。

ヒント:ステートメントの動的実行は、 exec ステートメントでサポートされています。 ファイルからのステートメントの実行は、 execfile()関数によってサポートされています。 globals()関数と locals()関数は、それぞれ現在のグローバル辞書とローカル辞書を返します。これは、 eval()で使用するために渡すのに便利です。または execfile()

リテラルのみを含む式で文字列を安全に評価できる関数については、 ast.literal_eval()を参照してください。

execfile(filename[, globals[, locals]])

この関数は exec ステートメントに似ていますが、文字列ではなくファイルを解析します。 import ステートメントとは異なり、モジュール管理を使用しません。ファイルを無条件に読み取り、新しいモジュールを作成しません。 1

引数は、ファイル名と2つのオプションの辞書です。 ファイルは、 globals および locals ディクショナリをグローバルおよびローカル名前空間として使用して、一連のPythonステートメント(モジュールと同様)として解析および評価されます。 提供されている場合、 locals は任意のマッピングオブジェクトにすることができます。 モジュールレベルでは、グローバルとローカルは同じディクショナリであることを忘れないでください。 2つの別々のオブジェクトが globals および locals として渡される場合、コードはクラス定義に埋め込まれているかのように実行されます。

バージョン2.4で変更:以前の locals は辞書である必要がありました。

locals ディクショナリを省略すると、デフォルトで globals ディクショナリになります。 両方の辞書を省略した場合、式は execfile()が呼び出される環境で実行されます。 戻り値はNoneです。

ノート

デフォルトの locals は、以下の関数 locals()で説明されているように機能します。デフォルトの locals ディクショナリへの変更は試みないでください。 関数 execfile()が戻った後、 locals に対するコードの影響を確認する必要がある場合は、明示的な locals ディクショナリを渡します。 execfile()を確実に使用して、関数のローカルを変更することはできません。

file(name[, mode[, buffering]])

ファイルタイプのコンストラクター関数。セクションファイルオブジェクトで詳しく説明されています。 コンストラクターの引数は、以下で説明する open()組み込み関数の引数と同じです。

ファイルを開くときは、このコンストラクターを直接呼び出すのではなく、 open()を使用することをお勧めします。 file は、型テスト(たとえば、isinstance(f, file)の記述)に適しています。

バージョン2.2の新機能。

filter(function, iterable)

function がtrueを返す iterable の要素からリストを作成します。 iterable は、シーケンス、反復をサポートするコンテナー、またはイテレーターのいずれかです。 iterable が文字列またはタプルの場合、結果にもそのタイプが含まれます。 それ以外の場合は常にリストです。 functionNoneの場合、恒等関数が想定されます。つまり、falseである iterable のすべての要素が削除されます。

なお、filter(function, iterable)は、機能がNoneでない場合は、[item for item in iterable if function(item)]と同等であり、機能がNoneの場合は[item for item in iterable if item]と同等です。

この関数のイテレータバージョンについては、 itertools.ifilter()および itertools.ifilterfalse()を参照してください。これには、関数がfalseを返す要素をフィルタリングするバリエーションが含まれます。

class float([x])

数値または文字列 x から構成される浮動小数点数を返します。

引数が文字列の場合は、符号付きの10進数または浮動小数点数が含まれている必要があり、空白に埋め込まれている可能性があります。 引数は[+ |-] nanまたは[+ |-] infの場合もあります。 それ以外の場合、引数は単純整数、長整数、または浮動小数点数である可能性があり、同じ値(Pythonの浮動小数点精度内)の浮動小数点数が返されます。 引数が指定されていない場合は、0.0を返します。

ノート

文字列を渡すと、基になるCライブラリによっては、NaNとInfinityの値が返される場合があります。 Floatは、NaNおよび正または負の無限大に対して文字列nan、inf、および-infを受け入れます。 NaNの場合、大文字と小文字および先頭の+は無視され、先頭の-は無視されます。 Floatは、常にNaNと無限大をnan、inf、または-infとして表します。

float型については、数値型— int、float、long、complex で説明されています。

format(value[, format_spec])

value を、 format_spec の制御に従って、「フォーマットされた」表現に変換します。 format_spec の解釈は、 value 引数のタイプによって異なりますが、ほとんどの組み込みタイプで使用される標準のフォーマット構文があります。 Format Specification Mini-言語

ノート

format(value, format_spec)は単にvalue.__format__(format_spec)を呼び出します。

バージョン2.6の新機能。

class frozenset([iterable])

新しい frozenset オブジェクトを返します。オプションで、 iterable から取得した要素を使用します。 frozensetは組み込みクラスです。 このクラスのドキュメントについては、フリーズセットおよびセットタイプ—セット、フリーズセットを参照してください。

その他のコンテナについては、組み込みの setlisttupledict クラス、および collections [ X136X]モジュール。

バージョン2.4の新機能。

getattr(object, name[, default])
オブジェクトの名前付き属性の値を返します。 name は文字列である必要があります。 文字列がオブジェクトの属性の1つの名前である場合、結果はその属性の値になります。 たとえば、getattr(x, 'foobar')x.foobarと同等です。 指定された属性が存在しない場合は、 default が返されます。存在しない場合は、AttributeErrorが発生します。
globals()
現在のグローバルシンボルテーブルを表すディクショナリを返します。 これは常に現在のモジュールのディクショナリです(関数またはメソッド内では、これはそれが定義されているモジュールであり、呼び出されたモジュールではありません)。
hasattr(object, name)
引数はオブジェクトと文字列です。 結果は、文字列がオブジェクトの属性の1つの名前である場合はTrueであり、そうでない場合はFalseです。 (これは、getattr(object, name)を呼び出して、例外が発生するかどうかを確認することで実装されます。)
hash(object)
オブジェクトのハッシュ値を返します(オブジェクトがある場合)。 ハッシュ値は整数です。 これらは、辞書検索中に辞書キーをすばやく比較するために使用されます。 等しいと比較される数値は、同じハッシュ値を持ちます(1と1.0の場合のように、それらが異なるタイプであっても)。
help([object])

組み込みのヘルプシステムを起動します。 (この関数はインタラクティブな使用を目的としています。)引数が指定されていない場合、インタラクティブヘルプシステムがインタプリタコンソールで起動します。 引数が文字列の場合、その文字列はモジュール、関数、クラス、メソッド、キーワード、またはドキュメントトピックの名前として検索され、ヘルプページがコンソールに出力されます。 引数が他の種類のオブジェクトの場合、オブジェクトのヘルプページが生成されます。

この関数は、 site モジュールによって組み込み名前空間に追加されます。

バージョン2.2の新機能。

hex(x)

(任意のサイズの)整数を、接頭辞「0x」が付いた小文字の16進文字列に変換します。次に例を示します。

>>> hex(255)
'0xff'
>>> hex(-42)
'-0x2a'
>>> hex(1L)
'0x1L'

xがPython int または long オブジェクトでない場合は、文字列を返す__hex __()メソッドを定義する必要があります。

16を底とする整数に16進文字列を変換する方法については、 int()も参照してください。

ノート

floatの16進文字列表現を取得するには、 float.hex()メソッドを使用します。

バージョン2.4で変更:以前は符号なしリテラルのみを返していました。

id(object)
オブジェクトの「ID」を返します。 これは整数(または長整数)であり、このオブジェクトの存続期間中、一意で一定であることが保証されています。 ライフタイムが重複しない2つのオブジェクトは、同じ id()値を持つ場合があります。
input([prompt])

eval(raw_input(prompt))と同等です。

この関数はユーザーエラーをキャッチしません。 入力が構文的に有効でない場合、SyntaxErrorが発生します。 評価中にエラーが発生した場合、他の例外が発生する可能性があります。

readline モジュールがロードされている場合、 input()はそれを使用して、複雑な行編集および履歴機能を提供します。

ユーザーからの一般的な入力には、 raw_input()関数の使用を検討してください。

class int(x=0)
class int(x, base=10)

数値または文字列 x から構築された整数オブジェクトを返すか、引数が指定されていない場合は0を返します。 x が数値の場合、単純整数、長整数、または浮動小数点数にすることができます。 x が浮動小数点の場合、変換はゼロに向かって切り捨てられます。 引数が整数の範囲外の場合、関数は代わりに長いオブジェクトを返します。

x が数値でない場合、または base が指定されている場合、 x は、整数リテラルを表す文字列またはUnicodeオブジェクトである必要があります。基数ベース。 オプションで、リテラルの前に+または-(間にスペースを入れない)を付け、空白で囲むことができます。 基数nリテラルは、0からn-1の数字で構成され、aからz(またはAからZ)の値は10から35です。 。 デフォルトのベースは10です。 許可される値は0および2〜36です。 Base-2、-8、および-16リテラルには、オプションで0b / 0B0o / 0O / 0のプレフィックスを付けることができます。 、または0x / 0X、コード内の整数リテラルと同様。 基数0は、文字列を整数リテラルとして正確に解釈することを意味します。したがって、実際の基数は2、8、10、または16です。

整数型については、数値型— int、float、long、complex で説明されています。

isinstance(object, classinfo)

object 引数が classinfo 引数、またはその(直接、間接、または仮想)サブクラスのインスタンスである場合はtrueを返します。 classinfo が型オブジェクト(新しいスタイルのクラス)であり、 object がその型または(直接、間接、または仮想のオブジェクトである場合もtrueを返します。 )そのサブクラス。 object がクラスインスタンスまたは指定されたタイプのオブジェクトでない場合、関数は常にfalseを返します。 classinfo がクラスまたはタイプオブジェクトのタプル(または再帰的に他のそのようなタプル)である場合、 object がクラスまたはタイプのいずれかのインスタンスである場合はtrueを返します。 classinfo がクラス、タイプ、またはクラス、タイプ、およびそのようなタプルのタプルでない場合、TypeError例外が発生します。

バージョン2.2で変更:タイプ情報のタプルのサポートが追加されました。

issubclass(class, classinfo)

classclassinfo のサブクラス(直接、間接、または仮想)の場合はtrueを返します。 クラスはそれ自体のサブクラスと見なされます。 classinfo は、クラスオブジェクトのタプルである可能性があります。その場合、 classinfo のすべてのエントリがチェックされます。 それ以外の場合は、TypeError例外が発生します。

バージョン2.3で変更:タイプ情報のタプルのサポートが追加されました。

iter(o[, sentinel])

イテレータオブジェクトを返します。 最初の引数は、2番目の引数の存在に応じて非常に異なって解釈されます。 2番目の引数がない場合、 o は反復プロトコル(__iter__()メソッド)をサポートするコレクションオブジェクトであるか、シーケンスプロトコル(__getitem__()メソッドと0で始まる整数引数)。 これらのプロトコルのいずれもサポートしていない場合は、TypeErrorが発生します。 2番目の引数 sentinel が指定されている場合、 o は呼び出し可能なオブジェクトである必要があります。 この場合に作成されたイテレータは、 next()メソッドへの呼び出しごとに引数なしで o を呼び出します。 返される値が sentinel と等しい場合、StopIterationが発生します。それ以外の場合、値が返されます。

iter()の2番目の形式の1つの便利なアプリケーションは、特定の行に到達するまでファイルの行を読み取ることです。 次の例では、 readline()メソッドが空の文字列を返すまでファイルを読み取ります。

with open('mydata.txt') as fp:
    for line in iter(fp.readline, ''):
        process_line(line)

バージョン2.2の新機能。

len(s)
オブジェクトの長さ(アイテムの数)を返します。 引数は、シーケンス(文字列、バイト、タプル、リスト、範囲など)またはコレクション(辞書、セット、フリーズセットなど)の場合があります。

class list([iterable])

iterable のアイテムと同じアイテムのリストを返します。 iterable は、シーケンス、反復をサポートするコンテナー、またはイテレーターオブジェクトのいずれかです。 iterable がすでにリストになっている場合は、iterable[:]と同様に、コピーが作成されて返されます。 たとえば、list('abc')['a', 'b', 'c']を返し、list( (1, 2, 3) )[1, 2, 3]を返します。 引数が指定されていない場合は、新しい空のリスト[]を返します。

listは、シーケンスタイプ— str、unicode、list、tuple、bytearray、buffer、xrange に記載されているように、可変シーケンスタイプです。 その他のコンテナについては、組み込みの dictsettuple クラス、および collections モジュールを参照してください。

locals()

現在のローカルシンボルテーブルを表すディクショナリを更新して返します。 自由変数は、関数ブロックで呼び出されたときに locals()によって返されますが、クラスブロックでは返されません。

ノート

この辞書の内容は変更しないでください。 変更は、インタプリタが使用するローカル変数と自由変数の値に影響を与えない場合があります。

class long(x=0)
class long(x, base=10)

文字列または数値 x から構築された長整数オブジェクトを返します。 引数が文字列の場合、空白に埋め込まれている可能性のある任意のサイズの符号付きの数値が含まれている必要があります。 base 引数は、 int()の場合と同じように解釈され、 x が文字列の場合にのみ指定できます。 それ以外の場合、引数は単純整数、長整数、または浮動小数点数である可能性があり、同じ値の長整数が返されます。 浮動小数点数の整数への変換は(ゼロに向かって)切り捨てられます。 引数が指定されていない場合は、0Lを返します。

long型については、数値型— int、float、long、complex で説明されています。

map(function, iterable, ...)
関数反復可能のすべての項目に適用し、結果のリストを返します。 追加の iterable 引数が渡された場合、 function はその数の引数を取る必要があり、すべてのiterableからのアイテムに並行して適用されます。 あるイテラブルが別のイテラブルよりも短い場合は、Noneアイテムで拡張されていると見なされます。 関数Noneの場合、恒等関数が想定されます。 複数の引数がある場合、 map()は、すべての反復可能オブジェクトからの対応する項目を含むタプルで構成されるリストを返します(一種の転置操作)。 iterable 引数は、シーケンスまたは任意の反復可能オブジェクトにすることができます。 結果は常にリストです。
max(iterable[, key])
max(arg1, arg2, *args[, key])

反復可能な最大のアイテム、または2つ以上の引数の最大のものを返します。

位置引数が1つ指定されている場合、 iterable は空でないiterable(空でない文字列、タプル、リストなど)である必要があります。 iterableの最大のアイテムが返されます。 2つ以上の位置引数が指定されている場合、最大の位置引数が返されます。

オプションの key 引数は、list.sort()で使用されるような1つの引数の順序付け関数を指定します。 key 引数を指定する場合は、キーワード形式である必要があります(たとえば、max(a,b,c,key=func))。

バージョン2.5で変更:オプションの key 引数のサポートが追加されました。

memoryview(obj)
指定された引数から作成された「メモリビュー」オブジェクトを返します。 詳細については、 memoryview type を参照してください。
min(iterable[, key])
min(arg1, arg2, *args[, key])

反復可能な最小の項目、または2つ以上の引数の最小のものを返します。

位置引数が1つ指定されている場合、 iterable は空でないiterable(空でない文字列、タプル、リストなど)である必要があります。 iterableの最小のアイテムが返されます。 2つ以上の位置引数が指定されている場合、最小の位置引数が返されます。

オプションの key 引数は、list.sort()で使用されるような1つの引数の順序付け関数を指定します。 key 引数を指定する場合は、キーワード形式である必要があります(たとえば、min(a,b,c,key=func))。

バージョン2.5で変更:オプションの key 引数のサポートが追加されました。

next(iterator[, default])

next()メソッドを呼び出して、イテレータから次のアイテムを取得します。 default が指定されている場合、イテレータが使い果たされた場合に返されます。指定されていない場合、StopIterationが発生します。

バージョン2.6の新機能。

class object

新しい機能のないオブジェクトを返します。 object は、すべての新しいスタイルクラスのベースです。 新しいスタイルクラスのすべてのインスタンスに共通のメソッドがあります。

バージョン2.2の新機能。

バージョン2.3で変更:この関数は引数を受け入れません。 以前は、引数を受け入れましたが、無視していました。

oct(x)

(任意のサイズの)整数を8進文字列に変換します。 結果は有効なPython式です。

バージョン2.4で変更:以前は符号なしリテラルのみを返していました。

open(name[, mode[, buffering]])

ファイルを開き、セクションファイルオブジェクトで説明されているファイルタイプのオブジェクトを返します。 ファイルを開くことができない場合は、IOErrorが発生します。 ファイルを開くときは、 file コンストラクターを直接呼び出すのではなく、 open()を使用することをお勧めします。

最初の2つの引数は、stdiofopen()の場合と同じです。 name は開くファイル名であり、 mode は文字列です。ファイルを開く方法を示します。

mode の最も一般的に使用される値は、読み取り用の'r'、書き込み用の'w'(ファイルが既に存在する場合はファイルの切り捨て)、および'a'です。追加(一部の Unixシステムでは、現在のシーク位置に関係なく、すべてのがファイルの最後に追加を書き込むことを意味します)。 モードを省略すると、デフォルトで'r'になります。 デフォルトでは、テキストモードを使用します。このモードでは、'\n'文字が、書き込み時にプラットフォーム固有の表現に変換され、読み取り時に元に戻されます。 したがって、バイナリファイルを開くときは、'b'mode 値に追加して、ファイルをバイナリモードで開く必要があります。これにより、移植性が向上します。 ('b'を追加すると、バイナリファイルとテキストファイルを別々に処理しないシステムでも役立ちます。ドキュメントとして機能します。) mode の可能な値については、以下を参照してください。

オプションの buffering 引数は、ファイルの目的のバッファーサイズを指定します。0はバッファーなし、1は行バッファー、その他の正の値はそのサイズ(バイト単位)のバッファーを使用することを意味します。 負のバッファリングは、システムのデフォルトを使用することを意味します。これは通常、ttyデバイスではラインバッファリングされ、他のファイルでは完全にバッファリングされます。 省略した場合、システムのデフォルトが使用されます。 2

モード'r+''w+'、および'a+'は、更新(読み取りおよび書き込み)のためにファイルを開きます。 'w+'はファイルを切り捨てることに注意してください。 バイナリファイルとテキストファイルを区別するシステムで、'b'をモードに追加して、ファイルをバイナリモードで開きます。 この区別がないシステムでは、'b'を追加しても効果はありません。

標準のfopen()値に加えて、モード'U'または'rU'の場合があります。 Pythonは通常、ユニバーサルニューラインをサポートして構築されています。 'U'を指定すると、ファイルがテキストファイルとして開かれますが、行は次のいずれかで終了できます:Unixの行末規則'\n'、Macintoshの規則'\r' 、またはWindowsの規則'\r\n'。 これらの外部表現はすべて、Pythonプログラムによって'\n'として認識されます。 Pythonがユニバーサルニューラインなしで構築されている場合、モードをサポートします。'U'は通常のテキストモードと同じです。 そのように開かれたファイルオブジェクトには、newlinesという属性もあり、値はNone(改行がまだ表示されていない場合)、'\n''\r'であることに注意してください。 ]、'\r\n'、または表示されるすべての改行タイプを含むタプル。

Pythonは、'U'を削除した後、モードが'r''w'、または'a'で始まることを強制します。

Pythonは、 fileinputosos.pathtempfileshutil を含む多くのファイル処理モジュールを提供します。

バージョン2.5で変更:モード文字列の最初の文字の制限が導入されました。

ord(c)
長さが1の文字列を指定すると、引数がUnicodeオブジェクトの場合は文字のUnicodeコードポイントを表す整数を返し、引数が8ビット文字列の場合はバイトの値を返します。 たとえば、ord('a')は整数97を返し、ord(u'\u2020')8224を返します。 これは、8ビット文字列の場合は chr()の逆であり、Unicodeオブジェクトの場合は unichr()の逆です。 Unicode引数が指定され、PythonがUCS2 Unicodeで構築されている場合、文字のコードポイントは[0..65535]の範囲内である必要があります。 それ以外の場合、文字列の長さは2であり、TypeErrorが発生します。
pow(x, y[, z])

xy の累乗に戻します。 z が存在する場合は、 xy の累乗、モジュロ zpow(x, y) % zよりも効率的に計算)に戻します) 。 2つの引数形式pow(x, y)は、累乗演算子x**yを使用するのと同じです。

引数は数値型でなければなりません。 オペランドタイプが混在している場合、2進算術演算子の強制規則が適用されます。 intおよびlongintオペランドの場合、2番目の引数が負でない限り、結果は(強制後の)オペランドと同じ型になります。 その場合、すべての引数がfloatに変換され、floatの結果が配信されます。 たとえば、10**2100を返しますが、10**-20.01を返します。 (この最後の機能はPython2.2で追加されました。 Python 2.1以前では、両方の引数が整数型であり、2番目の引数が負の場合、例外が発生しました。)2番目の引数が負の場合、3番目の引数を省略する必要があります。 z が存在する場合、 x および y は整数型である必要があり、 y は非負である必要があります。 (この制限はPython2.2で追加されました。 Python 2.1以前では、浮動小数点の丸めの事故に応じて、浮動3引数pow()はプラットフォームに依存する結果を返しました。)

print(*objects, sep=' ', end='\\n', file=sys.stdout)

オブジェクトをストリームファイルに出力し、 sep で区切り、その後に end を続けます。 sepend 、および file が存在する場合は、キーワード引数として指定する必要があります。

キーワード以外の引数はすべて、 str()のように文字列に変換されてストリームに書き込まれ、 sep で区切られ、その後に end が続きます。 sepend はどちらも文字列である必要があります。 Noneにすることもできます。これは、デフォルト値を使用することを意味します。 オブジェクトが指定されていない場合、 print()end を書き込むだけです。

file 引数は、write(string)メソッドを持つオブジェクトである必要があります。 存在しない場合、またはNoneの場合、 sys.stdout が使用されます。 出力バッファリングはファイルによって決定されます。 file.flush()を使用して、たとえば、画面にすぐに表示されるようにします。

ノート

printという名前は print ステートメントとして認識されるため、この関数は通常、組み込みとして使用できません。 ステートメントを無効にして print()関数を使用するには、モジュールの上部で次のfutureステートメントを使用します。

from __future__ import print_function

バージョン2.6の新機能。

class property([fget[, fset[, fdel[, doc]]]])

新しいスタイルのクラス es(オブジェクトから派生したクラス)のプロパティ属性を返します。

fget は、属性値を取得するための関数です。 fset は、属性値を設定するための関数です。 fdel は、属性値を削除するための関数です。 そして、 doc は属性のdocstringを作成します。

一般的な使用法は、管理対象属性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.")

cC のインスタンスである場合、c.xはゲッターを呼び出し、c.x = valueはセッターを呼び出し、del c.xはデリッターを呼び出します。 。

指定すると、 doc がプロパティ属性のdocstringになります。 それ以外の場合、プロパティは fget のdocstring(存在する場合)をコピーします。 これにより、 property()デコレータとして使用して、読み取り専用プロパティを簡単に作成できます。

class Parrot(object):
    def __init__(self):
        self._voltage = 100000

    @property
    def voltage(self):
        """Get the current voltage."""
        return self._voltage

@propertyデコレータは、voltage()メソッドを同じ名前の読み取り専用属性の「ゲッター」に変え、電圧のdocstringを「Getthe現在の電圧。」

プロパティオブジェクトには、デコレータとして使用できるgettersetter、およびdeleterメソッドがあり、対応するアクセサ関数がデコレートされた関数に設定されたプロパティのコピーを作成します。 これは例で最もよく説明されます:

class C(object):
    def __init__(self):
        self._x = None

    @property
    def x(self):
        """I'm the 'x' property."""
        return self._x

    @x.setter
    def x(self, value):
        self._x = value

    @x.deleter
    def x(self):
        del self._x

このコードは、最初の例とまったく同じです。 追加の関数には、必ず元のプロパティと同じ名前を付けてください(この場合はx)。

返されるプロパティオブジェクトには、コンストラクター引数に対応する属性fgetfset、およびfdelもあります。

バージョン2.2の新機能。

バージョン2.5で変更: doc が指定されていない場合は、 fget のdocstringを使用します。

バージョン2.6で変更: gettersetter、およびdeleter属性が追加されました。

range(stop)
range(start, stop[, step])

これは、等差数列を含むリストを作成するための用途の広い関数です。 これは、 for ループで最もよく使用されます。 引数は単純な整数でなければなりません。 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)
[]
raw_input([prompt])

prompt 引数が存在する場合、末尾の改行なしで標準出力に書き込まれます。 次に、この関数は入力から行を読み取り、それを文字列に変換して(末尾の改行を削除して)、それを返します。 EOFを読み取ると、EOFErrorが発生します。 例:

>>> s = raw_input('--> ')
--> Monty Python's Flying Circus
>>> s
"Monty Python's Flying Circus"

readline モジュールがロードされている場合、 raw_input()はそれを使用して、複雑な行編集および履歴機能を提供します。

reduce(function, iterable[, initializer])

iterable の項目に、2つの引数の function を左から右に累積的に適用して、iterableを1つの値に減らします。 たとえば、reduce(lambda x, y: x+y, [1, 2, 3, 4, 5])((((1+2)+3)+4)+5)を計算します。 左の引数 x は累積値であり、右の引数 yiterable からの更新値です。 オプションの initializer が存在する場合、計算ではiterableの項目の前に配置され、iterableが空の場合のデフォルトとして機能します。 initializer が指定されておらず、 iterable にアイテムが1つしかない場合、最初のアイテムが返されます。 ほぼ同等:

def reduce(function, iterable, initializer=None):
    it = iter(iterable)
    if initializer is None:
        try:
            initializer = next(it)
        except StopIteration:
            raise TypeError('reduce() of empty sequence with no initial value')
    accum_value = initializer
    for x in it:
        accum_value = function(accum_value, x)
    return accum_value
reload(module)

以前にインポートしたモジュールをリロードします。 引数はモジュールオブジェクトである必要があるため、以前に正常にインポートされている必要があります。 これは、外部エディターを使用してモジュールのソースファイルを編集し、Pythonインタープリターを離れずに新しいバージョンを試してみたい場合に便利です。 戻り値はモジュールオブジェクトです( module 引数と同じ)。

reload(module)を実行した場合:

  • Pythonモジュールのコードが再コンパイルされ、モジュールレベルのコードが再実行され、モジュールのディクショナリ内の名前にバインドされるオブジェクトの新しいセットが定義されます。 拡張モジュールのinit関数は、2回目は呼び出されません。

  • Pythonの他のすべてのオブジェクトと同様に、古いオブジェクトは、参照カウントがゼロに低下した後にのみ再利用されます。

  • モジュール名前空間の名前は、新しいオブジェクトまたは変更されたオブジェクトを指すように更新されます。

  • 古いオブジェクトへの他の参照(モジュールの外部の名前など)は、新しいオブジェクトを参照するためにリバウンドされないため、必要に応じて、それらが発生する各名前空間で更新する必要があります。

他にもいくつかの注意点があります。

モジュールがリロードされると、そのディクショナリ(モジュールのグローバル変数を含む)が保持されます。 名前の再定義は古い定義を上書きするため、これは通常問題にはなりません。 モジュールの新しいバージョンで古いバージョンで定義された名前が定義されていない場合、古い定義が残ります。 この機能は、グローバルテーブルまたはオブジェクトのキャッシュを維持する場合にモジュールの利点として使用できます。 try ステートメントを使用して、テーブルの存在をテストし、必要に応じて初期化をスキップできます。

try:
    cache
except NameError:
    cache = {}

通常、組み込みモジュールまたは動的にロードされたモジュールをリロードすることはあまり役に立ちません。 sys__ main __builtinsおよびその他の主要モジュールをリロードすることはお勧めしません。 多くの場合、拡張モジュールは複数回初期化されるようには設計されておらず、リロード時に任意の方法で失敗する可能性があります。

モジュールが fromimport …を使用して別のモジュールからオブジェクトをインポートする場合、他のモジュールに対して reload()を呼び出しても、そのモジュールからインポートされたオブジェクトは再定義されません。これを回避する方法は、 from ステートメントを再実行することです。別の方法は、代わりに import と修飾名( module 。* name *)を使用することです。

モジュールがクラスのインスタンスをインスタンス化する場合、クラスを定義するモジュールをリロードしても、インスタンスのメソッド定義には影響しません。引き続き古いクラス定義を使用します。 同じことが派生クラスにも当てはまります。

repr(object)
オブジェクトの印刷可能な表現を含む文字列を返します。 これは、変換(逆引用符)によって生成される値と同じです。 通常の機能としてこの操作にアクセスできると便利な場合があります。 多くのタイプの場合、この関数は、 eval()に渡されたときに同じ値のオブジェクトを生成する文字列を返そうとします。それ以外の場合、表現は、の名前を含む山括弧で囲まれた文字列です。オブジェクトのタイプと、多くの場合オブジェクトの名前とアドレスを含む追加情報。 クラスは、__repr__()メソッドを定義することにより、この関数がインスタンスに対して返すものを制御できます。
reversed(seq)

イテレータを返します。 seq は、__reversed__()メソッドを持つオブジェクト、またはシーケンスプロトコル(__len__()メソッドおよび__getitem__()メソッドで始まる整数引数)をサポートするオブジェクトである必要があります。 X176X] )。

バージョン2.4の新機能。

バージョン2.6で変更:カスタム__reversed__()メソッドを作成する可能性が追加されました。

round(number[, ndigits])

小数点以下 n桁桁に丸められた浮動小数点値数値を返します。 ndigits を省略すると、デフォルトでゼロになります。 結果は浮動小数点数です。 値は、10の累乗から ndigits を引いたものに最も近い倍数に丸められます。 2つの倍数が等しく近い場合、丸めは0から離れて行われます(たとえば、round(0.5)1.0であり、round(-0.5)-1.0です)。

ノート

フロートに対する round()の動作は驚くべきものになる可能性があります。たとえば、round(2.675, 2)は、予期される2.68の代わりに2.67を提供します。 これはバグではありません。ほとんどの小数部を浮動小数点数として正確に表すことができないという事実の結果です。 詳細については、浮動小数点演算:問題と制限を参照してください。

class set([iterable])

新しい set オブジェクトを返します。オプションで、 iterable から取得した要素を使用します。 setは組み込みクラスです。 このクラスのドキュメントについては、 set および Set Types — set、frozenset を参照してください。

その他のコンテナについては、組み込みのフリーズセットlistタプルdict クラス、およびコレクション[ X142X]モジュール。

バージョン2.4の新機能。

setattr(object, name, value)
これは getattr()に相当します。 引数は、オブジェクト、文字列、および任意の値です。 文字列は、既存の属性または新しい属性に名前を付けることができます。 オブジェクトで許可されている場合、関数は属性に値を割り当てます。 たとえば、setattr(x, 'foobar', 123)x.foobar = 123と同等です。
class slice(stop)

class slice(start, stop[, step])

range(start, stop, step)で指定されたインデックスのセットを表す slice オブジェクトを返します。 start および step 引数のデフォルトはNoneです。 スライスオブジェクトには、読み取り専用のデータ属性startstop、およびstepがあり、これらは単に引数値(またはそれらのデフォルト)を返します。 他に明示的な機能はありません。 ただし、NumericalPythonやその他のサードパーティの拡張機能で使用されます。 拡張インデックス構文が使用されている場合も、スライスオブジェクトが生成されます。 例:a[start:stop:step]またはa[start:stop, i]。 イテレータを返す代替バージョンについては、 itertools.islice()を参照してください。
sorted(iterable[, cmp[, key[, reverse]]])

iterable のアイテムから新しいソート済みリストを返します。

オプションの引数 cmpkey 、および reverse は、list.sort()メソッド(セクション Mutableで説明)の引数と同じ意味を持ちます。シーケンスタイプ)。

cmp は、2つの引数(反復可能な要素)のカスタム比較関数を指定します。これは、最初の引数が2番目の引数よりも小さい、等しい、または大きいと見なされるかどうかに応じて、負、ゼロ、または正の数を返す必要があります。 cmp=lambda x,y: cmp(x.lower(), y.lower())。 デフォルト値はNoneです。

key は、各リスト要素から比較キーを抽出するために使用される1つの引数key=str.lowerの関数を指定します。 デフォルト値はNoneです(要素を直接比較してください)。

reverse はブール値です。 Trueに設定すると、リスト要素は、各比較が逆になったかのように並べ替えられます。

一般に、キーおよびリバース変換プロセスは、同等の cmp 関数を指定するよりもはるかに高速です。 これは、 cmp がリスト要素ごとに複数回呼び出されるのに対し、キーリバースは各要素に1回だけ触れるためです。 functools.cmp_to_key()を使用して、古いスタイルの cmp 関数を key 関数に変換します。

組み込みの sorted()関数は安定していることが保証されています。 同等に比較される要素の相対的な順序を変更しないことが保証されている場合、並べ替えは安定しています。これは、複数のパスで並べ替える場合に役立ちます(たとえば、部門で並べ替えてから給与等級で並べ替える)。

並べ替えの例と簡単な並べ替えチュートリアルについては、並べ替え方法を参照してください。

バージョン2.4の新機能。

staticmethod(function)

関数の静的メソッドを返します。

静的メソッドは、暗黙の最初の引数を受け取りません。 静的メソッドを宣言するには、次のイディオムを使用します。

class C(object):
    @staticmethod
    def f(arg1, arg2, ...):
        ...

@staticmethod形式は、関数デコレータです。詳細については、関数定義を参照してください。

静的メソッドは、クラス(C.f()など)またはインスタンス(C().f()など)のいずれかで呼び出すことができます。

Pythonの静的メソッドは、JavaまたはC ++で見られるものと似ています。 代替クラスコンストラクターの作成に役立つバリアントについては、 classmethod()も参照してください。

静的メソッドの詳細については、標準タイプ階層を参照してください。

バージョン2.2の新機能。

バージョン2.4で変更:関数デコレータ構文が追加されました。

class str(object=)

オブジェクトの適切に印刷可能な表現を含む文字列を返します。 文字列の場合、これは文字列自体を返します。 repr(object)との違いは、str(object)eval()に受け入れられる文字列を常に返そうとしないことです。 その目標は、印刷可能な文字列を返すことです。 引数が指定されていない場合は、空の文字列を返します。

文字列の詳細については、シーケンスタイプ— str、unicode、list、tuple、bytearray、buffer、シーケンス機能(文字列はシーケンス)を説明するxrange 、および[X233X ]文字列メソッドセクション。 フォーマットされた文字列を出力するには、テンプレート文字列、または文字列フォーマット操作セクションで説明されている%演算子を使用します。 さらに、 String Services セクションを参照してください。 unicode()も参照してください。

sum(iterable[, start])

startiterable の項目を左から右に合計し、合計を返します。 start のデフォルトは0です。 iterable の項目は通常数値であり、開始値を文字列にすることはできません。

いくつかのユースケースでは、 sum()の良い代替手段があります。 文字列のシーケンスを連結するための推奨される高速な方法は、.join(sequence)を呼び出すことです。 拡張精度で浮動小数点値を追加するには、 math.fsum()を参照してください。 一連の反復可能オブジェクトを連結するには、 itertools.chain()の使用を検討してください。

バージョン2.3の新機能。

super(type[, object-or-type])

type の親または兄弟クラスにメソッド呼び出しを委任するプロキシオブジェクトを返します。 これは、クラスでオーバーライドされた継承されたメソッドにアクセスする場合に役立ちます。 検索順序は、 type 自体がスキップされることを除いて、 getattr()で使用される順序と同じです。

type__ mro __ 属性は、 getattr()super()の両方で使用されるメソッド解決検索順序を示しています。 属性は動的であり、継承階層が更新されるたびに変更できます。

2番目の引数を省略すると、返されるスーパーオブジェクトはバインドされません。 2番目の引数がオブジェクトの場合、isinstance(obj, type)は真でなければなりません。 2番目の引数が型の場合、issubclass(type2, type)はtrueである必要があります(これはクラスメソッドに役立ちます)。

ノート

super()は、新しいスタイルのクラスでのみ機能します。

super には2つの典型的な使用例があります。 単一継承のクラス階層では、 super を使用して、明示的に名前を付けずに親クラスを参照できるため、コードの保守性が向上します。 この使用法は、他のプログラミング言語での super の使用法とほぼ同じです。

2番目のユースケースは、動的実行環境で協調的な多重継承をサポートすることです。 このユースケースはPythonに固有のものであり、静的にコンパイルされた言語や単一継承のみをサポートする言語には見られません。 これにより、複数の基本クラスが同じメソッドを実装する「ひし形図」を実装できます。 優れた設計では、このメソッドはすべての場合に同じ呼び出しシグネチャを持つ必要があります(呼び出しの順序は実行時に決定されるため、その順序はクラス階層の変更に適応し、その順序には実行前に不明な兄弟クラスが含まれる可能性があるため) )。

どちらのユースケースでも、一般的なスーパークラスの呼び出しは次のようになります。

class C(B):
    def method(self, arg):
        super(C, self).method(arg)

super()は、super().__getitem__(name)などの明示的なドット属性ルックアップのバインディングプロセスの一部として実装されていることに注意してください。 これは、協調的な多重継承をサポートする予測可能な順序でクラスを検索するための独自の__getattribute__()メソッドを実装することによって行われます。 したがって、 super()は、super()[name]などのステートメントまたは演算子を使用した暗黙的なルックアップに対しては定義されていません。

また、 super()はメソッド内での使用に限定されないことに注意してください。 2つの引数形式は、引数を正確に指定し、適切な参照を行います。

super()を使用して協調クラスを設計する方法に関する実際的な提案については、 super()の使用ガイドを参照してください。

バージョン2.2の新機能。

tuple([iterable])

iterable のアイテムと同じアイテムと同じ順序のタプルを返します。 iterable は、シーケンス、反復をサポートするコンテナー、またはイテレーターオブジェクトの場合があります。 iterable がすでにタプルである場合、変更されずに返されます。 たとえば、tuple('abc')('a', 'b', 'c')を返し、tuple([1, 2, 3])(1, 2, 3)を返します。 引数が指定されていない場合は、新しい空のタプル()を返します。

tuple は、 Sequence Types — str、unicode、list、tuple、bytearray、buffer、xrange に記載されているように、不変のシーケンスタイプです。 その他のコンテナについては、組み込みの dictlistset クラス、および collections モジュールを参照してください。

class type(object)
class type(name, bases, dict)

引数を1つ指定して、オブジェクトの型を返します。 戻り値は型オブジェクトです。 オブジェクトの型をテストするには、 isinstance()組み込み関数をお勧めします。

3つの引数を使用して、新しい型オブジェクトを返します。 これは本質的に、 class ステートメントの動的な形式です。 name 文字列はクラス名であり、 __ name __ 属性になります。 bases タプルは基本クラスを項目化し、 __ bases __ 属性になります。 dict ディクショナリは、クラス本体の定義を含む名前空間であり、 __ dict __ 属性になります。 たとえば、次の2つのステートメントは、同一の type オブジェクトを作成します。

>>> class X(object):
...     a = 1
...
>>> X = type('X', (object,), dict(a=1))

バージョン2.2の新機能。

unichr(i)

Unicodeコードが整数 i である1文字のUnicode文字列を返します。 たとえば、unichr(97)は文字列u'a'を返します。 これは、Unicode文字列の ord()の逆です。 引数の有効な範囲は、Pythonの構成方法によって異なります。UCS2[0..0xFFFF]またはUCS4 [0..0x10FFFF]のいずれかです。 それ以外の場合は、ValueErrorが発生します。 ASCIIおよび8ビット文字列については、 chr()を参照してください。

バージョン2.0の新機能。

unicode(object=)
unicode(object[, encoding[, errors]])

次のいずれかのモードを使用して、オブジェクトのUnicode文字列バージョンを返します。

encoding および/または errors が指定された場合、unicode()は、[X166Xのコーデックを使用して8ビット文字列または文字バッファのいずれかであるオブジェクトをデコードします。 ]エンコーディング。 encoding パラメーターは、エンコーディングの名前を示す文字列です。 エンコーディングが不明な場合は、LookupErrorが発生します。 エラー処理はエラーに従って行われます。 これは、入力エンコーディングで無効な文字の処理を指定します。 エラー'strict'(デフォルト)の場合、エラー時にValueErrorが発生し、値が'ignore'の場合、エラーはサイレントに無視されます。 'replace'の値を指定すると、公式のUnicode置換文字U+FFFDを使用して、デコードできない入力文字が置換されます。 コーデックモジュールも参照してください。

オプションのパラメータが指定されていない場合、unicode()は、8ビット文字列の代わりにUnicode文字列を返すことを除いて、str()の動作を模倣します。 より正確には、 object がUnicode文字列またはサブクラスである場合、追加のデコードを適用せずにそのUnicode文字列を返します。

__unicode__()メソッドを提供するオブジェクトの場合、引数なしでこのメソッドを呼び出してUnicode文字列を作成します。 他のすべてのオブジェクトの場合、8ビットの文字列バージョンまたは表現が要求され、'strict'モードのデフォルトエンコーディングのコーデックを使用してUnicode文字列に変換されます。

Unicode文字列の詳細については、シーケンスタイプ— str、unicode、list、tuple、bytearray、buffer、シーケンス機能を説明するxrange (Unicode文字列はシーケンス)、およびで説明されている文字列固有のメソッドを参照してください。 文字列メソッドセクション。 フォーマットされた文字列を出力するには、テンプレート文字列、または文字列フォーマット操作セクションで説明されている%演算子を使用します。 さらに、 String Services セクションを参照してください。 str()も参照してください。

バージョン2.0の新機能。

バージョン2.2で変更: __unicode__()のサポートが追加されました。

vars([object])

モジュール、クラス、インスタンス、または __ dict __ 属性を持つその他のオブジェクトの __ dict __ 属性を返します。

モジュールやインスタンスなどのオブジェクトには、更新可能な __ dict __ 属性があります。 ただし、他のオブジェクトでは、 __ dict __ 属性に書き込み制限がある場合があります(たとえば、新しいスタイルのクラスはdictproxyを使用して、辞書が直接更新されないようにします)。

引数がない場合、 vars()locals()のように機能します。 ローカルディクショナリの更新は無視されるため、ローカルディクショナリは読み取りにのみ役立ちます。

xrange(stop)

xrange(start, stop[, step])

この関数は range()と非常に似ていますが、リストの代わりに xrangeオブジェクトを返します。 これは不透明なシーケンスタイプであり、実際にすべてを同時に保存することなく、対応するリストと同じ値を生成します。 range()に対する xrange()の利点は最小限です( xrange()は、要求されたときに値を作成する必要があるため)。広い範囲は、メモリが不足しているマシンで使用される場合、または範囲のすべての要素が使用されない場合(通常、ループが break で終了する場合など)に使用されます。 xrangeオブジェクトの詳細については、 XRange Type および Sequence Types — str、unicode、list、tuple、bytearray、buffer、xrange を参照してください。
zip([iterable, ...])

この関数は、タプルのリストを返します。ここで、 i 番目のタプルには、各引数シーケンスまたは反復可能オブジェクトからの i 番目の要素が含まれます。 返されるリストの長さは、最短の引数シーケンスの長さに切り捨てられます。 すべて同じ長さの引数が複数ある場合、 zip()map()に似ており、最初の引数はNoneです。 単一のシーケンス引数を使用して、1タプルのリストを返します。 引数がない場合は、空のリストを返します。

反復可能オブジェクトの左から右への評価順序が保証されます。 これにより、zip(*[iter(s)]*n)を使用してデータ系列をn長のグループにクラスタリングするためのイディオムが可能になります。

zip()*演算子と組み合わせて使用すると、リストを解凍できます。

>>> x = [1, 2, 3]
>>> y = [4, 5, 6]
>>> zipped = zip(x, y)
>>> zipped
[(1, 4), (2, 5), (3, 6)]
>>> x2, y2 = zip(*zipped)
>>> x == list(x2) and y == list(y2)
True

バージョン2.0の新機能。

バージョン2.4での変更:以前は、 zip()には少なくとも1つの引数が必要であり、zip()は空のリストを返す代わりにTypeErrorを発生させました。

__import__(name[, globals[, locals[, fromlist[, level]]]])

ノート

これは、 importlib.import_module()とは異なり、日常のPythonプログラミングでは必要のない高度な関数です。

この関数は、 import ステートメントによって呼び出されます。 import ステートメントのセマンティクスを変更するために( __ builtin __ モジュールをインポートして__builtin__.__import__に割り当てることで)置き換えることができますが、最近では通常、より簡単に使用できます。フックをインポートします( PEP 302 を参照)。 __ import __()を直接使用することはまれですが、実行時に名前がわかるだけのモジュールをインポートする場合を除きます。

この関数は、モジュール name をインポートし、指定された globals および locals を使用して、パッケージコンテキストで名前を解釈する方法を決定する可能性があります。 fromlist は、 name で指定されたモジュールからインポートする必要があるオブジェクトまたはサブモジュールの名前を示します。 標準実装では、 locals 引数をまったく使用せず、 globals を使用して、 import ステートメントのパッケージコンテキストを決定します。

level は、絶対インポートと相対インポートのどちらを使用するかを指定します。 デフォルトは-1で、絶対インポートと相対インポートの両方が試行されることを示します。 0は、絶対インポートのみを実行することを意味します。 level の正の値は、 __ import __()を呼び出すモジュールのディレクトリを基準にして検索する親ディレクトリの数を示します。

name 変数がpackage.moduleの形式の場合、通常、最上位パッケージ(最初のドットまでの名前)が返されますが、ではなくという名前のモジュールが返されます。 名前による。 ただし、空でない fromlist 引数を指定すると、 name という名前のモジュールが返されます。

たとえば、ステートメントimport spamは、次のコードのようなバイトコードになります。

spam = __import__('spam', globals(), locals(), [], -1)

ステートメントimport spam.hamは、次の呼び出しになります。

spam = __import__('spam.ham', globals(), locals(), [], -1)

__ import __()がトップレベルモジュールを返す方法に注意してください。これは、 import ステートメントによって名前にバインドされているオブジェクトだからです。

一方、ステートメントfrom spam.ham import eggs, sausage as sausは、次のようになります。

_temp = __import__('spam.ham', globals(), locals(), ['eggs', 'sausage'], -1)
eggs = _temp.eggs
saus = _temp.sausage

ここで、spam.hamモジュールは __ import __()から返されます。 このオブジェクトから、インポートする名前が取得され、それぞれの名前に割り当てられます。

モジュール(パッケージ内の可能性がある)を名前でインポートするだけの場合は、 importlib.import_module()を使用します。

バージョン2.5で変更:レベルパラメータが追加されました。

バージョン2.5で変更:パラメーターのキーワードサポートが追加されました。


3.3。 必須ではない組み込み関数

現代のPythonプログラミングで学習、知識、または使用するためにもはや不可欠ではないいくつかの組み込み関数があります。 これらは、古いバージョンのPython用に作成されたプログラムとの下位互換性を維持するためにここに保持されています。

Pythonプログラマー、トレーナー、学生、本の執筆者は、重要なものを見逃すことを心配せずに、これらの関数を自由にバイパスする必要があります。

apply(function, args[, keywords])

function 引数は呼び出し可能なオブジェクト(ユーザー定義または組み込みの関数またはメソッド、あるいはクラスオブジェクト)である必要があり、 args 引数はシーケンスである必要があります。 関数は、 args を引数リストとして呼び出されます。 引数の数はタプルの長さです。 オプションの keywords 引数が存在する場合、それはキーが文字列である辞書である必要があります。 引数リストの最後に追加するキーワード引数を指定します。 apply()を呼び出すことは、function(args)を呼び出すこととは異なります。その場合、引数は常に1つだけであるためです。 apply()の使用は、function(*args, **keywords)と同等です。

バージョン2.3以降非推奨: apply(function, args, keywords)の代わりにfunction(*args, **keywords)を使用してください(引数リストの解凍を参照)。

buffer(object[, offset[, size]])
object 引数は、バッファ呼び出しインターフェイス(文字列、配列、バッファなど)をサポートするオブジェクトである必要があります。 object 引数を参照する新しいバッファオブジェクトが作成されます。 バッファオブジェクトは、オブジェクトの先頭から(または指定されたオフセットから)スライスになります。 スライスはオブジェクトの終わりまで拡張されます(または size 引数で指定された長さになります)。
coerce(x, y)
算術演算で使用されるのと同じルールを使用して、共通の型に変換された2つの数値引数で構成されるタプルを返します。 強制できない場合は、TypeErrorを上げてください。
intern(string)

「インターン」文字列のテーブルに string と入力し、インターン文字列( string 自体またはコピー)を返します。 文字列のインターンは、ディクショナリルックアップのパフォーマンスを少し向上させるのに役立ちます。ディクショナリ内のキーがインターンされ、ルックアップキーがインターンされている場合、キー比較(ハッシュ後)は、文字列比較の代わりにポインタ比較によって実行できます。 通常、Pythonプログラムで使用される名前は自動的にインターンされ、モジュール、クラス、またはインスタンスの属性を保持するために使用されるディクショナリにはインターンされたキーがあります。

バージョン2.3で変更:インターンされた文字列は不滅ではありません(Python 2.2以前のように)。 intern()の戻り値への参照を保持して、その恩恵を受ける必要があります。

脚注

1
比較的まれにしか使用されないため、ステートメントにする必要はありません。
2
現在、バッファサイズを指定しても、setvbuf()がないシステムには影響しません。 バッファサイズを指定するインターフェイスは、setvbuf()を呼び出すメソッドを使用して実行されません。これは、I / Oが実行された後に呼び出されるとコアがダンプされる可能性があり、これが当てはまるかどうかを判断する信頼できる方法がないためです。 。
3
現在の実装では、ローカル変数のバインディングは通常この方法で影響を受けることはありませんが、他のスコープ(モジュールなど)から取得された変数は影響を受ける可能性があります。 これは変更される可能性があります。