Python高阶函数是指可以接收函数作为参数或返回函数作为结果的函数。获取命名属性的工具函数 getattr(object, name, default=None)
便是一个常用的高阶函数。
该函数的作用是返回对象 object
的指定属性 name
对应的值。如果对象中没有该属性,则返回 default
指定的默认值(默认值是 None
)。
举个例子,假设我们有一个对象 person
,包含属性 name
、age
和 gender
,现在需要获取其中的 name
属性,可以这样写:
person = {'name': 'Zhang San', 'age': 20, 'gender': 'male'}
name = getattr(person, 'name', None)
print(name)
运行结果是 Zhang San
。我们将 getattr
函数的第一个参数传入 person
,表示需要获取 person
对象的属性。第二个参数传入 name
,表示需要获取的属性名。由于 person
对象中包含属性 name
,因此函数返回该属性的值 Zhang San
。如果该属性不存在,就会返回默认值 None
。
除了 getattr
函数之外,还有其他与 Python 高阶函数获取命名属性相似的函数,例如 hasattr
和 setattr
。
hasattr(object, name)
函数用于检查对象 object
是否包含名字为 name
的属性或方法。例如,需要检查 person
对象是否包含名字为 address
的属性,可以写成:
person = {'name': 'Zhang San', 'age': 20, 'gender': 'male'}
has_address = hasattr(person, 'address')
print(has_address)
运行结果是 False
,因为 person
对象中不存在属性 address
。
setattr(object, name, value)
函数用于设置对象 object
的属性 name
的值为 value
。例如,想要将 person
对象的 name
属性改为 Li Si
,可以写成:
person = {'name': 'Zhang San', 'age': 20, 'gender': 'male'}
setattr(person, 'name', 'Li Si')
print(person['name'])
运行结果是 Li Si
,因为已经将 person
对象中的 name
属性改为了 Li Si
。
总之,Python 的高阶函数获取命名属性非常实用,可以方便地获取、检查和设置对象的各种属性。对于 Python 开发和数据分析工作都非常有用。