Python 当函数作为参数传递时,如何知道将参数放在何处?

Python 当函数作为参数传递时,如何知道将参数放在何处?,python,function,probability,Python,Function,Probability,为什么当我将函数rollDie()传递给checkPascal(numTrials,roll)时会出现语义错误,但当我传递它的名称,然后将参数放在变量后面时,它会按预期工作?(请看一下代码)。我试着玩弄它,也在寻找,但我似乎无法正确地用词来找到答案 这将是非常感谢,因为我似乎无法理解它。这不是什么大问题,这个问题甚至不是课堂作业的一部分。在我的开放式MITx课程中,我们正在学习蒙特卡罗方法,我随机发现了这一点。我不知道帕伦夫妇为什么会在那里。我想他们应该在def管路中。我正在参加一个以前录制的免

为什么当我将函数
rollDie()
传递给
checkPascal(numTrials,roll)
时会出现语义错误,但当我传递它的名称,然后将参数放在变量后面时,它会按预期工作?(请看一下代码)。我试着玩弄它,也在寻找,但我似乎无法正确地用词来找到答案

这将是非常感谢,因为我似乎无法理解它。这不是什么大问题,这个问题甚至不是课堂作业的一部分。在我的开放式MITx课程中,我们正在学习蒙特卡罗方法,我随机发现了这一点。我不知道帕伦夫妇为什么会在那里。我想他们应该在def管路中。我正在参加一个以前录制的免费在线课程,所以我没有可以告诉我的讲师。谢谢

import random

def rollDie():
    """returns a random int between 1 and 6"""
    return random.choice([1,2,3,4,5,6])

def checkPascal(numTrials, roll):
    yes = 0.0
    for i in range(numTrials):
        for j in range(24):
            d1 = roll #correct line would be d1 = roll()
            d2 = roll #d2 = roll()
            if d1 == 6 and d2 == 6:
                yes += 1
                break
    print 'Probability of losing =', 1.0 - yes/numTrials

checkPascal(10000, rollDie()) #incorrect code
#correct code would be checkPascal(10000, rollDie)

据我所知,“roll”只是一个变量,变量不能有参数,至少我是这么认为的。从直觉上看,这似乎是错误的。这是因为它是一种弱类型语言吗?我很好奇。谢谢。

只传递名称
rollDie
传递函数
rollDie
。这就是为什么将paren放在
roll
后面的原因,再往下一步,您将调用
roll
变量引用的函数

传递
rollDie()
对该函数求值,并返回
random.choice([1,2,3,4,5,6])
(在这种情况下,
roll
是一个整数)

尝试:


查看差异。

仅传递名称
rollDie
即可传递函数。这就是为什么将paren放在
roll
后面的原因,再往下一步,您将调用
roll
变量引用的函数

传递
rollDie()
对该函数求值,并返回
random.choice([1,2,3,4,5,6])
(在这种情况下,
roll
是一个整数)

尝试:


查看差异。

rollDie()
是一个数字,
rollDie
是一个函数。Python是强类型的。强/弱类型与静态/动态类型无关。
rollDie()
是一个数字,
rollDie
是一个函数。Python是强类型的。强/弱类型与静态/动态类型无关。
print rollDie
print rollDie()