Python磨刀篇|函数参数、星号、斜杠等用法总结

1.函数参数相关

1.1.位置参数

位置参数是指在调用函数时,按照形参的位置依次传递参数,数量和顺序必须与函数定义时的参数列表保持一致。下面是一个例子:

def func(a, b, c):

pass

func(1, 2, 3)

在这个例子中,1会传递给a, 2会传递给b, 3会传递给c。

1.2.关键字参数

关键字参数是指在调用函数时,指定参数名和对应的参数值,不需要按照参数的顺序传递。下面是一个例子:

def func(a, b, c):

pass

func(c=3, b=2, a=1)

在这个例子中,3会传递给c, 2会传递给b, 1会传递给a。关键字参数可以提高代码的可读性。

1.3.默认参数

默认参数是指在函数定义时,为参数设置默认值。如果调用函数时没有传递对应的参数值,则会使用默认值。下面是一个例子:

def func(a, b=2, c=3):

pass

func(1)

在这个例子中,由于只传递了一个参数,函数会使用默认值2和3来初始化b和c。

1.4.可变参数

可变参数指的是参数数量不定的情况,可以使用星号 * 来定义可变参数。下面是一个例子:

def func(*args):

pass

func(1, 2, 3)

在这个例子中,args会被初始化成一个元组(1, 2, 3)。

1.5.关键字可变参数

关键字可变参数指的是关键字参数数量不定的情况,可以使用两个星号 ** 来定义关键字可变参数。下面是一个例子:

def func(**kwargs):

pass

func(a=1, b=2, c=3)

在这个例子中,kwargs会被初始化成一个字典{'a': 1, 'b': 2, 'c': 3}。

2.星号用法

2.1.可变参数和关键字参数的传递

星号 * 可以用于函数调用时,将序列或字典展开为可变参数或关键字可变参数。下面是一个例子:

def func(a, b, c):

pass

args = [1, 2, 3]

func(*args)

kwargs = {'a': 1, 'b': 2, 'c': 3}

func(**kwargs)

在这个例子中,args会被展开成可变参数,kwargs会被展开成关键字可变参数。

2.2.解包元组或列表

星号 * 可以用于解包元组或列表。下面是一个例子:

a, *b, c = [1, 2, 3, 4, 5]

print(a) # 1

print(b) # [2, 3, 4]

print(c) # 5

在这个例子中,b的部分使用星号 * 来解包为一个list,这在循环中非常有用。

2.3.忽略元素

星号 * 可以用于忽略元素。下面是一个例子:

a, *_, c = [1, 2, 3, 4, 5]

print(a) # 1

print(c) # 5

在这个例子中,星号 _ 用于忽略列表中的元素。

3.斜杠用法

3.1.强制关键字参数

在Python 3中,可以使用斜杠 / 来标记位置参数结束,强制后续参数使用关键字传递。下面是一个例子:

def func(a, b, /, c, d):

pass

func(1, 2, c=3, d=4)

在这个例子中,/用于标记b为位置参数,c和d必须使用关键字参数传递。

3.2.函数注解

斜杠 / 也可以用于函数注解,在函数定义时表示位置参数的结束。下面是一个例子:

def func(a:int, b:int, /, c:float, d:float) -> int:

pass

在这个例子中,/用于标记b为位置参数,a和b使用注解:int,c和d使用注解:float,函数返回值使用注解:int。

免责声明:本文来自互联网,本站所有信息(包括但不限于文字、视频、音频、数据及图表),不保证该信息的准确性、真实性、完整性、有效性、及时性、原创性等,版权归属于原作者,如无意侵犯媒体或个人知识产权,请来电或致函告之,本站将在第一时间处理。猿码集站发布此文目的在于促进信息交流,此文观点与本站立场无关,不承担任何责任。

后端开发标签