0. 概念
- 理解:一段具有
特定功能
的代码块 - 作用
1. 方便代码的重用 2. 分解任务,简化程序逻辑 3. 使代码更加模块化
- 分类
1. 内建函数 2. 三方函数 3. 自定义函数
1. 基本使用
- 简单定义
def 函数名(形参列表): 函数体
- 函数调用
函数名(实参列表)
- 形参
在函数定义中,"参数名称" 即为形参
- 实参
在调用函数的时候,传递的 "真实数据",即为实参
- 示例
def eat(food): print("吃%s" % food) eat("美食")
2. 参数
- 单个参数
- 场景
1. 需要动态地调整函数体中某一个处理信息; 2. 以参数的形式接收到相关数据
- 定义
def 函数名(参数名称): 函数体
- 调用
函数名(参数值)
- 示例
def square(num): print(num ** 3) square(3)
- 场景
- 多个参数
- 场景
1. 需要动态地调整函数体中多个处理信息; 2. 以逗号做分割,接收多个参数
- 定义
def 函数名(参数名称1, 参数名称2, 参数名称3, ...): 函数体
- 调用
1. 函数名(参数1, 参数2, 参数3, ...) 2. 函数名(参数名称1=参数1, 参数名称2=参数2, 参数名称3=参数3, ...)
- 示例
def sums(num1, num2): print(num1 + num2) sums(10, 20) sums(num1=30, num2=20)
- 场景
- 不定长参数
- 场景
1. 如果函数体中,需要处理的数据,不确定长度; 2. 以不定长参数的方式接收数据
- 定义
1. 元组 def 函数名(*args): 函数体 2. 字典 def 函数名(**kwargs): 函数体
- 调用
1. 元组 函数名(参数1, 参数2, 参数3, ...) 2. 字典 函数名(参数名称1=参数1, 参数名称2=参数2, 参数名称3=参数3, ...)
- 示例
1. 元组 def sums(*args): print(type(args), args) sums(1, 2, 3, 4) 2. 字典 def sums(**kwargs): print(type(kwargs), kwargs) sums(name="wxx", age=18)
- 参数拆包
1. 装包:把传递的参数,包装成一个集合 2. 拆包:把集合参数,再次分解成单独的个体 def add(a, b): print(a + b) def sums(*args): print(type(args), args) # 元组拆包 add(*args) sums(1, 2) def data(name, age): print("%s 年龄为 %s" % (name, age)) def person(**kwargs): print(type(kwargs), kwargs) # 字典拆包 data(**kwargs) person(name="wxx", age=18)
- 场景
- 缺省参数
- 场景
1. 函数某个形参在没有传入实参的时候; 2. 可以使用默认值
- 定义
def 函数名(参数名称1=默认值1, 参数名称2=默认值2, 参数名称3=默认值3, ...)
- 调用
def play(somebody="篮球"): print("打%s" % somebody) play() play("乒乓球")
- 场景
- 注意
- 值传递和引用传递
1. 值传递:传递过来的,是一个数据的副本; 修改副本,对原件没有任何影响 2. 引用传递:传递过来的,是一个变量的地址; 通过地址,可以操作同一份原件
- Python 参数
1. 只有引用传递,即地址传递; 2. 如果数据类型是可变类型,则可以改变原件; 3. 如果数据类型是不可变类型,则不可以改变原件 def changeOne(nums): print(id(nums)) nums.append(11) print(id(nums)) numList = [1, 3, 5, 7, 9] print(id(numList)) changeOne(numList) print(numList) def change(value): print(id(value)) value = 100 print(id(value)) num = 10 print(id(num)) change(num) print(num)
- 值传递和引用传递
网友评论