如何使用其他函数的变量?

时间:2012-11-07 00:10:57

标签: python

这是我的代码:

def Area():
    area = pi * radius * radius
    pi = 3.14
    radius = diameter * 2

def cost():
    diameter = eval(input("diamater: "))
    print ("Area is", area)
cost()

它表示区域未定义,但我有一个名为area的变量!

4 个答案:

答案 0 :(得分:6)

area是函数中的局部变量,这意味着在该函数之外,您无法访问它。您应该阅读范围和功能。这里最好的解决方案是从函数中返回值,并将参数传递给其他函数。

您似乎对如何评估代码缺乏了解。代码按顺序依次执行,一个接一个。变量只能在定义后才能使用。在Area()中,您在尝试使用变量后定义变量。这没有意义。

另请注意,eval()是从字符串中获取数字的一种不好的方法(它很慢,不是为此目的设计的,并且允许任意代码执行),而是使用int()

另请注意,PEP-8建议保留CapWords类,并使用lowercase_with_underscores作为函数名称,因此Area()可能应为area()。这有助于保持代码的一致性和可读性。

答案 1 :(得分:0)

你应该:

  1. make Area() return area;
  2. Area()致电cost(),正确使用其结果。
  3. 最后,Area()内的陈述顺序看起来确实很奇怪。

答案 2 :(得分:0)

变量已本地化为方法的范围。如果您想使用方法中的值return

def area(diameter=1):
    pi = 3.14
    radius = diameter * 2
    area = pi * radius * radius
    return area

# Calling the value
def cost():
    diameter = eval(input("diamater: "))
    print ("Area is", area(diameter))

在您的原始代码中也值得一提:

  • diameter未在任何地方定义。你的意图是将它传递给方法;我在这里提供了这个提示。
  • 变量的顺序不正确。必须在使用它们之前声明它们。

答案 3 :(得分:0)