Python基础:函数与参数详解

需积分: 1 0 下载量 28 浏览量 更新于2024-08-04 收藏 8KB TXT 举报
"Python基础知识,包括函数的定义与调用、return语句的作用、参数传递方式、形参定义以及全局变量和局部变量的概念。" 在Python编程中,函数是一种可重用的代码块,用于执行特定任务。在给定的描述中,我们看到函数的定义如下: ```python def fn(): pass ``` 这里的`def`关键字用于定义函数,`fn`是函数名,`pass`是一个空语句,表示函数没有实际操作。调用函数可以通过其名称`fn()`完成。 `return`语句在函数中起到至关重要的作用。当遇到`return`时,函数的执行停止,并将后面的表达式(如果有的话)的结果返回给调用者。如果没有任何表达式,如`return None`,则返回`None`。 在Python中,参数传递有两种主要方式:位置传参和关键字传参。位置传参是按照函数定义中的参数顺序传递,而关键字传参允许我们通过参数名指定值。例如: ```python def fn(a, b, c): pass fn(1, 2, 3) # 位置传参 fn(a=1, c=3, b=2) # 关键字传参 ``` 函数形参的定义方式多样,包括位置形参、星号元组形参(*args)、命名关键字形参(**kwargs)等。星号元组形参用于收集未命名的额外参数,双星号字典形参用于收集额外的关键字参数。 缺省参数允许我们在函数定义时为参数提供默认值,使得调用函数时可以不提供这些参数的值: ```python def fn(a, b=2): pass ``` 在这个例子中,如果调用`fn(1)`,`b`的值将是默认的2。 接下来,我们转向全局变量和局部变量。局部变量是在函数内部定义的变量,仅在该函数内部有效,如形参。它们在函数调用时创建,调用结束时销毁。而全局变量是在函数外部定义的,整个模块内的函数都可以访问。但是,要注意的是,虽然全局变量可以读取,但在函数内部直接赋值不会改变全局变量,除非使用`global`关键字声明。 ```python a = 1 # 全局变量 def func(): a = 2 # 这里创建了一个新的局部变量a,而非修改全局变量a print(a) # 输出局部变量a的值 func() # 输出2 print(a) # 输出1,因为全局变量a未被修改 ``` `globals()`函数返回一个包含全局变量的字典,而`locals()`函数返回当前作用域(通常是函数内部)变量的字典。 函数本身也是一种对象,可以赋值给变量,作为参数传递,或者在其他函数内部定义。这种特性使得Python具有很高的灵活性,例如: ```python def say_hello(): print("Hello") greeting = say_hello greeting() # 输出 "Hello" def wrapper(func): def inner(): print("Before") func() print("After") return inner new_greeting = wrapper(say_hello) new_greeting() # 输出 "Before",然后 "Hello",最后 "After" ``` 在这个例子中,`say_hello`函数被赋值给`greeting`,并且被用作`wrapper`函数的参数,创建了一个新的函数`inner`。 Python的函数机制、参数传递、变量作用域和函数作为对象的特性,构成了强大的编程工具,使得代码更易于理解和维护。