【问题标题】:Python - how to define a variable using a function?Python - 如何使用函数定义变量?
【发布时间】:2012-01-08 06:04:45
【问题描述】:

我有一个返回数字的函数。我想分配一个变量来获得这个值,但是当我说temp = foo(i, j) 时,python 给出了一个运行时错误:NameError: name 'foo' is not defined。请注意,我已经改变了 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

【问题讨论】:

    标签: python function variables


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        根据其他答案,您的问题是您运行代码的顺序: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 与其他函数一起导入,这可能不是理想的行为。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-03-20
          • 2022-11-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-21
          相关资源
          最近更新 更多