python命名空间问题

2025-03-25 13:54:28
推荐回答(5个)
回答1:

createplot.ax1
是表示:
ax1
是函数
createplot
的一个属性,这个可以在函数里面定义也可以在函数定义后加入也可以
example:
def
fun():
fun.x
=1
当你在python的命令窗口下,运行一次fun()后,x
就是
fun()的一个属性,你在命令窗口下输入
fun.x
后面会显示
1
也可以

函数定义完后加入
属性

fun.y
=
2,在使用
dir(fun),你就会发现fun有
x,y
这两个属性

回答2:

Traceback (most recent call last):
File "", line 1, in
f()
File "", line 2, in f
a = a+1
UnboundLocalError: local variable 'a' referenced before assignment
首先,在f()这个函数里,a是个局部变量。原因:没加global a这一句。
然后,函数内容一上来就调用了a本身的值。对于python来说,它这时还不知道a是什么呢。
所以,这个错误的意思是说,a作为一个局部变量,没有先声明数值就被引用了,无从查找其值。

回答3:

在函数中如果不改变a的值,直接调用,就会自动当成全局变量。
如果改变了值的话,就会自动当成局部变量,所以这时a=a+1就会出错,认为调用了一个没有定义的变量,这时如果要当全书变量用的话必须加global a
它就是这么设计的,应该是为了区分局部变量和全局变量。如果都可以直接修改的话,你就没法知道哪个才是局部变量了,这时如果局部变量和全局变量名字相同就会混乱了。

回答4:


对象:一切都是对象,类,实例,函数都是
类:系统内置类型或用class关系字定义的类,如果:int,str
特性:没有听过,是不是指property?
接口:没有这玩意,可以模似
命名空间:以文件名或包含__init__.py的文件夹
内省:是指可以动态的查询对象的类型信息
多态:动态判断和执行子类的方法
运行符载:就是以__xx__这类函数实现的,如果+运算符重载__add__就可以了

回答5:

如果你要调用全局变量a的话,需要加上global
a = 1
def f():
global a
a = a+1
f()

可以改变啊,你没运行一次f,全局变量a就会增一