Python 符号*的特殊用法

简介: Python 符号*的特殊用法

特殊用法



1. 常规用法:


* 乘法运算     ** 指数运算



2. 函数参数


*args 和 **kwargs 主要用于函数定义。

*(星号) 才是必须的. 也可以写成 *ar  和 **k 。

*args 与 **kwargs 的区别,两者都是 python 中的可变参数:

*args 表示任何多个无名参数,它本质是一个 tuple

**kwargs 表示关键字参数,它本质上是一个 dict

如果同时使用 *args 和 **kwargs 时,必须 *args 参数列要在 **kwargs 之前。




3. 序列解包

可方便用于列表赋值

>>> a,*b,c=[1,2,3,4,5,6]
>>> b
[2, 3, 4, 5]
>>> 
>>> a,*b,c=1,2,3,4,5,6
>>> b
[2, 3, 4, 5]
>>> a
1
>>> c
6
>>>
>>> a,b,*c=range(1,7)
>>> c
[3, 4, 5, 6]
>>> a
1
>>> b
2
>>> c
[3, 4, 5, 6]
>>> *c
SyntaxError: can't use starred expression here
>>> #不能直接在提示符下操作,如下:
>>> print(*c)
3 4 5 6
>>> 


功能扩展: 给单个列表赋值,然后降序排列输出

>>> *a,=range(1,4)
>>> a
[1, 2, 3]
>>> print(*sorted(a,reverse=True))
3 2 1
>>> 
>>> a = [*range(1,4)]
>>> a
[1, 2, 3]
>>> 



4. 字典解包

可方便用于合并字典

>>> a = dict.fromkeys('abcd')
>>> b = dict.fromkeys('123')
>>> {**a}
{'a': None, 'b': None, 'c': None, 'd': None}
>>> c = {**a, **b}
>>> c
{'a': None, 'b': None, 'c': None, 'd': None, '1': None, '2': None, '3': None}
>>> 




附录


位置参数和关键字参数


Python的函数的输入参数有两种类型,一种是位置参数(positional argument),一种是关键字参数(keyword argument)。


所谓positional argument位置参数,是指用相对位置指代参数。关键字参数(keyword argument),见名知意使用关键字指代参数。位置参数或者按顺序传递参数,或者使用名字,自然使用名字时,对顺序没有要求。




形参与实参



1. 形参:


1.1 位置形参:在定义阶段,按照从左到右的顺序依次定义的形参

特点:必须被传值


1.2 默认参数:在定义阶段,就已经为某个形参赋值,该形参称之为默认形参

特点:在定义阶段就已经有值,意味着调用阶段可以不用为其传值

注意点:位置形参必须放在默认形参的前面


1.3 形参中*与**的用法


1. 形参中带*:*会将溢出的位置实参存成元组的形式然后赋值其后变量名

def func(x,y,*args):

print(x,y,args)

func(1,2,3,4,5,6)


2. 形参中带**:**会溢出的关键字实参存成字典的格式然后赋值其后变量名

def func(x,y,**kwargs):

print(x,y,kwargs)

func(1,y=2,z=3,m=1,n=2)


2. 实参


2.1 位置实参: 在调用阶段,按照从左到右的顺序依次传入的值

特点:这种传值方式会与形参一一对应

func(2,1,3)


2.2 关键字实参: 在调用阶段,按照key=value的格式传值

特点:可以完全打乱位置,但仍然能为指定的形参传值

func(z=3,y=2,x=1)

注意:可以混用关键字实参与位置实参,但是


1. 同一个形参只能被赋值一次

2. 位置实参必须跟在关键字实参的前面


func(1,z=3,y=2)

func(1,z=3,y=2,x=333)

func(x=1,2,z=3) # 报语法错误


2.3 实参中*与**的用法


1. 实参中带*:先将实参打散成位置实参,然后再与形参做对应

def func(x,y,z):

print(x,y,z)

func(1,[2,3])

func(*[1,2,3]) #func(1,2,3)

func(*'hello') #func('h','e','l','l','o')

func(*'hel') #func('h','e','l')


2. 实参中带**:先将实参打散成关键字实参,然后再与形参做对应




目录
相关文章
|
2月前
|
Python
Python三引号用法与变量详解
本文详细介绍了Python中三引号(`"""` 或 `'''`)的用法,包括其基本功能、如何在多行字符串中使用变量(如f-string、str.format()和%操作符),以及实际应用示例,帮助读者更好地理解和运用这一强大工具。
77 2
|
3月前
|
缓存 测试技术 开发者
深入理解Python装饰器:用法与实现
【10月更文挑战第7天】深入理解Python装饰器:用法与实现
27 1
|
3月前
|
传感器 大数据 数据处理
深入理解Python中的生成器:用法及应用场景
【10月更文挑战第7天】深入理解Python中的生成器:用法及应用场景
109 1
|
3月前
|
存储 大数据 Python
案例学Python:filter()函数的用法,高级!
`filter()`函数是Python中处理序列数据的强大工具,它允许我们高效地根据条件过滤元素。通过结合匿名函数、常规函数或直接利用Python的内置逻辑,`filter()`提供了灵活且高效的过滤机制,尤其在大数据处理和内存敏感的应用中展现出其价值。掌握 `filter()`的使用,不仅能提升代码的可读性和效率,还能更好地适应Python的函数式编程风格。
59 2
|
3月前
|
Python
深入了解Python中星号变量的特殊用法
深入了解Python中星号变量的特殊用法
35 0
|
3月前
|
PyTorch 测试技术 算法框架/工具
Python中Thop库的常见用法和代码示例
肆十二在B站分享了关于THOP(Torch-OpCounter)的实战教学视频。THOP是一个用于计算PyTorch模型操作数和计算量的工具,帮助开发者评估模型复杂度和性能。本文介绍了THOP的安装、使用方法及基本用例,包括如何计算模型的FLOPs和参数量。
184 0
|
3月前
|
SQL 关系型数据库 MySQL
Python中Pymysql库的常见用法和代码示例
`pymysql` 是一个用于连接 MySQL 数据库的 Python 库,支持 SQL 查询的执行和结果处理。通过 `pip install pymysql` 安装后,可使用 `connect()` 方法建立连接,`cursor()` 创建游标执行查询,包括数据的增删改查,并通过 `commit()` 和 `rollback()` 管理事务,最后需关闭游标和连接以释放资源。
154 0
|
3月前
|
计算机视觉 Python
Python中Pillow库的常见用法和代码示例
Pillow是Python中广泛使用的图像处理库,支持丰富的图像操作功能,包括但不限于打开、保存、缩放、裁剪、旋转、调色等。本文通过一系列示例介绍Pillow的基本用法,涵盖图像的加载与显示、尺寸调整、裁剪与旋转、亮度调整、格式转换、滤镜应用、图像合成及像素级操作等。首先需通过`pip install pillow`安装库,随后可通过导入`PIL.Image`等模块开始图像处理任务。无论是初学者还是进阶用户,都能从Pillow提供的强大功能中获益。
99 0
|
3月前
|
Python
Python pip 操作的几种用法
Python pip 操作的几种用法
67 0
|
3月前
|
JSON API 开发者
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
深入解析Python网络编程与Web开发:urllib、requests和http模块的功能、用法及在构建现代网络应用中的关键作用
29 0