python 命名空间 作用域,python 变量空间_1

  python 命名空间 作用域,python 变量空间

  Python的类就像名称空间。Python程序默认在全局命名空间中,类主体在类命名空间中。Python允许将可执行代码放在全局范围内,当Python执行程序时,这些代码将获得执行的机会。类似地,Python也允许将可执行代码放在类的范围内。当Python执行类的定义时,代码也会得到执行的机会。

  例如,下面的程序测试类命名空间:

  类别项目:

  #将执行属性代码直接放在类空间中

  打印(“定义项目分类”)

  (10):

  ifi%2==0:

  打印(偶数: ,I)

  else:

  Print(奇数: ,I)从上面的代码可以看出,程序直接把普通的output语句、loop语句、branch语句放在Item类体中,都是合法的。当程序执行Item类时,将执行Item类的命名空间中的所有代码。

  从执行效果来看,Python类命名空间和全局空间的这些可执行代码没有太大区别。的确,这是因为程序没有定义“成员”(变量或函数),这些代码执行完了就完事了,什么都没留下。

  但是下面的代码是不同的。以下代码分别演示了全局空间和类命名空间中lambda表达式的定义:

  Global _ fn=lambdap3360print(执行lambda表达式,p参数: ,p)

  类别:

  Cate _ fn=lambdap3360print(执行lambda表达式,p参数: ,p)

  #在全局范围内调用global_fn,并为参数p传入参数值。

  global_fn(fkit)#

  c=类别()

  #调用类命名空间中的cate_fn,Python自动绑定第一个参数。

  C.cate_fn()#上面的程序分别在全局空间和类命名空间定义了两个lambda表达式,全局空间定义的lambda表达式相当于一个普通函数。因此,程序通过调用函数来调用lambda表达式,并为第一个参数显式绑定参数值,如上面程序中的代码所示。

  对于在类命名空间中定义的lambda表达式,相当于在类命名空间中定义了一个函数,函数变成了实例方法。所以程序必须通过调用方法来调用lambda表达式,Python也会为方法的第二个参数(相当于self参数)绑定参数值,如上面程序中的代码所示。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: