Python常用内置函数的使用教程详解
作者:Bytepearl 发布时间:2021-11-11 21:23:50
导言
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。
注意事项:
如果给定的可迭代对象中存在元素为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
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()函数的工作原理如下:
遍历可迭代对象中的所有元素。
对于每个元素,将其作为参数传递给判断函数,判断函数返回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()
函数。
来源:https://juejin.cn/post/7217644586868015164
猜你喜欢
- 文章主要描述的是SQL Server到DB2连接服务器的正确实现过程,以及对其在实际操作中所要用到的实际操作环境的描述,以下就是对SQL S
- 从最基础的说起。本教程中,所有IE 均指 WindowXP + IE 6.0, 所有 FF 均指 FF 1.5。1. 不用编程的部分1.1
- import numpy as npimport matplotlib.pyplot as pltimport math# Python实现
- 什么是 AOPAOP,就是面向切面编程,简单的说,就是动态地将代码切入到类的指定方法、指定位置上的编程思想就是面向切面的编程。我们管切入到指
- 在 PHP 中表示空的map或空数组都是以空数组形式,在转化为json数据时,会将空数组统一 json 序列化成 [],这样就存在
- 本文实例为大家分享了Python实现k-means算法的具体代码,供大家参考,具体内容如下这也是周志华《机器学习》的习题9.4。 数据集是西
- 代码如下:<form action="insert.asp" method="pos
- 今天呱呱发了一个网址给我看,大概效果就是类似幻灯片的效果。当时我的第一反映这个是不是用锚点做的啊呢,以前在网上看过用锚点做的这类的效果。脑袋
- 如何用METADATA替换ADOVBS.INC? 在ASP中,使用组件时,如ADO,得先包含
- session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的sessio
- 外键在 MySQL 中,表有两种引擎,一种是 InnoDB ,另外一种是 myisam 。如果使用的是 InnoDB 引擎,是支持外键约束的
- 今天我们整理了ip地址和身份证的javascript验证方法。虽然ip地址和身份证的验证不是很经常会遇到,但是大家也可以研究一下js代码,里
- 前言最近工作中需要开发前端操作远程虚拟机的功能,简称WebShell. 基于当前的技术栈为react+django,调研了一会发现大部分的后
- 通常程序会被编写为一个顺序执行并完成一个独立任务的代码。如果没有特别的需求,最好总是这样写代码,因为这种类型的程序通常很容易写,也很容易维护
- PHP 跳转,即重定向浏览器到指定的 URL,是一个很常见的功能。这种功能也有一些细节性的要求,比如等待多少秒以后跳转,用不用JavaScr
- Microsoft建立了一种既灵活又强大的安全管理机制,它能够对用户访问SQL Server服务器系统和数据库的安全进行全面地管理。按照本文
- 多级联动下拉选择框,动态获取下一级,每一级数据为XML,可支持无限级(浏览器端需要Microsoft.XMLDOM支持)项目需要,一个材料类
- 这一版,对虹软的功能进行了一些封装,添加了人脸特征比对,比对结果保存到文件,和从文件提取特征进行比对,大体功能基本都已经实现,可以进行下一步
- 一.目标浏览网页的时候,看见哪个元素,就能截取哪个元素当图片,不管那个元素有多长 二.所用工具和第三方库python ,PIL,s
- 目前还没有更好的方法来追写Excel,lorinnn在网上搜索到以及之后用到的方法就是使用第三方库xlutils来实现了这个功能,主体思想就