Python中请教一个关于random.random函数的问题
import random
def func(ok):
if ok:
a=random.random()
else:
import random
a=random.randint(1,10)
return a
func(True)
上面代码报错如下:
a=random.random()
UnboundLocalError: local variable ‘random’ referenced before assignment
请问这是为什么呢?
Python中请教一个关于random.random函数的问题
9 回复
我有一个问题,你为什么要在 else 后面又 import random 一次
我无法理解你的问题
下边那句 random 把你害了,import random 相当于在 func 里边定义了 random 这个变量,根据 bleg 的顺序,覆盖了全局的 random。但是进入第一个分支的时候 random 这个名字还没有被绑到模块上。
感谢指点,这个代码不是我自己写出来的,是某个公众号里写的,只说这是经典错误,但是没说原因是什么,所以我发出来请教大家。
legb
这个错误确实经典,def f() 后面没有加冒号,哈哈
显然冒号是漏打。变量提升导致的引用全局变量 a 失败。
呵呵,我知道是 a 的错误,开个玩笑啦


