Python 3.x 如何检测一个不可iterable参数并将其转换为iterable参数

Python 3.x 如何检测一个不可iterable参数并将其转换为iterable参数,python-3.x,iterable,Python 3.x,Iterable,我有一个Python函数,它接受类似向量的参数,但我希望如果有人使用no-iterable参数调用该函数,该函数会接受并将其视为一个元素向量 例如,返回向量大小的函数: def longitud(v): return len(v) y = [1,2] print(longitud(y)) # it will return 2, OK x = 1 print(longitud(x)) # ERROR 它将产生错误,因为x不可编辑。我希望longitud函数可以毫无问题地接受这两个

我有一个Python函数,它接受类似向量的参数,但我希望如果有人使用no-iterable参数调用该函数,该函数会接受并将其视为一个元素向量

例如,返回向量大小的函数:

def longitud(v):
    return len(v)

y = [1,2]
print(longitud(y))  # it will return 2, OK

x = 1
print(longitud(x))  # ERROR
它将产生错误,因为
x
不可编辑。我希望
longitud
函数可以毫无问题地接受这两个参数,在第二种情况下,将
x
视为一个元素向量。有什么优雅的方法可以做到这一点吗?

你想要这个吗

def longitud(*v):
    return len(v)

y = [1,2]
print(longitud(*y))  # it will return 2, OK

x = 1
print(longitud(x))  # No ERROR
备选方案(检查参数是否可编辑,如果不可编辑,则返回1)-


第二个选项适用于我的问题,因为函数接受向量或单个元素。谢谢没问题:)@AliRojas
from collections.abc import Iterable

def longitud(v):
    if isinstance(v, Iterable):
        return len(v)
    return 1
    

y = [1,2]
print(longitud(y))  # it will return 2, OK

x = 1
print(longitud(x))  # NO ERROR