python入门系列(九)--定义函数

文章目录

  • 1. 无参数
    • 1.1 无返回
    • 1.2 一个返回值
    • 1.3 多个返回值
  • 2. 有参数
    • 2.1 无默认值
    • 2.2 有默认值
    • 2.3 强制位置参数(3.8新增)
    • 2.4 强制关键字参数
    • 2.5 任意长度位置参数

函数是指一段可以直接被另一段程序或代码引用的程序或代码。也叫做子程序、方法。
python 中定义函数的语法是 def

1. 无参数

1.1 无返回

def test():
    v1 = 1
    v2 = 2
    print(v1 * v2)


# 调用函数, 会在控制台打印2
test()
# 在python中没有正真的无返回值的函数, 未定义返回值时返回None
print(test())

1.2 一个返回值

def test():
    v1 = 1
    v2 = 2
    return v1 * v2


value = test()  # 我们可以用变量接收函数的返回值
print(value)  # 输出2

1.3 多个返回值

def test():
    v1 = 1
    v2 = 2
    return v1 * v2, v1, v2


value = test()  # 用一个变量接收返回值, 结果是一个元组
print(value)  # 输出(2, 1, 2)
a, b, c = test()  # 用多个变量接收返回值, 变量数量必须与返回值数量一致
print(a, b, c)  # 输出2 1 2

2. 有参数

2.1 无默认值

def test(v1, v2):
    return v1 * v2


# 函数需要传入两个参数, 然后返回两个参数值的积
# 对应位置的值传入给对应位置的参数, 2传给v1, 3传给v2
print(test(2, 3))  # 输出6
# 也可指定将值传给某个参数
# 第一个参数使用位置参数, 第二个参数为关键字参数
print(test(2, v2=3))
# 多个关键字参数无需在乎函数定义时的参数位置
print(test(v2=3, v1=2))
# 位置参数必须在前, 关键字参数在后
print(test(v1=2, 3))  # 报错

2.2 有默认值

def test(x, a=1, b=0, c=0):
    return a * x ** 2 + b * x + c


# 有默认值的参数无需传入, 函数也可正常执行
print(test(2))  # 输出4
# 想要跳过几个参数传入某个参数值时需使用关键字参数
print(test(2, c=2))  #输出6

2.3 强制位置参数(3.8新增)

def test(x, a=1, /, b=0, c=0):
    return a * x ** 2 + b * x + c


# /之前的参数只能使用位置参数传值, 使用关键子参数传值将报错
print(test(2))  # 输出4
print(test(x=2))  # 报错

2.4 强制关键字参数

def test(x, a=1, *, b=0, c=0):
    return a * x ** 2 + b * x + c


# *号之后的参数必须使用关键字参数传值, 否则将报错
print(test(2, 1, 1, 1))  # 报错
print(test(2, 1, b=1, c=1))  # 输出7

2.5 任意长度位置参数

def test(*args):
    print(args)


# 多个位置参数被组合成一个元组
test(2, 1, 3)  # 打印(2, 1, 3)

你可能感兴趣的:(python入门系列)