Python函数从另一个函数调用变量。但为什么?

时间:2019-01-17 09:01:25

标签: python python-3.x attributeerror

我知道这是非常重复的内容

TestProjectApplication.java

我想使用def func1(): a = [1,2,3,4,5] return a def func2(): b = func1() print(b.a[0]) func2() AttributeError: 'list' object has no attribute 'a' 点函数(语法)来访问在其他函数中声明的变量,例如:

'.'

应打印出:

print(b.a[0])
or
print(b.a)

这会使事情变得如此简单吗?

我知道这可以通过使用1 or [1,2,3,4,5] 或其他许多方式来完成。

但是为什么它不能这样工作?这种访问方式背后是否有任何“必须”原因?它会使Python变得脆弱吗?还是会使python不稳定?

对于此访问问题,我找不到完美,简洁,清晰,准确的解释。

非常感谢。


对于@Goyo更准确

class

def func():
    a = [1,2,3,4,5]

def func2():
    b = func()
    b.a[0] = "Not Working"
    print(b)

func2()

我只是觉得这是一种更本能的代码编写方式。 也许就是我。

3 个答案:

答案 0 :(得分:1)

这是因为您没有在. \Scripts\activate函数中说return,所以您应该这样做:

func1

答案 1 :(得分:1)

一个函数(在您的情况下为过程,因为它不返回任何东西)是对数据的处理,而不是像对象或结构之类的数据保存器。当您编写b = func()时,您期望得到func()的结果。您不必知道func中会发生什么。函数中的a是一个内部变量,可能在函数末尾被垃圾回收(没有人引用它)

答案 2 :(得分:1)

您误以为class variablesfunctions variables

# This a Class
class MyFunctions():
    def __init__(self):
        pass
    # This is a function of the class
    def func1():
        a = [1, 2, 3, 4, 5]
        return a

# This is a Procedure, it is not function because it returns Nothing or None
def func2():

    b = MyFunctions.func1()
    print(b[0])

    # a variable of the class
    MyFunctions.func1.a = 3
    f = MyFunctions.func1.a
    print(f)

func2()