python内置函数 A
Python 解释器内置了很多函数和类型,任何时候都能使用。
A
名称 | 描述 |
---|---|
abs | 返回一个数的绝对值。 |
aiter | 返回对象的异步迭代器。 |
all | 所有元素均为真值(或可迭代对象为空)则返回 True 。 |
anext | 获取异步迭代器中的下一个异步项。 |
any | 任一元素为真值则返回 True 。 |
ascii | 返回一个表示单个字符或可转换为 ASCII 的对象的字符串。 |
abs(x)
返回一个数的绝对值。 参数可以是整数、浮点数或任何实现了_abs_() 的对象。 如果参数是一个复数,则返回它的模。
print(abs(-10)) # 10
print(abs(10)) # 10
print(abs(-10+2j)) # 10.198039027185569
print(abs(-10.2)) # 10.2
aiter(async_iterable)
接受一个异步可迭代对象作为参数,并返回该对象的异步迭代器。返回 asynchronous iterable的 asynchronous iterator。相当于调用 x.__aiter__()
。
注意:与 iter()不同,aiter()没有两个参数的版本。
在 3.10 版本加入。
import asyncio
class AsyncIterable:
async def __aiter__(self):
for i in range(5):
await asyncio.sleep(1) # 模拟异步操作
yield i
async def main():
async_iterable = AsyncIterable()
async_iter = aiter(async_iterable) # 使用 aiter() 获取异步迭代器
async for value in async_iter:
print(value)
asyncio.run(main())
在上面的示例中,我们定义了一个 AsyncIterable
类,它实现了 __aiter__
方法,使其成为一个异步可迭代对象。在 main()
函数中,我们创建了 AsyncIterable
的一个实例,并使用 aiter()
函数获取其异步迭代器。然后,我们使用 async for
循环遍历异步迭代器,并打印每个值。
all(iterable)
如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True
。
s = []
all(s) # True
s = ''
all(s) # True
# set()、dict()也都为True
s = [1, 2, 0]
all(s) # False
# all等价于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
anext(async_iterator)
awaitable anext(async_iterator)
awaitable anext(async_iterator, default)
anext()
是 Python 中的一个内置函数,用于获取异步迭代器中的下一个异步项。
当进入 await 状态时,从给定 asynchronous iterator 返回下一数据项,迭代完毕则返回 default。
这是内置函数 next()
的异步版本,类似于:
调用 async_iterator 的 __anext__()
方法,返回一个 awaitable。等待返回迭代器的下一个值。若有给出 default,则在迭代完毕后会返回给出的值,否则会触发 StopAsyncIteration
。
在 3.10 版本加入.
import asyncio
class AsyncIterable:
async def __aiter__(self):
for i in range(5):
await asyncio.sleep(1) # 模拟异步操作
yield i
async def main():
async_iterable = AsyncIterable()
# async_iter = aiter(async_iterable) # 使用 aiter() 获取异步迭代器
async_iter = async_iterable.__aiter__() # 使用 aiter() 可以使代码更加清晰和一致
try:
while True:
value = await anext(async_iter) # 使用 anext() 获取下一个异步项
print(value)
except StopAsyncIteration:
print('迭代结束')
asyncio.run(main())
在这个例子中,我们定义了一个 AsyncIterable
类,它实现了 __aiter__
方法,使其成为一个异步可迭代对象。在 main()
函数中,我们创建了 AsyncIterable
的一个实例,并直接调用其 __aiter__
方法来获取异步迭代器。然后,我们使用一个无限循环和 anext()
来异步地遍历迭代器中的每个项,直到迭代器耗尽并引发 StopAsyncIteration
异常为止。
any(iterable)
如果 iterable 的任一元素为真值则返回 True
。 如果可迭代对象为空,返回 False
。
s = []
any(s) # False
s = ''
any(s) # False
# set()、dict()也都为False
s = [1, 2, 0]
any(s) # True
s = [0]
any(s) # False
# all等价于:
def any(iterable):
for element in iterable:
if not element:
return True
return False
ascii(object)
与 repr()
类似,返回一个包含对象的可打印表示形式的字符串,但是使用 \x
、\u
和 \U
对 repr()
返回的字符串中非 ASCII 编码的字符进行转义。生成的字符串和 Python 2 的 repr()
返回的结果相似。
# 转换单个字符为ASCII
print(ascii('A')) # 输出: 'A'
# 转换字符串为ASCII
print(ascii('Hello, World!')) # 输出: 'Hello, World!'
# 转换特殊字符为ASCII
print(ascii('\t')) # 输出: '\t'
print(ascii('\n')) # 输出: '\n'
# 转换数字为ASCII(数字直接转换为字符串形式)
print(ascii(1)) # 输出: '1'
print(ascii(123)) # 输出: '123'
# 转换包含非ASCII字符的字符串
print(ascii('你好')) # 输出: "'\u4f60\u597d'"
# 转换列表(注意:列表本身不会被转换为ASCII,而是其内容的可打印表示)
print(ascii([1, 'a', '\n'])) # 输出: "[1, 'a', '\n']"
ascii()
函数不会改变原始对象,它只是返回一个表示该对象的字符串。