说"if n"是什么意思?

Ame*_*Ame 2 python if-statement

if n什么意思?我不明白为什么if n在if语句中工作.不应该有一个参数,如if n == 0什么,而不仅仅是if n

def AddMusicAtPosition(self, newMusic, n):
    if n:
        self.nextMusic.AddMusicAtPosition(newMusic, n - 1)
    else:
        newMusic.nextMusic = self.nextMusic
        self.nextMusic = newMusic
Run Code Online (Sandbox Code Playgroud)

iBu*_*Bug 10

在Python中,if n相当于if bool(n).

对于整数,bool(i)等于i != 0.


如果n是类的实例,那么

  • 如果类定义__bool__,则n.__bool__()调用
  • 如果类没有定义__bool__但是__len__,则n.__len__() != 0进行评估
  • 如果类既不定义__bool__也不定义__len__,则它总是计算为True(想想n is not None).