我知道最好不要给不同的对象指定相同的名称,但为了好奇,是否可以从多个同名对象中选择一个特定的对象?
CREATE TRIGGER biblioitems_after_marcxml_update
AFTER UPDATE ON biblioitems
FOR EACH ROW BEGIN
INSERT IGNORE INTO X_BIBLIONUMBER_BIBID VALUES (NEW.biblionumber, EXTRACTVALUE(NEW.marcxml, '//controlfield[@tag="001"]' ));
END
等等。如您所见,对象的类型取决于您定义它们的顺序。是否有解释?
此外,一旦定义了一个函数来代替同名变量,该变量是否会被删除?
P.S。我知道这个问题听起来很愚蠢。
答案 0 :(得分:2)
Python是动态语言,因此您可以将不同类型的值(int,string,function)分配给同一个变量:
>>> o=1
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'o': 1, '__package__': None}
>>> type(o)
<type 'int'>
>>> def o():
... print 1
...
>>> type(o)
<type 'function'>
>>> globals()
{'__builtins__': <module '__builtin__' (built-in)>, '__name__': '__main__', '__doc__': None, 'o': <function o at 0x7fba38e21578>, '__package__': None}
答案 1 :(得分:1)
在示例中,您给定的对象不是实际对象,而只是对象的引用。在python中,一切都是对象。
为了更清楚,我将使用myObj。 所以,
myObj=2
将使myObj指向整数对象。
class myObj:
pass
将创建一个新的类型对象,并将其引用分配给引用变量myObj。因此,将不同对象的句柄重新分配给相同的引用变量,确定引用变量的类型。换句话说,type(myObj)将为您提供myObj所指向的对象类型。
了解更多信息。参考python docs。
答案 2 :(得分:1)
您可以查看输出globals()
。您在当前文件中定义的值将存储在那里。因此,如果您定义两个具有相同名称的对象,则第一个将被第二个对象覆盖。您也可以尝试globals['A']=1
,等于A=1