【问题标题】:function prints null value when printing a list? [duplicate]打印列表时函数打印空值? [复制]
【发布时间】:2021-07-21 08:36:42
【问题描述】:

一边玩弄书中的例子:

class Quick():
    def __str__(self):
        return "\n".join(f"{k}: {v}" for k, v in vars(self).items())



class User(Quick):

    def __init__(self, first, last, location, gender):
        super().__init__()
        self.first = first
        self.last = last
        self.location = location
        self.gender = gender
        self.loginattempt = 0

    def mmplusattempt(self):
        self.loginattempt += 1

    def mmresetattempt(self):
        self.loginattempt = 0

    def __str__(self):
        return "\n".join(f"{k}: {v}" for k, v in vars(self).items())


class Admin(User):

    def __init__(self, first, last, location, gender):
        super().__init__(first, last, location, gender)
        self.privileges = ["delete post", "ban user", "shutdown server", "restart server"]

    def show(self):
        for p in self.privileges:
            print(f"This user can: {p}. \n")
        



admin = Admin("ADMIN", "ADMIN", "SERVER ROOM", "ADMIN")
print(admin.show())

由于某种原因输出:

This user can: delete post. 

This user can: ban user. 

This user can: shutdown server. 

This user can: restart server. 

None
  

我不知道为什么会打印出None。更改 show() 以检查空值:

def show(self):
        for p in self.privileges:
            if p != None:
                print(f"This user can: {p}. \n")

仍然输出None

我认为循环可能没有像我预期的那样工作,因此在self.privileges 中添加了一个空值,以查看循环是否正确检查空值: self.privileges = ["delete post", "ban user", "shutdown server", None, "restart server"] 输出:

└─$ python3 classuser.py
This user can: delete post. 

This user can: ban user. 

This user can: shutdown server. 

This user can: restart server. 

None

显然 if 测试工作正常。这个空值是从哪里来的?

【问题讨论】:

    标签: python printing null


    【解决方案1】:

    show 函数没有返回任何值 如果你在show 中返回一些东西,None 就会消失。

        def show(self):
            for p in self.privileges:
                print(f"This user can: {p}. \n")
            return "haha"
    

    【讨论】:

    • 所以函数默认返回None
    • 是的。 Doc
    猜你喜欢
    • 2020-09-19
    • 1970-01-01
    • 2011-11-13
    • 1970-01-01
    • 2020-08-07
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多