定义函数
函数可以将相同功能的代码封装到一起。
基本语法
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 random
phone = random.randint(13000000000,13999999999)
#phone 返回出来
return phone
# get_phone() 函数返回值 赋值给 phone 变量。
phone = get_phone()
print(phone)
def get_phone():
import random
phone = random.randint(13000000000,13999999999)
#phone 返回出来
# print(phone)
return phone
# 测试注册
def test_register():
import requests
url = "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 传给必填参数 x
print(a)
# 也可以指定参数名 传参
b = add(x=10) # 将数字10 传给 x
print(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 = value
say(name="xiaoming",age=20) # {'name': 'xiaoming', 'age': 20} <class 'dict'>
参数值 作为 字典格式传入到函数中。