3.3 python基础 - 函数参数、作用域杂谈

66 阅读2分钟

函数参数传递机制

在Python中,函数的参数传递是按值传递的。这意味着当你将一个变量作为参数传递给函数时,实际上传递的是该变量的值的内存地址。因此,函数内部对参数的修改并不会影响原始变量的值,除非该参数是可变类型,如列表或字典,这种情况下函数内部对参数的修改会影响到原始变量。

调用栈与函数执行

Python中的每一个函数调用都会在内存中创建一个独立的区域,称为调用栈(Call Stack)。调用栈用于存储函数的局部变量和执行状态。当一个函数被调用时,它的执行环境被推入调用栈;当函数执行完毕,其执行环境则从调用栈中弹出。这种机制确保了即使同时执行多次函数,它们的执行状态也不会相互干扰。

函数作用域与变量

作用域基础

Python中的变量作用域决定了变量的可见性和生命周期。主要有两种作用域:

  • 局部作用域:在函数内部定义的变量,只能在该函数内部访问。
  • 全局作用域:在模块级别定义的变量,可以在模块内的任何位置访问。

关于变量

变量是存储数据的容器,它们在代码中用来引用特定的数据。变量的命名需要遵循一定的规则,比如不能以数字开头,不能使用Python的关键字等。

global关键字

使用global关键字可以在函数内部访问和修改全局作用域中的变量。这通常不是推荐的做法,因为它可能会使代码难以理解和维护。

作用域的核心要领

  • 局部变量只在函数内部有效。
  • 全局变量在整个模块中都有效。
  • 使用global关键字可以在函数内部访问全局变量,但应谨慎使用。

函数的定义与执行

定义一个函数时,你需要使用def关键字,后跟函数名和括号内的参数列表。函数体则由缩进的代码块组成。例如:

def my_function(param1, param2):
    # 函数体
    print(param1 + param2)

当你想要执行这个函数时,你需要使用函数名后跟一对圆括号(),并将需要传递给函数的参数放在圆括号内。例如:

result = my_function(5, 3)

这段代码将调用my_function函数,并将数值5和3作为参数传递给它,函数执行后会打印出8。