Python中的“*”和“**”

embedded/2024/10/18 7:51:48/

 1.接受任意长度形参,组成turple

python">def function(*args):# type(args)==turple# args==(1, 2, 3, 4)print(args)ant=0for i in range(len(args)):ant+=args[i]return antprint(function(1,2,3,4))  # 10

 2.接受任意长度形参,组成dict

python">def function(**args):# type(args)==<class'dict'>print(type(args))# {'a': 1, 'b': 2, 'c': 3, 'd': 4}print(args)ants = 0for key in args:ants+=args[key]return antsprint(function(a=1,b=2,c=3,d=4))   # 10# 注意这种方法是错误的
print( function({"a":1,"b":2,"c":3,"d":4}) )
# TypeError: function() takes 0 positional arguments but 1 was given
python">def my_function(**kwargs):# {'a': 1, 'b': 2}print(kwargs)my_dict = {'a': 1, 'b': 2}
my_function(**my_dict)

 3. 拿出参数

在list中 

python">def sample_function(a, b, c):print(a, b, c)list = [1, 2, 3]sample_function(*list)list2=[10,list,20]
list3=[10,*list,20]
# [10, [1, 2, 3], 20]
print(list2)
# [10, 1, 2, 3, 20]
print(list3)

在turple中 

python">def sample_function(a, b, c):print(a, b, c)list = (1, 2, 3)sample_function(*list)list2=(10,list,20)
list3=(10,*list,20)
# (10, (1, 2, 3), 20)
print(list2)
# (10, 1, 2, 3, 20)
print(list3)

4.函数传参对号入座

python">def test(a, b):print(f"a={a}, b={b}")d = {'b': 200, 'a':30}
test(**d)

参数和形参名称不对应,报错 

python">def test(c,d):print(c," ",d)
d = {'b': 100, 'a':10}
test(**d)
"""
File "d:\WorkSpace\MachineLearning\d2l_learn\mainTest2.py", line 4, in <module>test(**d)
TypeError: test() got an unexpected keyword argument 'b'
"""

题外话:看到*args和**kwds既不害怕了

python">class Person(object):def __init__(self) -> None:passdef __call__(self, *args: Any, **kwds: Any) -> Any:passdef __new__(cls) :pass


http://www.ppmy.cn/embedded/48592.html

相关文章

探索Edge

目录 1.概述 1.1.什么是浏览器 1.2.浏览器的作用 2.Edge 2.1.什么是Edge 2.2.诞生背景 2.3.历史版本 2.4.作用 2.5.优缺点 2.5.1.优点 2.5.2.缺点 3.对比 3.1.和360浏览器的对比 3.2.和谷歌浏览器&#xff08;Chrome&#xff09;的对比 4.未来展望 5.总结 1.概…

【数据结构】第十五弹---C语言实现直接插入排序

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、排序的概念及其运用 1.1、排序的概念与分类 1.2、排序运用 1.3、常见的排序算法 1.4、常见的排序算法性能测试 2、常见排序算法的实现 2…

【Android】实现Recyclerview的Item可以左右侧滑动的效果

项目需要 使用Recyclerview进行列表的数据加载的时候&#xff0c;需要对这个Item进行左右滑动进行操作的功能&#xff0c; 比如这样 需求实现 上面图来源于 https://github.com/anzaizai/EasySwipeMenuLayout 这是一个可以用来进行列表左滑、右滑的项目&#xff0c;可以集…

C# WPF入门学习主线篇(三十二)—— 创建Model、View和ViewModel

C# WPF入门学习主线篇&#xff08;三十二&#xff09;—— 创建Model、View和ViewModel 在前一篇文章中&#xff0c;我们介绍了MVVM&#xff08;Model-View-ViewModel&#xff09;模式的基本概念。本篇将深入探讨如何在实际开发中创建Model、View和ViewModel&#xff0c;并通过…

B+索引的分裂及选择率和索引基数

1、B树索引的分裂 B树索引页的分裂并不总是从页的中间记录开始&#xff0c;这样可能会导致页空间的浪费。 例子 比如下面这个记录&#xff1a; 1、2、3、4、5、6、7、8、9 由于插入是以自增的顺序进行的&#xff0c;若这时插入第10条记录然后进行页的分裂操作&#xff0c;那…

代码解读 | Hybrid Transformers for Music Source Separation[06]

一、背景 0、Hybrid Transformer 论文解读 1、代码复现|Demucs Music Source Separation_demucs架构原理-CSDN博客 2、Hybrid Transformer 各个模块对应的代码具体在工程的哪个地方 3、Hybrid Transformer 各个模块的底层到底是个啥&#xff08;初步感受&#xff09;&#xff1…

Ceph入门到精通-Crimson 和 Classic Ceph OSD 架构之间的区别

Crimson 和 Classic Ceph OSD 架构之间的区别 在典型的 ceph-osd 架构中,messenger 线程从 wire 读取客户端消息,它将消息放在 OP 队列中。然后,osd-op thread-pool 会提取消息,并创建一个事务并将其排队到 BlueStore,当前的默认 ObjectStore 实现。然后,BlueStore 的 k…

Vue项目中,利用iframe在线预览pdf/图片等

在components下新建 src\components\iFrame\index.vue <template><div v-loading"loading" :style"height: height"><iframe :src"src" frameborder"no" style"width: 100%; height: 100%" scrolling"…