Python函数高级应用详解:函数调用、参数打包和变量作用域

版权申诉
0 下载量 15 浏览量 更新于2024-08-26 收藏 95KB PDF 举报
Python 函数高级应用 本文档主要介绍 Python 函数的高级应用,包括函数的定义、函数调用的步骤、参数的打包和解包、变量的作用域等。 一、函数的定义和调用 在 Python 中,函数的定义格式为 `def 函数名(形式参数): 函数体`。函数的封装就是实现代码块的复用,Python 内置了一些基础的函数,开发者也可以自己定义函数。函数只能先定义,再进行调用。 函数的调用步骤包括: 1. 程序遇到函数调用的情况时,暂停执行 2. 将实际参数值传递给函数参数 3. 执行函数体语句 4. 返回值并继续向下执行 二、参数的打包和解包 参数的打包指的是多个参数可以同时处理,也叫可变长度参数。可变长度参数在定义函数时主要有两种形式 `*parameter` 和 `**parameter`。前者用来接受任意多个参数并将其放在一个元组当中,后者接收多个关键参数组成键值对并将其放在字典当中。 打包为元组的示例代码为: ```python def demo(*p): print(p) demo(1, 2, 3, 4, 5, 6) # 结果 (1, 2, 3, 4, 5, 6) ``` 打包为字典的示例代码为: ```python def demo(**p): print(p) demo(x=1, y=2, z=3) # 结果 {'x': 1, 'y': 2, 'z': 3} ``` 参数的打包就是将形参设为 `*参数名` 形式,实参为多个参数,这是后会将多个参数处理为元组或字典的可迭代对象,是把个体打包为整体。 参数的解包同样也有两种形式 `*s` 和 `**s`。调用含有多个位置参数的函数时,可以使用列表、元组、集合等可迭代对象作为实参,在实参名前面加一个 `*`,Python 会自动对其进行解包,并把序列中的值分别传递给多个形参变量。 示例代码为: ```python def demo(a, b, c, d): print(a + b * c / d) list1 = [1, 2, 3, 4] demo(*list1) # 结果 2.5 ``` 如果实参是一个字典,可以使用 `**参数名` 形式对其进行解包操作,会把字典转换成为类似关键参数的形式进行参数传递。 示例代码为: ```python s = {'a': 1, 'b': 2, 'c': 3} def demo(a, b, c=4): print(a, b, c) demo(**s) # 结果 1 2 3 ``` 三、变量的作用域 变量的作用域就是变量能够作用的空间。变量按照作用域划分为全局变量和局部变量。全局变量是在函数体外定义的变量,为全局变量。全局变量在函数内外都能够使用,但在函数内对全局变量的修改将影响全局变量的值。 局部变量是在函数体内定义的变量,为局部变量。局部变量只能在函数体内使用,函数体外不能访问局部变量。