python 中*类型对象

简介: 【6月更文挑战第9天】

image.png
在 Python 中,* 符号在多种上下文中具有不同的含义,但当你提到“*类型对象”时,我猜测你可能是在谈论函数定义中的可变参数(variable arguments)或者函数调用中的参数解包(argument unpacking)。

  1. 可变参数(Variable Arguments)

在函数定义中,*args 允许你将任意数量的非关键字参数作为一个元组传递给函数。

def func(*args):
    for arg in args:
        print(arg)

func(1, 2, 3, 4)  # 输出:1 2 3 4
  1. 关键字参数解包(Keyword Argument Unpacking)

在函数调用中,你可以使用 **kwargs 来解包字典作为关键字参数传递给函数。

def func(**kwargs):
    for key, value in kwargs.items():
        print(f"{key} = {value}")

params = {
   
   "a": 1, "b": 2, "c": 3}
func(**params)  # 输出:a = 1 b = 2 c = 3
  1. 参数解包(Argument Unpacking)

在函数调用中,你也可以使用 * 来解包列表或元组作为位置参数,或者使用 ** 来解包字典作为关键字参数。

def func(a, b, c):
    print(a, b, c)

args = [1, 2, 3]
kwargs = {
   
   "c": 4}
func(*args, **kwargs)  # 输出:1 2 4

注意,在上面的例子中,虽然 args 列表包含了三个元素,但我们只使用了前两个,因为 kwargs 中的 "c": 4 覆盖了 args 中的第三个元素。

  1. 迭代解包(Iterable Unpacking)

在元组、列表、集合或其他可迭代对象的赋值操作中,* 可以用于解包可迭代对象中的元素。

a, *b, c = [1, 2, 3, 4, 5]
print(a)  # 输出:1
print(b)  # 输出:[2, 3, 4]
print(c)  # 输出:5

在这个例子中,a 接收了列表的第一个元素,c 接收了列表的最后一个元素,而 *b 则接收了列表中的所有其他元素。

目录
相关文章
|
20天前
|
缓存 监控 程序员
Python中的装饰器是一种特殊类型的声明,它允许程序员在不修改原有函数或类代码的基础上,通过在函数定义前添加额外的逻辑来增强或修改其行为。
【6月更文挑战第30天】Python装饰器是无侵入性地增强函数行为的工具,它们是接收函数并返回新函数的可调用对象。通过`@decorator`语法,可以在不修改原函数代码的情况下,添加如日志、性能监控等功能。装饰器促进代码复用、模块化,并保持源代码整洁。例如,`timer_decorator`能测量函数运行时间,展示其灵活性。
20 0
|
5天前
|
Python
python类型错误(TypeError)
【7月更文挑战第13天】
18 9
|
9天前
|
Python
python语法错误类型错误
【7月更文挑战第10天】
20 7
|
5天前
|
机器学习/深度学习 数据可视化 TensorFlow
使用Python实现深度学习模型:图像语义分割与对象检测
【7月更文挑战第15天】 使用Python实现深度学习模型:图像语义分割与对象检测
12 2
|
1月前
|
存储 Go 索引
牢记python对象的操作方式
【6月更文挑战第20天】在Python中,`hash()`和`is`帮助确定对象的相等性。`dir()`和`vars()`揭示对象的属性和内部表示,`__slots__`优化内存使用。列表和字典结构有不同的内存和性能特性,字典使用哈希表进行快速访问。
84 5
牢记python对象的操作方式
|
8天前
|
Python
python函数调用时参数类型错误
【7月更文挑战第11天】
9 1
|
8天前
|
Python
|
17天前
|
存储 JSON 测试技术
python中json和类对象的相互转化
针对python中类对象和json的相关转化问题, 本文介绍了4种方式,涉及了三个非常强大的python库jsonpickle、attrs和cattrs、pydantic,但是这些库的功能并未涉及太深。在工作中,遇到实际的问题时,可以根据这几种方法,灵活选取。 再回到结构化测试数据的构造,当需要对数据进行建模时,也就是赋予数据业务含义,pydantic应该是首选,目前(2024.7.1)来看,pydantic的生态非常活跃,各种基于pydantic的工具也非常多,建议尝试。
|
1月前
|
Python
Python中的模块对象__package__
【6月更文挑战第13天】
17 5
|
1月前
|
算法 Java 程序员
Python内存管理用引用计数(对象的`ob_refcnt`)跟踪对象,但循环引用(如A->B->A)可导致内存泄漏。
【6月更文挑战第20天】Python内存管理用引用计数(对象的`ob_refcnt`)跟踪对象,但循环引用(如A->B->A)可导致内存泄漏。为解决此问题,Python使用`gc`模块检测并清理循环引用,可通过`gc.collect()`手动回收。此外,Python结合标记清除和分代回收策略,针对不同生命周期的对象优化垃圾回收效率,确保内存有效释放。
20 3