今日内容概要
- 函数的返回值
- 函数的类型
- 函数的参数
- 常见的内置函数
今日内容详细
调用函数与函数返回值
-
定义与调用
定义函数使用关键字def,调用函数需要使用函数名加括号(如果函数需要参数那么则额外传递参数) -
定义阶段
函数在定义阶段只检测函数体语法不执行函数体代码 -
调用阶段
函数名加括号调用函数的时候才会执行函数体代码
什么是返回值?
返回值就是执行完某个方法该方法反馈出来的结果
如何获取返回值?
通过变量名与赋值符号即可,变量名 = 方法/函数()
- 当函数体没有return关键字的时候,默认返回None
def index(): print(‘from index‘) res = index() print(res) # None即空 表示没有
- return关键字后面写什么函数就返回什么
def index(): print(‘from index‘) return 123 res = index() print(res)
- return后面跟多个值默认会组织成元组的形式返回
def index(): print(‘from index‘) return 123, 555, 66, 5, 4, 5, 4 res = index() print(res)
- 函数体代码遇到return立刻结束整个函数的运行
def index(): print(‘from index‘) return 123, 555, 66, 5, 4, 5, 4 print(‘from index‘)
函数的类型
- 无参函数:函数在定义阶段没有参数调用阶段也不需要参数
def index(): print(‘from index‘) index()
- 有参函数:函数在定义阶段括号内填写了变量名即需要参数
def index(x): print(‘from index‘, x) index(1)
- 空函数:没有具体的函数体代码
def run(): pass # 补全语法结构 本身没有任何含义 def fight(): pass def talk(): pass
函数的参数
形参与实参介绍
函数的参数分为形式参数和实际参数,简称形参和实参:
形参即在定义函数时,括号内声明的参数。形参本质就是一个变量名,用来接收外部传来的值。
实参即在调用函数时,括号内传入的值,值可以是常量、变量、表达式或三者的组合。
def index(name): 形参 print(name) index(‘jason‘) 实参 name = ‘jason‘
两者在调用函数的时候临时绑定,函数运行结束分开
形参与实参的具体使用
- 位置参数:按照位置一一对应传值 多一个不行少一个也不行
def index(x, y): print(x, y) # index() # 不传不可以 # index(1) # 传少了也不行 # index(1,2) # 个数正确可以 # index(1,2,3,4,5,6,7) # 传多了也不行
- 关键字参数:指名道姓的给形参传值,可以打破位置限制
def index(x, y): print(x, y) index(y=111, x=222) index(111, y=222) index(111, x=222) # 报错 形参x被重复赋值 print(y=111,222) # 报错 位置参数一定要在关键字参数的前面
PS:需要注意在调用函数时,实参也可以是按位置或按关键字的混合使用,但必须保证关键字参数在位置参数后面,且不可以对一个形参重复赋值
- 默认参数:函数在定义阶段就给形参赋值了
def register(name, age, gender=‘male‘): print(name, age, gender) register(‘jason‘, 18) register(‘tony‘, 28) register(‘kevin‘, 38) # 使用默认的值 register(‘huahua‘, 18, ‘female‘) # 使用自带的值
- 可变长参数:函数如何做到无论接收多少个位置参数、关键字参数都可以正常运行
def func(*a, **b): print(a, b) func(1, 2, 3, a=1, b=2, c=3) func(1, 2, 3, 4, 5, 6, 7) func(a=1, b=2, c=3)
位置参数使用*完成操作,关键字参数使用**完成操作
一般情况下针对形参中的可变长参数,变量名推荐使用(*args **kwargs)
* 和 ** 的使用
* 在形参中会接收多余的位置参数组织成元组的形式赋值给*后面的变量名,在实参中会将列表/元组内的元素打散成一个个位置参数传递给函数
**在形参中会接收多余的关键字参数组织成字典的形式赋值给**后面的变量名,在实参中会将列表/元组内的元素打散成一个个位置参数传递给函数
l = [11, 22, 33, 44, 55]
d = {‘username‘: ‘jason‘, ‘pwd‘: 123, ‘hobby‘: ‘read‘}
def func(*args, **kwargs):
print(args, kwargs)
func(1, 2, 3, a=1, b=2, c=3)
func(1, 2, 3, 4, 5, 6, 7)
func(a=1, b=2, c=3)
func(*l)
func(**d)
内置函数
- 取绝对值:print(abs())
- 相当于and:print(all([1, 2, 3, 4, 0]))
- 相当于or:print(any([1, 2, 3, 4, 0]))
- 转二进制:print(bin())
- 转八进制:print(oct())
- 转十六进制:print(hex())
- 判断变量是否可以调用:print(callable())
- 返回ASCII码中数字对应的字符:print(chr())
- format字符串格式化输出:
- 取最大值:print(max())
- 取最小值:print(min())
- 求和:print(sum())