这是来自here的代码示例:
在函数的参数赋值中,相等意味着什么?像N=20000
这里?
这与简单N
之间有什么区别?
随机导入,数学
def gibbs(N=20000,thin=500):
x=0
y=0
samples = []
for i in range(N):
for j in range(thin):
x=random.gammavariate(3,1.0/(y*y+4))
y=random.gauss(1.0/(x+1),1.0/math.sqrt(x+1))
samples.append((x,y))
return samples
smp = gibbs()
答案 0 :(得分:3)
在函数定义中,它指定参数的默认值。例如:
>>> def func(N=20000):
... print(N)
>>> func(10)
10
>>> func(N=10)
10
>>> func()
20000
在第一次调用中,我们使用位置参数N
为10
参数指定值。在第二个调用中,我们使用关键字参数N
为N=10
参数指定值。在第三个调用中,我们根本没有指定值 - 因此它获得默认值20000
。
请注意,使用关键字参数调用函数的语法与使用默认值的参数定义函数的语法非常相似。这种并行不是偶然的,但重要的是不要被它弄糊涂。当你得到解包参数和变量参数等等时,更容易让自己感到困惑。除了最简单的情况之外,即使你得到它,这一切都是直观的,实际上仍然很难获得细节。直奔你的头脑。 This blog post试图将所有解释放在一个地方。我不认为它做得很好,但它确实至少有与文档相关的所有内容的有用链接...
答案 1 :(得分:1)
它指定默认值。如果程序在未定义的值上失败,这可能特别有用。例如,如果它只是n,并且您没有向函数提供任何变量,那么它将失败。默认情况下没有。