文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Python常用内置函数的使用教程详解

2023-05-14 05:15

关注

导言

Python官方文档对于内置函数的介绍较为简略,但这些内置函数在日常工作中却扮演着不可或缺的角色。为了更加便捷地使用和查阅这些函数,笔者对它们的功能和特性进行了系统整理和汇总,以便于后续的使用和深入研究,进一步提升专业水平。

一、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这个结果。

二、aiter()函数

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

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

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

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

asyncio.aiter(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) 

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

三、all()函数

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

语法格式如下:

all(iterable)

其中,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

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

asyncio.run(main())

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

五、any()函数

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

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

any(iterable)

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

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

下面是一个示例,演示如何使用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()函数时,需要注意以下几点:

六、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的转义序列。

注意事项

到此这篇关于Python常用内置函数的使用教程详解的文章就介绍到这了,更多相关Python常用内置函数内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯