今日内容概要
今日内容详细
调用函数与函数返回值
定义与调用
定义函数使用关键字def,调用函数需要使用函数名加括号(如果函数需要参数那么则额外传递参数)
定义阶段
函数在定义阶段只检测函数体语法不执行函数体代码
调用阶段
函数名加括号调用函数的时候才会执行函数体代码
什么是返回值?
返回值就是执行完某个方法该方法反馈出来的结果
如何获取返回值?
通过变量名与赋值符号即可,变量名 = 方法/函数()
def index(): print('from index') res = index() print(res) # None即空 表示没有
def index(): print('from index') return 123 res = index() print(res)
def index(): print('from index') return 123, 555, 66, 5, 4, 5, 4 res = index() print(res)
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)
内置函数