彻底掌握Python中 * 号

这篇具有很好参考价值的文章主要介绍了彻底掌握Python中 * 号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python中的 *是一个特殊的符号,在其他编程语言中,它最广为人知的用途就是作为乘法运算的符号。
而在Python中,它的用途远不止如此。

本文总结了Python中*的所有用途,以供参考。

1. 算术运算

用来做算术运算几乎是所有编程语言采用的方法,
在Python中,
可作为乘法运算和指数运算。

比如:

a = 3
b = 5
print("乘法:3×5 = {}".format(a * b))
print("指数:3的5次方 = {}".format(a**b))

# 运行结果
乘法:3×5 = 15
指数:3的5次方 = 243

2. 构造与解构

除了基本的算术运算,*在Python中还可以用在数据结构的构造和解构中。

2.1. 列表的构造

如果要在一些数据中间的某个位置插入一个现有的列表,来构造一个新列表的话,
大部分语言只能通过循环来实现。

Python中的*,可以让我们用一行代码就实现。

lst = [1, 2, 3]
new_lst = [0, lst, 4, 5]
print("不使用*号,构造后的列表:{}".format(new_lst))

new_lst = [0, *lst, 4, 5]
print("使用*号,构造后的列表:{}".format(new_lst))

# 运行结果
不使用*号,构造后的列表:[0, [1, 2, 3], 4, 5]
使用*号,构造后的列表:[0, 1, 2, 3, 4, 5]

使用*,可以自动将现有列表中的元素展开。

2.2. 列表的解构

简单来说,解构就是将列表中的元素分配给几个变量。
比如下面的代码,利用*,可以迅速将一个列表中的元素分为3个部分:

# 列表解构
first, *lst, last = new_lst
print("列表第一个元素:{}".format(first))
print("列表中间元素:{}".format(lst))
print("列表最后一个元素:{}".format(last))

# 运行结果
列表第一个元素:0
列表中间元素:[1, 2, 3, 4]
列表最后一个元素:5

2.3. 字典的构造

字典的构造是用 两个*号

dict = {"name": "harry", "age": 40}
new_dict = {"gender": "male", **dict}
print("构造后的字典:{}".format(new_dict))

# 运行结果
构造后的字典:{'gender': 'male', 'name': 'harry', 'age': 40}

这样,就把已有字典中的key/value展开到新的字典中去了。

注意,字典类型的变量如果不加双*号,是会报错的,比如:

new_dict = { "gender": "male", dict}
# 这样写会报语法错误

字典只有构造的方法,没有类似列表的解构方法。

3. 函数参数

*用在函数参数中,可以定义更加灵活的参数形式。

3.1. 不定长参数

不定长参数让函数更加灵活,比如 print函数的参数就是不定长的,传入几个参数,它就打印几个。
再比如,我们构造一个求和的函数,希望可以对任意数量的整数求和,就可以用*来实现。

# 求和函数
def add(*numbers):
    sum = 0
    for number in numbers:
        sum += number

    return sum

使用此函数时,可以传入任意数量的参数:

# 可以传入任意数目的参数
sum = add(1, 2, 3)
print("1~3 求和:{}".format(sum))
sum = add(1, 2, 3, 4)
print("1~4 求和:{}".format(sum))

# 运行结果
1~3 求和:6
1~4 求和:10

当然,对于有 * 的参数,也可以传入列表变量作为参数,不过列表变量前要加 *

lst = [1, 2, 3]
sum = add(*lst)  # 变量 lst 前不加 *号 会报错
print(sum)

3.2. 不定长的关键字参数

所谓关键字参数,就是传入参数的时候,不仅传入参数的值,还传入参数的名称。
比如下面一个模拟改变对象属性的函数:

def change(obj, **attrs):
    for key, val in attrs.items():
        obj[key] = val

通过参数**attr,函数可以修改obj对象的任意属性。
这样的好处是不用定义多个不同的函数来修改obj的不同属性。

person = {"name": "harry", "age": 30, "gender": "male"}
print("修改前:{}".format(person))

# 调用方式
change(person, age=40, name="jack")
print("修改后:{}".format(person))

# 运行结果
修改前:{'name': 'harry', 'age': 30, 'gender': 'male'}
修改后:{'name': 'jack', 'age': 40, 'gender': 'male'}

4. 限制函数调用

最后的这个*的用途比较罕见,如果你知道这个用途的话,我会对你很佩服。

先定义一个示例函数:

def self_introduce(name, age):
    print("大家好,我是 {}, 今年 {} 岁。".format(name, age))

这个函数很简单,传入nameage两个参数,然后打印一段简单的自我介绍。

Python中,我们可以用下面两种方式调用这个函数:

# 方式一
self_introduce("harry", 40)
# 运行结果
大家好,我是 harry, 今年 40 岁。

# 方式二
self_introduce(name="harry", age=40)
# 运行结果
大家好,我是 harry, 今年 40 岁。

两种方式的效果是是一样的。
方式一也可以叫做位置参数调用法;
方式二也可以叫做关键字参数调用法。

4.1. 只能用关键字参数方式调用

如果我们想限制self_introduce只能用方式二(关键字参数)来调用,可以:

# 函数的第一个参数用 * 号
def self_introduce(*, name, age):
    print("大家好,我是 {}, 今年 {} 岁。".format(name, age))

这样调用时,只能使用方式二了。

# 这样调用会报错
self_introduce("harry", 40)

# 可以正常执行
self_introduce(name="harry", age=40)

4.2. 只能用位置参数方式调用

如果想限制self_introduce只能用方式一(位置参数)来调用,可以:

# 函数的最后一个参数用 / 号
def self_introduce(name, age, /):
    print("大家好,我是 {}, 今年 {} 岁。".format(name, age))

这样调用时,只能使用方式一了。文章来源地址https://www.toymoban.com/news/detail-750295.html

# 可以正常执行
self_introduce("harry", 40)

# 这样调用会报错
self_introduce(name="harry", age=40)

到了这里,关于彻底掌握Python中 * 号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 彻底掌握Python中 * 号

    Python 中的 * 号 是一个特殊的符号,在其他编程语言中,它最广为人知的用途就是作为乘法运算的符号。 而在 Python 中,它的用途远不止如此。 本文总结了 Python 中* 号 的所有用途,以供参考。 号 用来做算术运算几乎是所有编程语言采用的方法, 在Python中, 号 可作为乘法运

    2024年02月05日
    浏览(39)
  • 特殊符号引发的bug,C#去除不可作为文件名的特殊符号

    背景 前段时间小编开发了一个控制台程序,把数据库中的数据取出来按照编码名称分别存储文件,存储文件之前检查是否存在当前文件,如果存在删除。开始小批量的数据还挺顺利的,当批量执行问题就来了,每次执行到一半时,创建的文件不增加反而变少了,经过日志捕捉

    2024年02月16日
    浏览(44)
  • 掌握Python的X篇_38_类的常见特殊方法让对象更好看

    python中所有的特殊类方法,都是为了让类或者说对象更加好用。 我们之前实现的类,实例化对象,打印的结果可读性不好。 如果我们想要更友好的输出,我们需要自己实现一个特殊的类方法 __repr__ ,这个方法必须要返回一个字符串。 当我们打印实例化对象时,其实就是打印

    2024年02月13日
    浏览(29)
  • viewfs://为Hadoop 中的一个特殊文件系统

    viewfs:// 是 Hadoop 中的一个特殊文件系统 URI,用于访问 Hadoop 的视图文件系统(ViewFS)。 ViewFS 是 Hadoop 提供的一种虚拟文件系统,它可以将来自多个底层文件系统的文件统一管理和访问。 通过 ViewFS,你可以在不知道底层真实文件系统细节的情况下,对文件进行读取和写入操作

    2024年02月06日
    浏览(37)
  • Kotlin系列之?、?:、!!、:: 特殊符号

    声明一个变量可为空。         表示这个变量可以为null。该变量如果为null时,不会执行该变量后面的逻辑,也不会抛出空指针异常,俗称空安全。如果不为null,会正常执行该变量后面的内容。 非空断言运算符         加在变量后面,表示该变量如果为null时,会抛出

    2024年02月16日
    浏览(174)
  • Shell语法解释特殊符号 # %

    在 Bash 中, % 符号通常表示删除字符串的后缀。具体来说, ${var%pattern} 表示从变量 $var 的结尾删除匹配模式 pattern 的子串,并返回删除后的字符串。 例如,如果 $namebin 的值为 file.bin ,那么 ${namebin%.bin} 的结果就是 file ,因为它删除了 $namebin 变量结尾的 .bin 后缀。 需要注意

    2024年02月01日
    浏览(33)
  • Linux 终端特殊符号含义大全

    Linux 终端中有许多特殊符号,本文对常用的进行了总结: $ 表示变量/普通终端用户:用于引用变量的值/表示终端中的普通用户。 # 表示注释/超级用户:用于在脚本中注释代码/表示终端中的超级用户。 / :根目录/目录分隔符。 ~ :当前用户的主目录。 . :当前目录。 .. :上

    2024年02月11日
    浏览(44)
  • python中的符号含义

    在Python中,/符号有两种作用: 进行除法运算:当两个操作数都是整数类型时,使用/进行除法运算,结果将会是浮点数类型。例如,5/2的结果是2.5。 执行路径操作:在路径字符串中,/符号用来分隔文件夹和文件名。例如,在Windows系统中,路径可以是’C:/Users/Username/Documents

    2024年02月09日
    浏览(47)
  • Vue之html中特殊符号的展示

    在html中使用特殊字符时直接展示会报错,需要使用实体名称或者实体编号才能展示。

    2024年02月10日
    浏览(47)
  • chatgpt赋能python:Python代码中的符号

    Python是一种简单易学的编程语言,拥有着广泛的应用领域,比如数据分析、人工智能、Web开发等等。在Python的编程过程中,符号是我们必须要熟悉的一部分。在本文中,我们将介绍Python代码中常见的符号,并为你提供代码中符号的加粗说明。 等号是Python中最常见的符号之一。

    2024年02月07日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包