我的 pyhon 代码如果 [P2, P3, P4, P5] 是 [not None, None, None, None] 它应该可以工作但不是

问题描述

为什么它不起作用?它应该在这里工作

def say_hi(P1,P2 = None,P3 = None,P4 = None,P5 = None):
    if [P2,P3,P4,P5] is [not None,None,None]:
        print(f'hi {P1}')
        print(f'hi {P2}')

say_hi('Jack','Rose')

为什么我的代码不起作用? 它什么都不执行

解决方法

检查您的位置“not”。
这是答案。

def say_hi(P1,P2 = None,P3 = None,P4 = None,P5 = None):
    if [P2,P3,P4,P5] is not [None,None,None]:
        print(f'hi {P1}')
        print(f'hi {P2}')

say_hi('Jack','Rose')
,

表示这两个对象是同一个对象。不是平等的。 你需要“==”。 https://dbader.org/blog/difference-between-is-and-equals-in-python

试试这个。

def say_hi(*P):                                                             
     for p in P:
         print(f'hi {p}')

say_hi('Jack','Rose')

您可以使用您需要的参数数量调用函数。所有这些参数都将是数组“P”的元素。

您可以阅读 this 关于 python 函数和参数。