一,定义函数的语法
1,定义
def 函数名():
要封装的代码
.......
def 是英文define的缩写
函数的命名规则:
由字母,数字,下划线组成
不能以数字开头
不能与关键字重名
最好要做到见名之意
二,函数的参数
参数分为形参和实参
形参-- 定义函数时,括号中的参数,用来接受外部参数使用的,在函数内部作为变量使用
eg:
def get_money(cardnum, passwd): # 其中cardnum,和passwd都为形参, pass为占位符
pass
三;细分形参又可以分为位置传参,不定长传参,默认传参
1,位置传参:
自己定义的,必须放在首位(在不定长传参,默认传参的前面,为必传参数)
eg:
def get_money(cardnum, passwd, money):
if len(cardnum) < 10:
print("卡号错误")
if len(passwd) != 6:
print("密码错误")
if int(money) % 100 != 0:
print("金额不为100的整数倍")
else:
return print("取款成功")
# 调用,因为卡号,密码,和金额都是位置传参,所以为必传,而且位置得一一对一应
get_money("1234567890", "123456", "100")
2,不定长传参-- *args , **kwargs
*args-- 调用时可传多个参数,是以元组的形式存储的
**kwargs-- 调用时传多个参数,是以键值对的形式传参
eg:
def get_money(cardnum, *args, **kwargs):
if len(cardnum) < 10:
print("卡号错误")
print(args)
print(kwargs)
get_money("11111111111", True, "666", "888", name="菜鸟", age="18")
输出结果如下
3,默认传参,在定义函数的时候,可以默认给一个值,即形参=实参,如果在调用函数的时候,没有传对应的参数,就使用在定义的时候给的值
eg:
def get_money(cardnum, pwd="88888888", money="200"):
'''
:param cardnum:
:param pwd: 给了一个默认参数为88888888
:param money: 给了一个默认取款金额200
:return:
'''
if len(cardnum) < 10:
print("卡号错误")
return print("取款成功,金额:{}".format(money))
get_money("11111111111aa")
输出结果如下图;
可见,调用时没有传取款金额的参数,默认用了定义函数时给的默认值
总结:三种参数可以并存,并存的时候的编写顺序为:位置参数,不定长参数,默认参数!!! 位置不对ide会报错提示
4,实参-- 调用函数时,括号中的参数,用来把外部的数据传递到函数内部
eg:
def get_money(cardnum, pwd="88888888", money="200"):
if len(cardnum) < 10:
print("卡号错误")
return print("取款成功,金额:{}".format(money))
get_money("11111111111aa") # 调用函数时,在括号中传进去的就是实参
5,函数传参的小方法-- 拆包
1,* 传递参数时,可以对元组/列表进行拆包
eg:
num_list = [10, 20, 30, 40]
def add(a, b, c, d):
sum_num = a + b + c + d
print(sum_num)
# 调用的时候,要把num_list 中的参数传进去,则可以利用拆包,但是切记,元组或列表中的元素个数,必须要和函数中定义的个数一致,才能拆包
add(*num_list)
2, ** 传递参数时,可以对字典进行拆包
eg:
def print_info(**kwargs): # 因为这里在定义函数的形参时,定义的就是字典类型的不定长传参,所以调用时的个数无关紧要
for key, value in kwargs.items():
print(key, value)
persion_info = {
"name": "菜鸟",
"age": 18,
"weight": 60
}
print_info(**persion_info)
拆包的用法:在接口自动化和web自动化的框架中会经常使用~切记。
三:函数的返回return
注意事项:
1,假如在定义函数时,没有写return,则默认调用后的返回值为None
2,格式-- return 值 ,其中,值可以为任意类型的数据,看实际情况选择
3,return 后也可不跟值,表示返回为None
4, 在调用函数时,遇到return,则结束函数调用,跟break的效果是一样的
四,全局变量和局部变量的定义
局部变量-- 在函数内部定义的变量,只能在函数内部可用
全局变量-- 在函数外部定义的变量,函数内部可以使用,但不可修改。如果非要修改,则要用global进行申明为全局变量
不太重要,但是要理解。
后续踩坑补充