请排查Python组合数函数中的UnboundLocalError错误
阶乘/排列/组合数代码错误排查
错误根源
在comb函数里,你写了perm = perm(n, r),这行代码犯了变量名冲突的问题:
- 你把局部变量的名字和外部定义的
perm排列函数取成了同一个 - Python会把这里的
perm优先识别成局部变量,但执行赋值时,右边的perm(n, r)会被当成还没赋值的局部变量来引用,直接触发UnboundLocalError。
修复方案
两种简单的解决办法:
- 给局部变量换个名字(推荐这种,代码更清晰):
def comb(n, r): perm_result = perm(n, r) rFactorial = factorial(r) answer = perm_result / rFactorial return answer
- 声明引用全局的
perm函数:
def comb(n, r): global perm perm = perm(n, r) rFactorial = factorial(r) answer = perm / rFactorial return answer
内容的提问来源于stack exchange,提问作者jiwoo_remyomi
相关产品推荐
相关产品推荐

