我知道这是非常重复的内容
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()
我只是觉得这是一种更本能的代码编写方式。 也许就是我。
答案 0 :(得分:1)
这是因为您没有在. \Scripts\activate
函数中说return
,所以您应该这样做:
func1
答案 1 :(得分:1)
一个函数(在您的情况下为过程,因为它不返回任何东西)是对数据的处理,而不是像对象或结构之类的数据保存器。当您编写b = func()时,您期望得到func()的结果。您不必知道func中会发生什么。函数中的a是一个内部变量,可能在函数末尾被垃圾回收(没有人引用它)
答案 2 :(得分:1)
您误以为class variables
与functions 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()