from random import random
def printNumber(num=random()):
print num
for i in range(10):
printNumber()
我想看十个随机数,但是这十个随机数都是一样的!
from random import random
def printNumber(num=random()):
print num
for i in range(10):
printNumber()
我想看十个随机数,但是这十个随机数都是一样的!
因为默认参数仅在编译函数时执行一次。
从文档:
执行函数定义时评估默认参数值。这意味着表达式在定义函数时被计算一次,并且每次调用都使用相同的“预计算”值。吨
你可以尝试这样的事情:
In [10]: def printNumber(num=None):
return num if num is not None else random()
....:
In [12]: printNumber()
Out[12]: 0.9620725546432438
In [13]: printNumber()
Out[13]: 0.8188258892156928
In [15]: printNumber(10)
Out[15]: 10
因为它是在函数实例化时执行的......而不是在函数调用时
正确的(呃)方式是
def printNumber(num=None):
if num == None:
num = random()
print num