Python随机调用函数出错:输出全部内容且报Nonetype错误如何修复?
问题修复方案
你的代码出现问题的核心原因是:创建元组l时,你写了print1()、print2()、print3()——加括号意味着立即调用这些函数,而这三个函数没有返回值(默认返回None),所以元组里实际存储的是三个None。
这就导致两个问题:
- 程序运行时会先执行所有函数,直接输出1、2、3
- 用
random.choice选中的是None,调用x()自然会抛出'NoneType' object is not callable的异常
修复方法
把元组里的函数调用改为函数对象本身,也就是去掉括号,让元组存储函数的引用而非执行结果:
import random def print1(): print(1) def print2(): print(2) def print3(): print(3) # 存储函数对象,不要加括号执行 l = (print1, print2, print3) x = random.choice(l) x()
修改后,程序会随机选择三个函数中的一个执行,只会输出1、2、3中的某一个,不会再触发异常。
内容的提问来源于stack exchange,提问作者Kserdas
相关产品推荐
相关产品推荐

