定义函数
函数可以将相同功能的代码封装到一起。
基本语法
def func():执行代码
可以将代码放在函数中,运行的时候只需要调用函数即可。类似数据库中的存储过程。
# 定义函数def star():# 函数体 执行代码for i in range(9):star = (2*(i+1)-1) * "*"blank = (9-i+1) * " "print(blank+star)# 调用函数star()
函数定义好之后,必须进行调用,才能执行里面的代码。
函数的返回值 return
使用python内置的一些函数,比如 type() 可以将数据类型打印出来。type函数有返回值。
返回值主要使用 return 关键字 将值返回出来。
def get_phone():import randomphone = random.randint(13000000000,13999999999)#phone 返回出来return phone# get_phone() 函数返回值 赋值给 phone 变量。phone = get_phone()print(phone)
def get_phone():import randomphone = random.randint(13000000000,13999999999)#phone 返回出来# print(phone)return phone# 测试注册def test_register():import requestsurl = "http://49.233.108.117:28019/api/v1/user/register"body = {"loginName": get_phone(), # 获取函数的返回结果"password": "123456"}print(f'使用数据 {body} 进行注册')requests.post(url,json=body)test_register()
函数的参数
必填参数
定义函数的时候,在 () 中定义参数
def add(x):return x+1# 调用函数的时候 x 为必填参数a = add(1) # 1 传给必填参数 xprint(a)# 也可以指定参数名 传参b = add(x=10) # 将数字10 传给 xprint(b)
必填参数也可以是多个。
def say(name,age):print(f"我的名字是{name},今年{age}岁")# 调用的时候传参say("小明",20)say(name="小王",age=24)
默认值参数
在定义函数的时候,可以为参数设置默认值。
# cid 设置默认值def say(name,age,cid=75):print(f'我的名字是 {name}, 年龄为 {age}, 来自 {cid} 班级')# 在调用函数时候,如果有默认值,可以不传参,使用默认值say('小明',30) # cid 使用默认值 # 我的名字是 小明, 年龄为 30, 来自 75 班级# 为默认值参数传值,可以覆盖掉默认值say("小王",23, 77) # 我的名字是 小王, 年龄为 23, 来自 77 班级
这里需要注意: 有默认值的参数在调用函数时可以不用传参。
参数的位置
一定要注意:
在定义函数的时候, 必填参数的位置放在前面, 有默认值的参数 放在后面。
下面的定义会报错
def say(cid=77,name,age):print(f'{name} , {age} , {cid}')

必填参数的位置一定要放在前面。
*args 元组类型
如果一个函数,不确定用户在调用的时候 能够传入多个参数,可以使用 *args 来代替。
# 表示可以传0个或者多个参数def say(*args):print(args, type(args))# 传入 0个参数say() # ()# 传入1个参数say("小明") # ('小明',)# 传入参数say("小明","小王","小张") # ('小明', '小王', '小张') <class 'tuple'>
args 传到函数中 作为 元组类型 的数据传进去。
**kwargs
传参作为字典格式传入到参数中。
def say(**kwargs):print(kwargs,type(kwargs))say() # {} <class 'dict'># 传参 key = valuesay(name="xiaoming",age=20) # {'name': 'xiaoming', 'age': 20} <class 'dict'>
参数值 作为 字典格式传入到函数中。
思维导图

