Python——12days
函数参数的两大分类——形参 ,实参
位置参数和关键参数*
默认参数*
可变长参数(*和**号在形参中使用、在实参中使用)*
命名关键字参数
函数的返回值:
关键字 return
函数参数的两大分类(形参,实参)
位置参数
debug模式
位置参数和关键参数*
默认参数*
可变长参数(*和**号在形参中使用、在实参中使用)*
命名关键字参数
函数的返回值:
关键字 return
def home():
print(123)
# return # 代码走到这立刻结束
# print('hello')
return 1, 2, 3 # (1, 2, 3)
res = home() # 把home函数执行之后返回的结构赋值给res变量
print(res) # None (1, 2, 3)
print(res[0]) # None (1, 2, 3)
print(res[1]) # None (1, 2, 3)
print(res[2]) # None (1, 2, 3)
1. 每一个函数不行必须要有返回值的,可有可无
2. 当函数中没有return关键字,那么,函数的返回结果是什么?
3. 只有是return关键字后面的数据才是函数的返回结果
4. 一个函数中只能有一个return关键字,函数体体代码只有遇到return直接退出
5. return后面可以返回值多个值,逗号隔开,以元组的形式返回
函数参数的两大分类(形参,实参)
形式参数
函数在'定义阶段'括号中定义的'变量名'就是形式参数,简称'形参'
def index(a, b):
pass
a,b 就是形参
实际参数
函数在'调用阶段'括号中写的'变量值'就是实际参数,简称'实参'
def index(a, b):
pass
index(1, 2)
1, 2就是函数的实参
形参和实参的关系
简单理解为把形参名=实参值-----------》变量名=变量值的形式来看
形参和实参是在函数调用阶段临时绑定,函数调用结束的时候,两者断开
函数传参形参其实只有一种情况:变量名
但是,实参就好几种形式:变量值、变量名、函数的返回值等,本质:变量值
函数在括号中从左往右依次写入的参数就是位置参数
def index(a, b, c):
pass
位置形参
在函数定义阶段括号中从左往右依次写入的变量名就是位置形参
def index(a, b, c):
pass
a,b,c就是位置形参
位置实参
在函数调用阶段括号中从左往右依次传入的变量值就是位置实参
index(1, 2, 3)
1, 2, 3称为是位置实参
"""位置参数的特点:形参和实参是一一对应的"""
让你定义一个比较两个数大小的函数
1. 定义一个比较两个数大小的函数
def my_max(a, b):
print(a, b)
if a > b:
return a
return b
关键字实参:可以打破按照顺序传递参数的规则
特点:严格按照变量名=变量值的形式一一传递
1. 先打断点,在代码的左侧点一下鼠标的左键,会出现一个红点
2. 右键选择debug选项
定义:
在函数定义阶段已经给形参赋予了变量值
1. 如果你在函数定义的时候,给形参赋予值之后,调用函数的时候,实参如果你没有给,就使用默认的
2. 如果你在函数调用的时候,给了值,就使用你给的值,不在使用默认的
1.函数在定义阶段,给的默认值直接就定死了,后续不会在改变
2. 根据变量名和变量值在内存中得关系来理解
1. 无论我传入多少个位置参数,函数都能够正常的被调用?
*号在形参中的使用:它会接收多余的位置参数,然后组装成元组的形式赋值给*号后面的变量名
def index(x, y, m, n, *a):
print(x, y, m, n, a) # (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
index(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
2. 无论我们传入多少个关键字参数,函数都能够被正常的调用?
**号在形参中得使用:会接收多余的关键字参数,并且组装成字典的形式赋值给**号后面的变量名
def index(x, y, q, z, **a):
# print(a) # {'x': 1, 'y': 2, 'm': 3, 'n': 4, 'z': 5, 'p': 6, 'q': 7}
print(x, y, a) # {'m': 3, 'n': 4, 'z': 5, 'p': 6, 'q': 7}
print(x, y, q, a) # {'m': 3, 'n': 4, 'z': 5, 'p': 6}
index(x=1, y=2, m=3, n=4, z=5, p=6, q=7)
补充:
*和和**号后面的变量名可以随便叫
但是嫩:在Python中,推荐使用*args **kwargs
args:arguments 位置参数
kwargs: keywords arguments 关键字参数
3. 无论我传入多少个位置参数和关键字参数,函数都能够被正常调用
def index(a, b, c=1, *args, **kwargs, ):
print(args) # (1, 2, 3, 4)
print(kwargs) # {'x': 10, 'y': 20, 'z': 30}
index(1, 2, 3, 4, x=10, y=20, z=30)
4. 可变长参数(*和**号)在实参中得使用(重要)
**号在实参中得使用
def index(x, y, a, b,):
print(x, y)
**号在实参中得使用:会把字典打散成关键字的形式当成实参传递
命名关键字参数:
只需理解,看懂
命名关键字传参:在形参中会出现*的用法,如果出现在*号后面的形参,那么,实参传递的时候,必须以关键字的形式传递