首页 > 试题广场 >

python是用C语言写成的,根据名字空间特性,以下代码经过

[单选题]
python是用C语言写成的,根据名字空间特性,以下代码经过python编译器编译后,一共得到()个PyCodeObject对象。
class A:
    pass
def Fun():
    pass
a = A()
Fun()
  • = A()<br>Fun()
  • 1
  • 2
  • 3
  • 4
3个PyCodeObject对象。PyCodeObject的计算方式是看当前环境有多少个名字空间(或者称为作用域),每当进入一个新的名字空间时,都会产生一个PyCodeObject.

回到这个题目,对应一个是当前py文件(或模块)的PyCodeObject,一个是对应Class A的PyCodeObject,还有一个则是def Fun对应的PyCodeObject.

如果我的解释还未让你懂的话,可以读读陈儒写的那本《Python源码剖析》,上面有更详细的解释

编辑于 2018-07-31 21:01:33 回复(0)
更多回答

class A:
pass
def Fun():
  pass
a = A()
Fun()
定义A类生成了一个类对象,定义Fun()函数生成了一个函数对象,a=A()实例化了一个A类的实例对象。
故选C
发表于 2019-06-20 02:22:34 回复(0)
d
发表于 2019-07-29 09:44:48 回复(0)
QNN头像 QNN
在Python中,类、函数和module都对应着一个独立的名字空间,因此都会对应一个PyCodeObject对象。所以一个是A 对应的  一个是Fun的  不考虑这个文件生成的?
发表于 2018-08-11 10:51:16 回复(0)
class声明的A是一个对象,a是实例化的一个对象,函数本身也是一个对象
发表于 2018-07-18 11:25:54 回复(0)
不应该是3个吗,求解答
发表于 2018-07-05 15:05:49 回复(1)
b
只得到一个a对象
发表于 2018-07-03 20:36:02 回复(1)