2

我一直在寻找任何类型的小例子或可以帮助我的东西,但我找不到。我觉得我错过了一些明显的东西。我在一个 .py 文件中有一个大函数,我想在另一个 .py 文件中调用它并使用该函数中的所有变量,但我做不到。所以我试图用一个小例子来做,但仍然无法得到它。假设我有一个文件 mod1.py,其中包含:

def mod(num):
    a = 5
    b = 6
    c = num

我尝试向它添加各种回报,但仍然无法让它发挥作用。但我在一个名为 mod_read.py 的文件中调用它:

import mod1

mod1.mod(1)
d = mod1.mod.a
print(d)

当我运行 mod_read.py 时,我收到错误消息:“AttributeError:'function' 对象没有属性 'a'”。我错过了什么明显的东西?

4

3 回答 3

6
  1. 局部变量仅在函数运行时存在。
  2. 局部变量永远不是其包含函数的属性。

如果要从函数中获取值,则需要从中返回它们。否则,如果您需要更多持久性,请查看 OOP。

于 2013-07-05T17:16:03.160 回答
1

您可以从函数返回多个值作为元组:

def mod(num):
    a = 5
    b = 6
    c = num
    return (a, b, num)

然后在另一个文件中,像这样使用它:

import mod1

d, b, num = mod1.mod(1)
print(d)    
于 2013-07-05T17:19:15.357 回答
0

您不使用来自另一个函数的变量。你调用一个函数,你得到它的返回值——这就是函数的意义(或引起它引起的任何副作用)。

如果你想要一个将值存储在变量中的东西,你想使用objects。定义一个类。

在您的特定示例中,我不知道“各种返回”是什么意思,但是如果您希望函数返回a,只需执行以下操作return a

def mod(num):
    a = 5
    b = 6
    c = num
    return a
于 2013-07-05T17:16:54.523 回答