Python中方法调用之前或期间声明的变量之间的差异

Heu*_*ics 0 python variables methods numpy

此代码生成正确的结果(即只有John的):

import numpy as np
choices = ["John", "Adam", "Anna", "Joe", "Sebastian", "Julius"]
print(np.random.choice(choices,10, p = [1,0,0,0,0,0]))
Run Code Online (Sandbox Code Playgroud)

虽然这段代码没有(产生任何看似相同的概率):

import numpy as np
p = [1,0,0,0,0,0]
choices = ["John", "Adam", "Anna", "Joe", "Sebastian", "Julius"]
print(np.random.choice(choices,10, p))
Run Code Online (Sandbox Code Playgroud)

为什么第一次工作而不是第二次?为什么在方法调用之前或期间声明的变量之间存在差异?

Ned*_*der 8

numpy.random.choice的签名是:

 numpy.random.choice(a, size=None, replace=True, p=None)
Run Code Online (Sandbox Code Playgroud)

在第一次通话中,您传递的值为p.在第二次调用中,您使用p变量作为值replace.将第二个电话更改为:

 print(np.random.choice(choices, 10, p=p))
Run Code Online (Sandbox Code Playgroud)