接受整数的int或元组作为python函数参数

Fra*_*ois 1 python python-3.x

我有以下功能:

def port_status(self, port=(1, 2)):
    for i in port:
        print_status(i)
Run Code Online (Sandbox Code Playgroud)

但我希望用户能够使用单个端口号调用该函数,如下所示:

port_status(port=2)
Run Code Online (Sandbox Code Playgroud)

在这种特定情况下,它最终会如下所示:

TypeError: 'int' object is not iterable
Run Code Online (Sandbox Code Playgroud)

我可以在这里使用一些蟒蛇魔法吗?

khe*_*ood 6

你可以查看类型port.

def port_status(self, port=(1, 2)):
    if isinstance(port, int):
        port = (port,)
    for i in port:
        print_status(i)
Run Code Online (Sandbox Code Playgroud)