python函数基础十:位置参数和关键字参数

  1. 位置参数和关键字参数

实参按照传递方式的不同分为位置参数和关键字参数两种
1)位置参数
调用函数的时候让实参和形参一一对应(第一个实参给第一个形参赋值,第二个实参给第二个形参赋值…)
格式:数据1, 数据2, 数据3, …

位置参数
func1(10, 20, 30)       # x:10, y:20, z:30
func1(10, 30, 20)       # x:10, y:30, z:20

2)关键字参数
让实参和形参通过关键字(形参名)对应
格式:形参名1=数据1,形参名2=数据2,…

关键字参数
func1(x=100, y=200, z=300)   # x:100, y:200, z:300
func1(z=30, x=10, y=20)     # x:10, y:20, z:30
# func1(x=100, y=200, y=300)    # 报错!

3)关键参数和位置参数混用
混用的时候位置参数必须在关键字参数前面

*参数,指可以有多个参数

混用
func1(10, z=30, y=20)    # x:10, y:20, z:30
# func1(x=20, 40, z=60)   # 抱错!位置参数必须在关键字参数的前面

print(10, end='a')
print(10, 20, 30, sep=',')

def print(*data, end='\n', sep=' '):
    pass
sorted([1, 23, 8], reverse=True)
  1. 参数默认值
    定义函数的时候可以给以 ‘形参名=数据’ 的形式给参数赋默认值,调用函数的时候有默认值的参数可以不赋值
    注意: 有默认值的参数必须在没有默认值参数的后面
def func2(x=1, y=10, z=100):
    print(f'x:{x}, y:{y}, z:{z}')


func2(1, 2, 3)    # x:1, y:2, z:3
func2(10, 20)    # x:10, y:20, z:100
func2(10)
func2()

func2(y=200)
func2(z=300)

3.参数类型说明
定义函数的时候,可以对参数类型进行说明

  1. 赋默认值,默认值是什么类型,参数类型说明就是什么类型
  2. 形参名:数据类型
def func5(x: list) -> None:
    x.append('100')
func5([])

4.不定长参数
在形参前加或者加**,就可以让这个参数变成不定长参数。不定长参数的形参可以同时接受多个实参
1)带
的不定长参数
带*的参数会变成一个元组,元组中的元素就是对应的实参

注意:a. 一个函数可以同时存在带和不带的参数,如果不带的在带的后面,不带*的参数必须使用关键字参数
b.带/*的参数必须使用位置参数

2)带/**的不定长参数
带/**的不定长参数会变成一个字典;调用的时候用关键字参数传参,每个关键字就是字典的key,关键字后面的数据就是字典的value

注意:a.定义的时候定长参数必须放在/**不定长参数的前面
b.带/*和带/**的不定长参数可以同时存在,但是/*必须在/**前面。(如果同时存在可以让函数在调用的时候更加灵活)

def func6(*x):
    print(f'x:{x}')


func6()
func6(10)
func6(10, 20)
func6(1, 2, 3, 4, 5)
# 练习:定义一个函数,可以求多个数的和
# sum1(10, 20)  sum1(10, 20, 30)
def sum1(*num):
    s = 0
    for x in num:
        s += x
    print(s)

def func10(x, **y):
    print(f'x:{x}, y:{y}')


func10(10, a=20, c=30, d=40)    # x:10, y:{'a': 20, 'c': 30, 'd': 40}
func10(a=1, b=2, c=3, x=100)    # x:100, y:{'a': 1, 'b': 2, 'c': 3}

def func8(*x, y):
    print(f'x:{x}, y:{y}')


func8(1, 2, 3, y=10)

猜你喜欢

转载自blog.csdn.net/SaharaLater/article/details/111564450
今日推荐