-1

我是出于纯粹的兴趣和好奇而问的。我有以下代码:

students = ["Smith", "Jacob", "Susan"]


def enroll(student: str, uni_students: list[str]) -> None:
    global students
    students = ["Carol", "James"]
    uni_students.append(student)


enroll("Vanessa", students)
print(students)

产生以下输出: ['Carol', 'James']

我知道 Python 的评估策略是通过共享调用,在这种情况下,这意味着既不是副本也不是引用,而只是对students对象的访问被传递给enroll(...)函数。在引用全局students并从函数范围内重新绑定它之后,我希望 的值uni_students也会改变,但它保持不变 -["Smith", "Jacob", "Susan"]函数执行完成后,本地范围内的所有名称当然都被销毁,留下students具有值['Carol', 'James']

有人对此有任何解释吗?谢谢!

4

0 回答 0