定义函数

函数可以将相同功能的代码封装到一起。
基本语法

  1. def func():
  2. 执行代码

可以将代码放在函数中,运行的时候只需要调用函数即可。类似数据库中的存储过程。

  1. # 定义函数
  2. def star():
  3. # 函数体 执行代码
  4. for i in range(9):
  5. star = (2*(i+1)-1) * "*"
  6. blank = (9-i+1) * " "
  7. print(blank+star)
  8. # 调用函数
  9. star()

函数定义好之后,必须进行调用,才能执行里面的代码。

函数的返回值 return

使用python内置的一些函数,比如 type() 可以将数据类型打印出来。type函数有返回值。
返回值主要使用 return 关键字 将值返回出来。

  1. def get_phone():
  2. import random
  3. phone = random.randint(13000000000,13999999999)
  4. #phone 返回出来
  5. return phone
  6. # get_phone() 函数返回值 赋值给 phone 变量。
  7. phone = get_phone()
  8. print(phone)

  1. def get_phone():
  2. import random
  3. phone = random.randint(13000000000,13999999999)
  4. #phone 返回出来
  5. # print(phone)
  6. return phone
  7. # 测试注册
  8. def test_register():
  9. import requests
  10. url = "http://49.233.108.117:28019/api/v1/user/register"
  11. body = {
  12. "loginName": get_phone(), # 获取函数的返回结果
  13. "password": "123456"
  14. }
  15. print(f'使用数据 {body} 进行注册')
  16. requests.post(url,json=body)
  17. test_register()

函数的参数

必填参数

定义函数的时候,在 () 中定义参数

  1. def add(x):
  2. return x+1
  3. # 调用函数的时候 x 为必填参数
  4. a = add(1) # 1 传给必填参数 x
  5. print(a)
  6. # 也可以指定参数名 传参
  7. b = add(x=10) # 将数字10 传给 x
  8. print(b)

必填参数也可以是多个。

  1. def say(name,age):
  2. print(f"我的名字是{name},今年{age}岁")
  3. # 调用的时候传参
  4. say("小明",20)
  5. say(name="小王",age=24)

默认值参数

在定义函数的时候,可以为参数设置默认值。

  1. # cid 设置默认值
  2. def say(name,age,cid=75):
  3. print(f'我的名字是 {name}, 年龄为 {age}, 来自 {cid} 班级')
  4. # 在调用函数时候,如果有默认值,可以不传参,使用默认值
  5. say('小明',30) # cid 使用默认值 # 我的名字是 小明, 年龄为 30, 来自 75 班级
  6. # 为默认值参数传值,可以覆盖掉默认值
  7. say("小王",23, 77) # 我的名字是 小王, 年龄为 23, 来自 77 班级

这里需要注意: 有默认值的参数在调用函数时可以不用传参。


参数的位置

一定要注意:
在定义函数的时候, 必填参数的位置放在前面, 有默认值的参数 放在后面。
下面的定义会报错

  1. def say(cid=77,name,age):
  2. print(f'{name} , {age} , {cid}')

image.png
必填参数的位置一定要放在前面。

*args 元组类型

如果一个函数,不确定用户在调用的时候 能够传入多个参数,可以使用 *args 来代替。

  1. # 表示可以传0个或者多个参数
  2. def say(*args):
  3. print(args, type(args))
  4. # 传入 0个参数
  5. say() # ()
  6. # 传入1个参数
  7. say("小明") # ('小明',)
  8. # 传入参数
  9. say("小明","小王","小张") # ('小明', '小王', '小张') <class 'tuple'>

args 传到函数中 作为 元组类型 的数据传进去。

**kwargs

传参作为字典格式传入到参数中。

  1. def say(**kwargs):
  2. print(kwargs,type(kwargs))
  3. say() # {} <class 'dict'>
  4. # 传参 key = value
  5. say(name="xiaoming",age=20) # {'name': 'xiaoming', 'age': 20} <class 'dict'>

参数值 作为 字典格式传入到函数中。


思维导图

函数 - 图2