1. 内置函数 globals()
用于返回当前全局作用域中的所有变量和它们的值。它返回一个字典,其中包含了全局作用域中的所有变量名和对应的值。
# 假设我们有以下全局变量
name = "Alice"
age = 30# 使用 globals() 获取全局作用域中的变量
global_vars = globals()# 打印全局变量
for var_name, var_value in list(global_vars.items()):print(f"{var_name}: {var_value}") # 动态创建一个全局变量
def create_global_variable(var_name, var_value):globals()[var_name] = var_valuecreate_global_variable("city", "New York")# 现在我们可以访问全局变量 city
print(f"City: {city}") # 输出: City: New York
2. 内置函数 getattr()
getattr(object, name[, default])
object: 要获取属性的对象。
name: 属性的名称。
default (可选): 如果属性不存在,返回的默认值。
getattr()用于获取对象的属性值。它接受三个参数:对象、属性名和默认值。如果对象具有指定的属性,则返回该属性的值;如果对象没有该属性,则返回默认值(如果提供了默认值)或引发 AttributeError 异常。
class Person:def __init__(self, name, age):self.name = nameself.age = ageperson = Person("Alice", 30)# 获取对象属性
name_value = getattr(person, "name")
age_value = getattr(person, "age")print(f"Name: {name_value}")
print(f"Age: {age_value}")
3. property() 函数
property() 函数可以把类中的方法伪装成属性。它主要用来将一个类的某个方法变成属性调用。
语法:
property(fget=None, fset=None, fdel=None, doc=None)
fget:获取属性值的函数
fset:设置属性值的函数
fdel:删除属性值的函数
doc:属性的文档字符串
示例:
class Circle:def __init__(self, radius):self._radius = radius@propertydef radius(self):return self._radius@radius.setterdef radius(self, value):if value >= 0:self._radius = valueelse:raise ValueError("Radius must be non-negative")c = Circle(5)
print(c.radius) # 输出: 5
c.radius = 10
print(c.radius) # 输出: 10
4. hasattr() 函数
hasattr() 函数用于判断对象是否包含对应的属性或方法。如果对象有指定的属性或方法,返回 True,否则返回 False。语法:
hasattr(object, name)
object:对象
name:字符串,属性或方法的名称
示例:
class Person:def __init__(self, name):self.name = namep = Person("Alice")
print(hasattr(p, "name")) # 输出: True
print(hasattr(p, "age")) # 输出: False
5. delattr() 函数
delattr() 函数用于删除对象的属性。如果对象中有该属性则删除成功,否则抛出 AttributeError。语法:
delattr(object, name)
object:对象
name:字符串,要删除的属性名称
示例:
class Person:def __init__(self, name):self.name = namep = Person("Alice")
delattr(p, "name")
# print(p.name) # 如果取消注释,这行会抛出 AttributeError,因为 'name' 属性已被删除
6. dict() 函数
dict() 函数用于创建一个字典。可以传入关键字参数、映射或可迭代对象(元素为二元组)来创建字典。
语法:
dict(**kw)
dict(mapping, **kw)
dict(iterable, **kw)
**kw:关键字参数,直接传入键值对
mapping:映射对象,包含键值对的可迭代对象
iterable:可迭代对象,每个元素是一个包含两个元素的元组或列表
示例:
# 使用关键字参数创建字典
d1 = dict(a=1, b=2, c=3)
print(d1) # 输出: {'a': 1, 'b': 2, 'c': 3}# 使用映射对象创建字典
d2 = dict([('a', 1), ('b', 2), ('c', 3)])
print(d2) # 输出: {'a': 1, 'b': 2, 'c': 3}# 使用可迭代对象创建字典(需要每个元素是二元组)
d3 = dict((('a', 1), ('b', 2), ('c', 3)))
print(d3) # 输出: {'a': 1, 'b': 2, 'c': 3}