在Python中,有没有办法区分字符串和其他字符串的可迭代对象?
Astr作为Iterable[str]类型是有效的,但这可能不是函数的正确输入。例如,在这个简单的示例中,旨在对文件名序列进行操作:
from typing import Iterable
def operate_on_files(file_paths: Iterable[str]) -> None:
for path in file_paths:
...
Run Code Online (Sandbox Code Playgroud)
传入单个文件名会产生错误的结果,但不会被类型检查捕获。我知道我可以在运行时检查字符串或字节类型,但我想知道是否可以使用类型检查工具捕获类似的愚蠢错误。
我查看了该collections.abc模块,似乎没有任何 abc 包含典型的可迭代对象(例如列表、元组)但排除字符串。同样,对于typing模块来说,似乎没有不包含字符串的迭代类型。