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

my pyhon code if [P2, P3, P4, P5] is [not None, None, None, None] it should work but isnt

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

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

say_hi('Jack', 'Rose')

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

检查你“不”的位置。
答案在这里。

def say_hi(P1, P2 = None, P3 = None, P4 = None, P5 = None):
    if [P2, P3, P4, P5] is not [None, 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 函数和参数的内容。