Pythonでよく使われる組み込み関数とその使い方

PHPz
リリース: 2023-04-24 08:13:06
転載
1934 人が閲覧しました

1. abs()

abs() は数値の絶対値を返すために使用されます。

Python では、組み込みの数値型 (int、float、または complex) の場合、abs() 関数を直接使用してその絶対値を見つけることができます。ただし、数値型のカスタム型の場合、abs() 関数を使用してその絶対値を求める場合は、__abs__() メソッドを実装する必要があります。

abs() メソッドの実装も非常に簡単で、クラス内に __abs__() という名前のメソッドを定義し、数値の絶対値を返すだけです。例:

class MyNumber:
    def __init__(self, num):
        self.num = num
    
    def __abs__(self):
        return abs(self.num)

n = MyNumber(-3)
print(abs(n))    # 输出结果为:3
ログイン後にコピー

上記のコードでは、MyNumber という名前のクラスを定義します。このクラスには、num 属性が含まれ、__abs__( ) が実装されています。方法。 __abs__() メソッドでは、abs() 関数を呼び出して数値の絶対値を見つけます。

最後に、MyNumber オブジェクトをインスタンス化し、負の数値をパラメーターとして渡しました。次に、abs() 関数を呼び出して MyNumber オブジェクトの絶対値を計算し、結果 3 を取得しました。

2. aiter() 関数

aiter() は、asyncio ライブラリ内の関数で、非同期反復子オブジェクトの生成に使用されます。 Python3.10の新バージョンの機能。

非同期反復子オブジェクトは、非同期に走査できる反復子オブジェクトです。非同期反復子を使用すると、反復子の要素を 1 つずつ非同期で取得できます。

aiter() 反復可能オブジェクトをパラメーターとして受け入れ、非同期反復子オブジェクトを返します。非同期イテレータ オブジェクトは、AsyncIterator クラスのインスタンスです。

次は、aiter() 関数の基本的な構文です。

asyncio.aiter(iterable, /)
ログイン後にコピー

その中で、iterable は反復可能なオブジェクトであり、次のことが可能です。非同期ジェネレーター、非同期リストなど、非同期 Iterable オブジェクトをサポートする任意のオブジェクト。

非同期反復子を使用する場合、以下に示すように、非同期反復に async for ステートメントを使用する必要があります。

async def my_func():
    async for i in my_async_iterable:
        print(i)
ログイン後にコピー

上の例では、my_async_iterable aiter() 関数によって生成された非同期反復子オブジェクトであることも、非同期反復をサポートする他のオブジェクトであることもできます。

非同期イテレータを通過した後は、以下に示すように、非同期イテレータ オブジェクトを明示的に閉じて、対応するリソースを解放する必要があることに注意してください:

async def my_func():
    async with aiter(my_async_iterable) as iter_obj:
        async for i in iter_obj:
            print(i)
ログイン後にコピー

Passasync with ステートメントは、非同期イテレータを自動的に閉じることができる非同期コンテキスト マネージャーを作成します。この方法は比較的簡単なのでお勧めします。

3. all() 関数

は、反復可能なオブジェクト内のすべての要素が True であるかどうかを判断するために使用されます。

構文形式は次のとおりです。

all(iterable)
ログイン後にコピー

このうち、 iterable はリスト、タプル、セット、文字列などの反復可能なオブジェクトです。

戻り結果はブール値です。反復可能要素内のすべての要素が True の場合は True を返し、それ以外の場合は False を返します。 iterable が空の場合は True を返します。

例:

>>> all([True, True, False, True])
False

>>> all([1, 2, 3, 4])
True

>>> all(('a', 'b', 'c'))
True

>>> all(['', [], {}])
False
ログイン後にコピー

上の例では、最初のリストの 1 つの要素が False であるため、False が返されます。 2 番目のリストのすべての要素はゼロ以外の値であるため、True が返されます。タプルとリストはどちらも反復可能なオブジェクトとして all() 関数に渡すことができます。最後のリストには空のシーケンスまたは辞書が含まれているため、False が返されます。空のリスト、タプル、セット、文字列などはすべて True を返すことに注意してください。

注:

  • 指定された反復可能オブジェクトに False、0、''、None などの false 値である要素がある場合、 all() 関数も False を返します。

  • any() 関数を使用すると、反復可能なオブジェクト内に True の要素が少なくとも 1 つあるかどうかを判断できます。

4. anext()

anext() は asyncio モジュールの関数で、非同期反復子から次の値を取得するために使用されます。非同期反復子が終了した場合、anext() は StopAsyncIteration 例外を発生させます。 Python3.10の新バージョンの機能。

asyncio では、非同期反復子 (async iterator) は、__aiter__() メソッドと __anext__() メソッドを実装するオブジェクトとして定義されます。 aiter() メソッドはイテレータ オブジェクト自体を返し、anext() メソッドは次の値を返します。使用可能な値がそれ以上ない場合は、StopAsyncIteration 例外が発生します。

次は、anext() 関数の使用例です。

import asyncio
async def async_generator(): yield 1 yield 2 yield 3
async def main( ): ag = async_generator() try: while True:

        value = await asyncio.anext(ag)
        print(value)
except StopAsyncIteration:
    pass
ログイン後にコピー

asyncio.run(main())

上記のコードは、非同期ジェネレーター async_generator() を作成します。デバイスは 1、2、3 を 1 つずつ返します。 main() 関数では、anext() 関数を使用して、StopAsyncIteration 例外が発生するまで非同期ジェネレーターから次の値を取得します。この例では、asyncio.run() 関数を使用して、Python 3.7 以降を使用する main() コルーチンを実行します。

5. any() 関数

は、条件を満たす反復可能なオブジェクト内に少なくとも 1 つの要素があるかどうかを判断するために使用されます。この関数はブール値を返します。条件を満たす要素がある場合は True、それ以外の場合は False を返します。

any() 関数の構文形式は次のとおりです:

any(iterable)
ログイン後にコピー

其中iterable是一个可迭代对象,例如列表、元组、集合或字典的键等等。

any()函数的工作原理如下:

  • 遍历可迭代对象中的所有元素。

  • 对于每个元素,将其作为参数传递给判断函数,判断函数返回True或False。

  • 如果存在任意一个元素使得判断函数返回True,则返回True,并停止遍历,否则返回False。

下面是一个示例,演示如何使用any()函数来判断一个列表中是否存在奇数:

lst = [2, 4, 6, 8, 9, 10]
result = any(x % 2 == 1 for x in lst)
print(result)
ログイン後にコピー

输出:

True

在上面的示例中,我们使用生成器表达式来表达“是否存在奇数”这个条件。这个表达式对于lst中的每个元素x都执行一次,如果x % 2 == 1返回True,则any()函数会立即返回True。因为9是lst中的一个奇数,所以any()函数返回True。

除了列表,any()函数也适用于其他可迭代对象。例如,我们可以使用any()函数来检查一个字符串中是否存在大写字母:

s = "Hello, World!"
result = any(c.isupper() for c in s)
print(result)
ログイン後にコピー

输出:

True

在上面的示例中,我们使用字符串的isupper()方法来判断每个字符是否为大写字母,如果存在任意一个字符是大写字母,则any()函数返回True。因为"H"是一个大写字母,所以any()函数返回True。

在使用any()函数时,需要注意以下几点:

  • 如果iterable为空,any()函数将返回False。

  • 如果iterable中的所有元素都为假值(例如0、空字符串或空列表),则any()函数将返回False。

六、ascii()函数

用于将给定字符串或对象的表示转换为ASCII码。如果给定对象不是字符串,则会先将其转换为ASCII码表示。如果给定字符串中包含了非ASCII字符,则会使用Python的转义序列来表示这些字符。

以下是ascii()函数的语法:

ascii(object)
ログイン後にコピー

其中,object是要转换为ASCII码表示的字符串或对象。

以下是ascii()函数的示例:

s = 'hello, 你好!'
print(ascii(s)) 
# 输出: 'hello, \u4f60\u597d\uff01'

n = 1234
print(ascii(n)) 
# 输出: '1234'

lst = [1, 2, 'hello', '你好']
print(ascii(lst)) 
# 输出: '[1, 2, \'hello\', \'\\u4f60\\u597d\']'
ログイン後にコピー

在以上示例中,第一个示例中的字符串包含了一个非ASCII字符,因此在转换为ASCII码表示时使用了Python的转义序列;第二个示例中的对象是一个整数,因此可以直接转换为ASCII码表示;第三个示例中的对象是一个列表,其中包含了一个非ASCII字符串,因此在转换为ASCII码表示时使用了Python的转义序列。

注意事项

  • ascii()函数只能处理字符串类型的输入,对其他类型的对象(如数字、列表、元组、字典等)会引发TypeError异常。

  • ascii()函数只能处理ASCII字符以外的非ASCII字符,对于ASCII字符,它不做任何处理。(ASCII字符是指Unicode编码为0~127的字符,包括所有的英文字母、数字、标点符号和控制字符。)

  • ascii()函数返回的ASCII码表示是一个字符串,如果需要使用对应的Unicode码,可以使用Python内置的ord()函数。

以上がPythonでよく使われる組み込み関数とその使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:yisu.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート