我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Python中星号的五种用法小结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Python中星号的五种用法小结

1. 引言

星号* 往往被称为乘法运算符,是所有程序中最为常用的运算符号之一,在Python 中,星号还有很多隐藏的强大功能。
本文将用最容易理解的例子来解释星号*的 五个使用场景,从初级用法到高阶用法。
闲话少说,我们直接开始吧!

2. 乘法和幂运算符

最简单的用法是利用星号作为基本的运算符:

  • 单个 * 用于乘法运算
  • 两个 ** 表示幂运算

相关样例用例代码如下:

>>> 2*3
>>> 6
>>> 2**3
>>> 8

3. 函数接收数量不固定的入参

一般来说,函数往往接收固定数量的参数;但是如果我们需要更大的灵活性,比如当不确定将传递多少个参数时,此时将是星号* 发挥作用的时候。

def print_genius(*names):
    print(type(names))
    for n in names:
        print(n)

print_genius('Elon Mask', 'Du Fu ', 'Li Bai')
# <class 'tuple'>
# Elon Mask
# Du Fu 
# Li Bai
def top_genius(**names):
    print(type(names))
    for k, v in names.items():
        print(k, v)

top_genius(Top1="Elon Mask", Top2="Du Fu", Top3="Li Bai")
# <class 'dict'>
# Top1 Elon Mask
# Top2 Du Fu
# Top3 Li Bai

如上例所示,在定义函数时,我们可以定义一个以一个或两个星号为前缀的参数,以捕获不限制数量的参数输入。总结如下:

  • 以 一个 * 为前缀的参数可以将任意数量的参数以元组形式传入
  • 以两个 ** 为前缀的参数可以将任意数量的参数以字典形式传入

按照惯例,当我们定义的函数接收不定数量的参数时,我们一般采用以下函数定义形式:

def func(*args, **kwargs):
    pass

4. 限制函数入参仅以关键字形式输入

星号* 的一个非常酷的用法是使函数只能接收关键字参数。
很难理解,我们举例来说明:

def genius(*, first_name, last_name):
    print(first_name, last_name)

# genius('Li','Bai')
# TypeError: genius() takes 0 positional arguments but 2 were given
genius(first_name='Li', last_name='Bai')
# Li Bai

上述代码采用了星号* 限制了星号之后的参数必须采用关键字形式来调用上述函数。
实际上,如果我们只是想将一些参数限制为仅以关键字形式输入同时另一部分参数依旧按照位置形式输入,此时我们可以将位置参数放置在星号之前。
样例代码如下:

def genius(age, *, first_name, last_name):
    print(first_name, last_name, 'is', age)
genius(28, first_name='Li', last_name='Bai')
# Li Bai is 28

5. 可迭代对象解包操作

我们可以使用星号* 来解包可迭代对象,这将使我们的程序更加清晰且优雅。
例如,如果我们要将不同的可迭代对象(例如一个列表,一个元组和一个集合)组合成一个新列表,哪种方法最好?
显然,我们可以使用 for 循环来迭代所有元素并将它们逐一添加到新列表中,样例代码如下:

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = []
for a in A:
    L.append(a)
for b in B:
    L.append(b)
for c in C:
    L.append(c)
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]

上述实现方式虽然可以完成我们的目的,但是代码看起来太冗长了,而且不是很Pythonic 。
推荐的改进方式是使用列表生成式,如下所示:

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = [a for a in A] + [b for b in B] + [c for c in C]
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]

上述代码中,我们将三个 for 循环减少为一行列表生成式。它已经是Pythonic了,但不一定是最简单的!
是时候看看星号的强大之处啦。

A = [1, 2, 3]
B = (4, 5, 6)
C = {7, 8, 9}
L = [*A, *B, *C]
print(L)
# [1, 2, 3, 4, 5, 6, 8, 9, 7]

如上所述,我们可以使用星号作为可迭代项的前缀来解包它们的元素。
顺便说一句,如果我们利用一个*作为dict 的前缀,它的key 将被解包;如果我们使用双星号** 作为前缀,其value 将被解包;此时我们必须显示使用key 来接收解包后的value 。
样例如下:

D = {'first': 1, 'second': 2, 'third': 3}

print(*D)
# first second third

# print(**D)
# TypeError: 'first' is an invalid keyword argument for print()

print('{first},{second},{third}'.format(**D))
# 1,2,3

6. 扩展可迭代对象解包

解包的语法可以让我们的代码更加简洁,样例如下:

L = [1, 2, 3, 4, 5, 6, 7, 8]
a, *b = L
print(a)
# 1
print(b)
# [2, 3, 4, 5, 6, 7, 8]

7. 结论

星号* 是程序中最常用的运算符之一。除了用作乘法运算符之外,它在Python中还有一些优雅而强大的用法,这将帮助我们的代码变得更加Pythonic 。

本文重点讲解了星号的五种用法,并给出了相应的代码示例,您学废了嘛?

到此这篇关于Python中星号的五种用法小结的文章就介绍到这了,更多相关Python 星号内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Python中星号的五种用法小结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Python中星号的五种用法小结

本文主要介绍了Python中星号的五种用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-28

python中星号变量的几种特殊用法

一、什么是星号变量最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接收任意多个非关键字参数,在函数的*b位置上将其转化成元组,而双星号代表这个位置接收任意多个关键字参数,在**b位置上将其转化成字典:#!/usr
2022-06-04

Python中列出目录中的文件的五种方法小结

本文主要介绍了Python中列出目录中的文件的五种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-02-28

python传参时一个星号和两个星号的区别小结

Python传参时,一个星号(*)展开序列为参数,而两个星号(**)展开字典为关键字参数。一个星号用于函数参数列表传递多个值,两个星号用于函数参数字典传递。谨慎使用星号运算符,明确的参数名称和类型注释更佳。
python传参时一个星号和两个星号的区别小结
2024-04-02

Shell脚本中$符号的几种用法小结

目录Shell脚本中$符号的几种用法1.1 引用变量1.2 引用脚本或函数参数1.3 上条命令的返回值1.4 执行并获取命令输出1.5 表达式求值1.6 获取当前进程 ID1.7 后台运行的最后一个进程 ID1.8 获取 Shell 选项s
2022-06-04

Android Toast的用法总结(五种用法)

Toast大家都很熟,不多说。直接上图上代码。       具体代码如下: main.xml: 2022-06-06

C++ 计算时间差的五种方法小结

本文主要介绍了C++ 计算时间差的五种方法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-17

Python中取整的几种方法小结

前言 对每位程序员来说,在编程过程中数据处理是不可避免的,很多时候都需要根据需求把获取到的数据进行处理,取整则是最基本的数据处理。取整的方式则包括向下取整、四舍五入、向上取整等等。下面就来看看在Python中取整的几种方法吧。 1、向下取整
2022-06-04

Python中星号的使用方法有哪些

本篇内容介绍了“Python中星号的使用方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1. 引言星号* 往往被称为乘法运算符,是所
2023-07-05

TypeScript中括号用法小结

本文主要介绍了TypeScript中括号用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-16

PHP读取TXT文本内容的五种实用方法小结

本文介绍了五种读取PHPTXT文本内容的有效方法:file_get_contents():直接读取整个文件内容。fopen()和fgets():逐行读取文件,控制性更强。fread():读取指定字节数的文件内容。SplFileObject:面向对象方式读取文件,支持按行或按块读取。stream_get_contents():从指定的流中读取文本,包括文件句柄和网络连接。
PHP读取TXT文本内容的五种实用方法小结
2024-04-02

Mybatis-plus中QueryWrapper的多种用法小结

本文主要介绍了Mybatis-plus中QueryWrapper的多种用法小结,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
2023-05-14

python中list的五种查找方法

Python中是有查找功能的,五种方式:in、not in、count、index,find 前两种方法是保留字,后两种方式是列表的方法。下面以a_list = ['a','b','c','hello'],为例作介绍: string类型的话
2023-01-31

python中f‘{}‘用法小结

这篇文章主要介绍了python中f‘{}‘用法,f’{}’用法等同于format用法的简单使用,更加方便,本文给大家详细讲解,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
2023-03-01

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录