无法在另一个 python 脚本中使用 python 函数的属性

unable to use attribute from a python function in another python script

我想将 python 脚本 (x) 中的函数返回的属性之一用于 python 脚本 (y)

两个脚本之间的通信运行良好;我可以获取函数和属性,但不允许我获取函数返回的属性。

我是这样工作的:

x.py

def func():
    b = 10
    a = 15
    return [a,b]
c = 20

y.py

from x import func
import x
print (x.c)
print (func.b)

我得到 "c" 值和以下错误 AttributeError: 'function' object has no attribute 'b'

我也试过打印 x.b,我有 AttributeError: module 'WorkingLSTM' has no attribute 'b'

提前致谢

这是不允许的,您必须调用函数从函数返回列表中获取值。

a, b = func()
print(b)
# or just...
print(func()[1])

PS:是"not allowed",因为它没有任何意义;当没有函数调用时,根本就没有变量 b。你可以看看 类,它们可以保存静态变量。

您不能访问函数的局部变量。 这些变量仅在执行 func 期间存在,然后被销毁。

你当然可以调用该函数并查看结果,但结果只是一个包含两个值的列表

rslt = func()
print("A = ", rslt[0])
print("B = ", rslt[1])

调用 func 的方法是使用 func(),这会给你 [a,b].

示例:

funcResult = func()

a = funcResult[0]
b = funcResult[1]

funcResultsfunc() 的 return 值,即列表 [a ,b].

如果你想使用属性,你可以创建一个可调用的 class 而不是函数:

class Func:
    def __init__(self):
        self.b = 10
        self.a = 15
    def __call__():
        return [self.a, self.b]
func = Func()

Python有作用域的概念。局部变量在函数外没有作用。
如果要使用它,请使用 class 和 self 或使 getter 函数(但它不是 Pythonic)。

x.py

class X:
    def __init__(self):
        self.b = 10
        self.a = 15
        self.c = 20

    def func(self):
        return [self.a, self.b]

y.py

from x import X

x = X()
print(x.c)
print(x.func()[1])

变量在函数内部声明,使其成为局部变量,因此无法在函数外部访问。

该变量在函数外部声明,使其成为全局变量,并且无论如何都与您的函数无关。

属性的概念与 类 相关,您正在处理函数,因此您可能必须将其视为 class 对象。

如果您担心访问局部变量,您不妨这样做:

y.py

from x import *

d = func()       # func returns a list which is now 
                         # identified/referenced by variable d

# displays the elements in the list using index position
print(d[0])
print(d[1])