Python - 如何使用函数定义变量?

时间:2012-01-08 06:04:45

标签: python function variables

我有一个返回数字的函数。我想分配一个变量来获得这个值,但是当我说temp = foo(i, j)时,python会给出运行时错误:NameError:name' foo'没有定义。请注意,我已经改变了bar和foo的函数体,显然有一个只返回1的函数是没用的,但它并没有改变我的错误。

sum = 0
for i in range(2, 100):
    for j in range(2, i):
        temp = foo(i, j)
        if (temp > 100):
            sum = sum + 1
print sum

def bar (n, a):
    r = 1
    return r

def foo (n, a):
    s = bar(n, a)/factorial(5);
    return s

def factorial (n):
    r = 1
    for i in range (2, n + 1):
        r *= i;
    return r

3 个答案:

答案 0 :(得分:3)

foo的定义是在文件中使用它之后。将函数定义放在for循环之上。

答案 1 :(得分:3)

Python中的名称在绑定之前不存在。将def foo(...):块移到使用foo()的代码上方。

答案 2 :(得分:2)

根据其他答案,您的问题是您运行代码的顺序:首次调用时尚未定义foo。只是想在这里添加关于最佳实践的评论。

我总是尝试将所有内容放入函数中,然后调用底部的任何脚本。你以前可能遇到过这种模式,这是一个很好的习惯:

CONSTANT = 5

def run():
    for i in xrange(CONSTANT):
        print foo(i)   # whatever code you want

def foo(n):
    # some method here...
    pass

if __name__ == "__main__":
    run()

如果您使用python script.py运行此功能,或者在空闲时点击f5,则会在定义所有内容后执行run()

通过遵循此模式,您不必担心定义函数的顺序,并且您可以获得额外的好处,即能够导入foo与其他函数,而无需在导入期间执行脚本,这可能不是一种理想的行为。