Python: 你所不知道的星号 * 用法

python,知道,星号,用法 · 浏览次数 : 643

小编点评

**Python 中的星号 * 用法** **引言** 星号 * 是一个用于在 Python 中执行对操作数的乘法运算的符号。虽然它不是必须的,但了解它的用法可以帮助我们更深入地理解 Python 的运算机制。 **常用用法** * **对两个数的乘法:**使用 `*`符号连接两个数。 * **对序列的成员倍增:**使用 `*`符号扩展一个序列的成员。 * **对字典数据进行提取:**使用 `*`符号对字典数据中的所有键值对进行提取。 * **对迭代类型数据进行提取:**使用 `*`符号对迭代类型数据中的所有元素进行提取。 **示例** ```python # 常用的方法 mul = 1 * 2 print(mul) # 2 # 序列的成员倍增 list = ['hello'] * 2 print(list) # ['hello', 'hello'] # 星号前面操作数为序列的例子 numbers = ['hello', 1, 2, 3, 4] print(*numbers) # 输出 'hello 1 2 3 4' # 星号前面操作数为字典的例子 data = {'param1': 'foo', 'param4': 'bar'} print(foobar(**data)) # 输出 'param2param1' # 带星号修饰符的函数参数 def foobar(param1, param4): return "{}{}".format(param4, param1) print(foobar(1, 2, 3, 4, 5)) # 输出 'param2param1' ``` **总结** 在 Python 中,星号 * 用于执行对操作数的乘法运算、对序列的成员倍增、对字典数据进行提取以及对迭代类型数据进行提取。通过了解星号的用法,我们可以更深入地理解 Python 的运算机制,并编写更加复杂的功能。

正文

以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「englyf」https://mp.weixin.qq.com/s/FHyosiG_tegF5NRUEs7UdA


本文大概 1152 个字,阅读需花 6 分钟
内容不多,但也花了一些精力
如有余力,欢迎点赞收藏分享,谢谢!

铃铃铃…… 上课了

老师在黑板写着这么一个标题 《Python: 你所不知道的星号 * 用法》

同学A:
    呃,星号不就是用来做乘法的嘛,这个还有必要专门列出来吗?

同学B:
    老师这会又在卖关子了?

同学C忍不住嗦地一声站起来喊:
    难道写代码还得强行找理由秀一波星星吗?

老师:
    这位同学,你太优秀了,先坐下。
    平常对于星号的应用场景用得少是不需要了解太多用法的。
    不过,学编程的过程少不了要去阅读优秀的源代码库,
    也就时常会对星号 * 的贸然出现和用途感到困惑,
    所以今天就让你们好好了解一下会有哪些用法,
    不要求全记住,略懂一二即可,略懂。。。

这里尝试总结一波python里的星号* 用法,如有写得不到位,欢迎评论区交流!看下文...

数值乘法

最常见的用法,星号用在两个数之间实现两个数的乘法计算

e.g.

mul = 1 * 2
print(mul)

Output:

2

成员倍增器

如果星号前面的操作数是序列,比如列表、元组、字符串等,后操作数是n,那么是对序列的成员倍增,列表的成员数量会变成原来的n倍。

e.g.

list = ['hello'] * 2
print(list)

Output:

['hello', 'hello']

幂运算

两个星号 ** 表示对星号前面的操作数执行后面操作数的幂运算,简单点说就是求多少次方的计算。

e.g.

print(10 ** 3)

Output:

1000

提取操作符

有时候在打印数据时,需要对原始数据进行输出,并且在数据之间插入一些分隔符。一般想到的是用循环处理,但是看起来语句有些啰里啰唆的。

e.g.

print(' '.join(['sunday', 'monday', 'tuesday', 'wednesday']))
print(' '.join('helloworld!'))

Output:

sunday monday tuesday wednesday
h e l l o w o r l d !

在这里要介绍的是更方便的方法,那就是用星号对迭代类型数据做提取处理。

1. 单星号 * 操作

调用函数时,在输入参数前添加星号 * 可以对参数执行提取操作,比如对列表、元组、字符串等迭代类型的输入参数做提取之后,迭代类型的数据元素会被逐个取出。

e.g.

print(*'list')

Output:

l i s t

e.g.

print(*['hello', 'world', '!'])

Output:

hello world !

在字典类型数据前添加单个星号 *,仅对字典数据键部分执行提取,然后以位置参数的形式输入函数。

def foobar(param1=None, param4=None):
    return "{}{}".format(param4, param1)

values = {"param1": "foo", "param2": "bar"}

print(foobar(*values))

Output:

param2param1

2. 双星号 ** 操作

在字典类型数据前添加两个星号 **,对字典数据执行提取,然后以关键字参数的形式输入函数。

def foobar(param1=None, param4=None):
    return "{}{}".format(param4, param1)

values = {"param1": "foo", "param4": "bar"}

print(foobar(**values))

Output:

barfoo

函数参数修饰符

  1. 添加星号 * 在函数的参数前时,表示该参数是不定数量的位置参数。

很多时候向函数输入的位置参数是不定数目的,这样子就可以借助星号修饰符来表述了。在函数内该参数存储的数据被构造成元组类型,也就是说传入的不定参数被包含在元组内。

e.g.

def add(*args):
    return sum(args)

print(add(1, 2, 3, 4, 5))

Output:

15
  1. 添加两个星号 ** 在函数的参数前时,表示该参数是不定数量的关键字参数。

向函数输入的不定数目的参数除了可以是位置参数之外,也可以是关键字参数。这个时候就不能用单个星号做修饰符了,而是双星号 **,比如 **kwargs。

在函数内该不定数目参数存储的数据属于字典类型,也就是说传入的不定参数被包含在字典内。

e.g.

def food_type(**kwargs):
    for item in kwargs:
        print(f"{kwargs[item]} belongs to {item}")

food_type(fruit = 'apple', meat = 'animal', vegetable = 'potato')

Output:

apple belongs to fruit
animal belongs to meat
potato belongs to vegetable

好了,简简单单介绍完毕,你看懂了吗?如果没有就留个言吧,我改总可以了吧?

与Python: 你所不知道的星号 * 用法相似的内容:

Python: 你所不知道的星号 * 用法

平常对于星号的应用场景用得少是不需要了解太多用法的。不过,学编程的过程少不了要去阅读优秀的源代码库,也就时常会对星号 * 的贸然出现和用途感到困惑,所以今天就让你们好好了解一下会有哪些用法。

《最新出炉》系列入门篇-Python+Playwright自动化测试-49-Route类拦截修改请求-下篇

1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源。例如:可能页面上图片比较多,而我们又不关心图片内容。那么,在加载页面时,可以选择不加载图片,以提高页面加载速度。这里我们主

《最新出炉》系列入门篇-Python+Playwright自动化测试-48-Route类拦截修改请求-上篇

1.简介 在日常工作和学习中,自动化测试的时候:在加载页面时,可能页面出现很多不是很重要或者不是我们所关注的,这个时候我们就可以选择不加载这些内容,以提高页面加载速度,节省资源。例如:可能页面上图片比较多,而我们又不关心图片内容。那么,在加载页面时,可以选择不加载图片,以提高页面加载速度。这里我们主

《流畅的Python》 读书笔记 第二章数据结构(2) 231011

2.5 对序列使用+和* 通常 + 号两侧的序列由相同类型的数据所构成,在拼接的过程中,两个被操作的序列都不会被修改,Python 会新建一个包含同样类型数据的序列来作为拼接的结果 +和*都遵循这个规律,不修改原有的操作对象,而是构建一个全新的序列 l1 = [1,2,3] l2 = [4,5,6]

Python:对程序做性能分析及计时统计

如果只是想简单地对整个程序做计算统计,通常使用UNIX下的time命令就足够了。由于我用的是Mac系统,和Linux系统的输出可能有不同,不过关键都是这三个时间:user: 运行用户态代码所花费的时间,也即CPU实际用于执行该进程的时间,其他进程和进程阻塞的时间不计入此数字;system: 在内核中执行系统调用(如I/O调用)所花费的CPU时间。total(Linux下应该是real):即挂钟时间

selenium结合tenacity的retry实现验证码失败重试

说在前面 验证码登录的demo后续可以单独讲解,VIP学员对这部分应该都是掌握的,此处不再赘述 本文假设了一个场景 你通过OCR识别的验证码是有一定的错误几率的 本文是通过识别后的验证码去加一个随机字符,如果取到的是''空字符则可能成功,否则必然不会成功 所涉及的python库 selenium d

核对不同文件夹所含内容的差异并提取缺失内容:Python代码

本文介绍基于Python语言,以一个大文件夹作为标准,对另一个大文件夹所包含的子文件夹或文件加以查漏补缺,并将查漏补缺的结果输出的方法~

python入门基础(13)--类、对象、全局函数,类内部调用

面向过程的编程语言,如C语言,所使用的数据和函数之间是没有任何直接联系的,它们之间是通过函数调用提供参数的形式将数据传入函数进行处理。 但可能因为错误的传递参数、错误地修改了数据而导致程序出错,甚至是崩溃。当需要修改或维护程序时要从程序提供的一堆数据中去寻找和修改它,要扩展函数的功能,只能重新建立一

python提取特定格式的数据

Excel Grid Data Converter 知识点总结 本文档总结了 ExcelGridConverter.py 脚本所涉及的关键 Python 知识点。该脚本用于从多个 Excel 文件中提取特定格式的数据并转换为一个新的 Excel 文件。 目录 导入库 Pandas 数据处理 Tkin

Python依据遥感影像的分幅筛选出对应的栅格文件

本文介绍基于Python语言,结合已知研究区域中所覆盖的全部遥感影像的分幅条带号,从大量的遥感影像文件中筛选落在这一研究区域中的遥感影像文件的方法~