# 定义Employee数据类型
class Employee:
def __init__(self, name, age, salary):
self.name = name
self.age = age
self.salary = salary
# 声明全局变量emp1
emp1 = Employee("Alice", 30, 5000.0)
def specific_function():
# 声明局部变量emp2,只能在这个函数内部访问
emp2 = Employee("Bob", 25, 4000.0)
print(f"emp2 name: {emp2.name}, age: {emp2.age}, salary: {emp2.salary}")
# 变量作用域原理:
## emp1
1. **全局变量**:`emp1`定义在模块的顶级,没有在任何函数内部。因此,它具有全局作用域。在整个应用程序的任何地方,只要导入了包含这个定义的模块,就可以访问`emp1`。例如,在其他模块中可以通过`模块名.emp1`的方式访问(前提是模块正确导入)。
## emp2
1. **局部变量**:`emp2`定义在`specific_function`函数内部,它的作用域仅限于这个函数内部。一旦函数执行完毕,`emp2`所占用的内存空间就会被释放。在函数外部,无法直接访问`emp2`,试图访问会导致`NameError`。