Maison > développement back-end > Tutoriel Python > Fonctions intégrées couramment utilisées par Python et leur utilisation

Fonctions intégrées couramment utilisées par Python et leur utilisation

PHPz
Libérer: 2023-04-24 08:13:06
avant
1939 Les gens l'ont consulté

一、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
Copier après la connexion

在上述代码中,我们定义了一个名为MyNumber的类,其中包含一个num属性,并实现了__abs__()方法。在__abs__()方法中,我们调用了abs()函数来求该数的绝对值。

最后,我们实例化了一个MyNumber对象,传入了一个负数作为参数。然后,我们调用了abs()函数来计算MyNumber对象的绝对值,得到了3这个结果。

二、aiter()函数

aiter()asyncio 库中的一个函数,用于生成异步迭代器对象。Python3.10 新版本功能。

异步迭代器对象是一种可以异步遍历的迭代器对象。通过异步迭代器,我们可以逐个异步获取迭代器中的元素。

aiter() 接受一个可迭代对象作为参数,并返回一个异步迭代器对象。异步迭代器对象是 AsyncIterator 类的实例。

以下是 aiter() 函数的基本语法:

asyncio.aiter(iterable, /)
Copier après la connexion

其中,iterable 是一个可迭代对象,它可以是任何支持异步迭代的对象,如异步生成器、异步列表等。

使用异步迭代器时,我们需要使用 async for 语句进行异步迭代,如下所示:

async def my_func():
    async for i in my_async_iterable:
        print(i)
Copier après la connexion

在上面的示例中,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)
Copier après la connexion

通过 async with 语句建立一个异步上下文管理器,可以自动关闭该异步迭代器。这种方式比较简洁,建议使用。

三、all()函数

用于判断一个可迭代对象中的所有元素是否都为True。

语法格式如下:

all(iterable)
Copier après la connexion

其中,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
Copier après la connexion

以上示例中,第一个列表中有一个元素为False,因此返回False。第二个列表中所有元素都为非零数值,因此返回True。元组、列表都可以作为可迭代对象传递给all()函数。最后一个列表中都是空序列或字典,因此返回False。注意,空列表、元组、集合、字符串等都会返回True。

注意事项:

  • 如果给定的可迭代对象中存在元素为False、0、''、None等等假值,all()函数也会返回False。

  • 可以使用any()函数判断可迭代对象中是否存在至少一个为True的元素。

四、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
Copier après la connexion

asyncio.run(main())

上述代码创建了一个异步生成器async_generator(),该生成器逐个返回1、2、3。在main()函数中,我们使用anext()函数从异步生成器中获取下一个值,直到StopAsyncIteration异常被引发。在这个示例中,我们使用asyncio.run()函数运行main()协程,该函数使用了Python3.7及以上版本的Python。

五、any()函数

用于判断一个可迭代对象中是否存在至少一个元素满足条件。该函数返回一个布尔值,如果存在一个元素满足条件,则返回True,否则返回False。

下面是any()函数的语法格式:

any(iterable)
Copier après la connexion

其中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)
Copier après la connexion

输出:

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)
Copier après la connexion

输出:

True

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

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

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

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

六、ascii()函数

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

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

ascii(object)
Copier après la connexion

其中,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\']'
Copier après la connexion

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

注意事项

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

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

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

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal