很抱歉,您没有提供需要改写的句子。请提供您希望改写的句子,我将为您改写为一个长尾词的。
- 内容介绍
- 文章标签
- 相关推荐
本文共计753个文字,预计阅读时间需要4分钟。
示例展示了如何使用不同作用域和名称空间,以及global和nonlocal对变量绑定的 影响:def scope_test(): def do_local(): spam=local spam def do_nonlocal(): nonlocal spam spam=nonlocal spam scope_test()
下例演示了如何引用不同作用域和名称空间,以及global和nonlocal对变量绑定的影响:
def scope_test():def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
示例代码的输出是:
注意,局部 赋值(这是默认状态)不会改变 scope_test 对 spam 的绑定。 nonlocal 赋值会改变 scope_test 对 spam 的绑定,而 global 赋值会改变模块层级的绑定。
而且,global 赋值前没有 spam 的绑定。
Class 对象
类对象支持两种操作:属性引用和实例化。
属性引用使用 Python 中所有属性引用所使用的标准语法:obj.name。 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称。 因此,如果类定义是这样的:
class MyClass:"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
那么类的实例化使用函数表示法。 可以把类对象视为是返回该类的一个新实例的不带参数的函数。 举例来说(假设使用上述的类):
x = MyClass()创建类的新实例并将此对象分配给局部变量x。实例化操作(“调用”类对象)会创建一个空对象。 许多类喜欢创建带有特定初始状态的自定义实例。 为此类定义可能包含一个名为__init__()的特殊方法,就像这样:
def __init__(self):self.data = []
当一个类定义了__init__()方法时,类的实例化操作会自动为新创建的类实例发起调用__init__()。 因此在这个示例中,可以通过以下语句获得一个经初始化的新实例:
x = MyClass()当然,__init__()方法还可以有额外参数以实现更高灵活性。 在这种情况下,提供给类实例化运算符的参数将被传递给__init__()。 例如
>>> class Complex:... def __init__(self, realpart, imagpart):
... self.r = realpart
... self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
MyClass.i和MyClass.f就是有效的属性引用,将分别返回一个整数和一个函数对象。 类属性也可以被赋值,因此可以通过赋值来更改MyClass.i的值。__doc__也是一个有效的属性,将返回所属类的文档字符串:"Asimpleexampleclass"。
本文共计753个文字,预计阅读时间需要4分钟。
示例展示了如何使用不同作用域和名称空间,以及global和nonlocal对变量绑定的 影响:def scope_test(): def do_local(): spam=local spam def do_nonlocal(): nonlocal spam spam=nonlocal spam scope_test()
下例演示了如何引用不同作用域和名称空间,以及global和nonlocal对变量绑定的影响:
def scope_test():def do_local():
spam = "local spam"
def do_nonlocal():
nonlocal spam
spam = "nonlocal spam"
def do_global():
global spam
spam = "global spam"
spam = "test spam"
do_local()
print("After local assignment:", spam)
do_nonlocal()
print("After nonlocal assignment:", spam)
do_global()
print("After global assignment:", spam)
scope_test()
print("In global scope:", spam)
示例代码的输出是:
注意,局部 赋值(这是默认状态)不会改变 scope_test 对 spam 的绑定。 nonlocal 赋值会改变 scope_test 对 spam 的绑定,而 global 赋值会改变模块层级的绑定。
而且,global 赋值前没有 spam 的绑定。
Class 对象
类对象支持两种操作:属性引用和实例化。
属性引用使用 Python 中所有属性引用所使用的标准语法:obj.name。 有效的属性名称是类对象被创建时存在于类命名空间中的所有名称。 因此,如果类定义是这样的:
class MyClass:"""A simple example class"""
i = 12345
def f(self):
return 'hello world'
那么类的实例化使用函数表示法。 可以把类对象视为是返回该类的一个新实例的不带参数的函数。 举例来说(假设使用上述的类):
x = MyClass()创建类的新实例并将此对象分配给局部变量x。实例化操作(“调用”类对象)会创建一个空对象。 许多类喜欢创建带有特定初始状态的自定义实例。 为此类定义可能包含一个名为__init__()的特殊方法,就像这样:
def __init__(self):self.data = []
当一个类定义了__init__()方法时,类的实例化操作会自动为新创建的类实例发起调用__init__()。 因此在这个示例中,可以通过以下语句获得一个经初始化的新实例:
x = MyClass()当然,__init__()方法还可以有额外参数以实现更高灵活性。 在这种情况下,提供给类实例化运算符的参数将被传递给__init__()。 例如
>>> class Complex:... def __init__(self, realpart, imagpart):
... self.r = realpart
... self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)
MyClass.i和MyClass.f就是有效的属性引用,将分别返回一个整数和一个函数对象。 类属性也可以被赋值,因此可以通过赋值来更改MyClass.i的值。__doc__也是一个有效的属性,将返回所属类的文档字符串:"Asimpleexampleclass"。

