python——*和**

2023-11-17

python中’*‘和’**'的使用分两个方面,一个是计算,另一个是参数传递过程中元素的打包解包


计算中的运用
'*‘和’**'在python中最常见的作用分别是‘相乘’和‘乘幂’,如下:
>>> a  = 2
>>> b = 3
>>> c = 5*6
>>> d = 4**3
>>> e = a*b
>>> f = a**b

需要注意的是在numpy中星号和双星号对于array和matrix是不同的,参见Numpy的array与Python的list的异同以及numpy的array与matrix的异同。简单来说星号和双星号对于array都是点乘,对于matrix都是矩阵乘。

参数传递中的打包和解包
对函数传递的参数进行打包(打包成元组tuple或字典dictionary)和拆解(分解成单个元素),其中元组tuple的打包和解包使用单星号‘*’,字典dictionary的打包和拆解使用‘**’。
注:非关键字参数和关键字参数1

打包

打包就是将传递给函数的任意多个(也可以是零个)非关键字参数/关键字参数打包成一个元组/字典(元组只能接收非关键字参数,字典只能接收关键字参数)
元组打包的例子

#!/usr/bin/env python
#coding=utf-8
def tuple_pack(a, *b):
    print(a)
    print(b)
tuple_pack(1,2,3,4,5)

输出的结果是:
(2,3,4,5)

在该例子中,‘*b’这个位置可以接收任意多个(也可以是零个)非关键字参数,并将收集到的参数转换成一个元组。
字典打包的例子

#!/usr/bin/env python
#coding=utf-8
def dictionary_pack(a, **b):
    print(a)
    print(b)
dictionary_pack(1,one=1,two=2,three=3,four=4)

输出的结果是:

{'four':4,'one':2,'three':4,'two':3}

在该例子中,‘**b’这个位置可以接收任意多个(也可以是零个)关键字参数,并将收集到的参数转换成一个字典。
元组和字典混合的例子

#!/usr/bin/env python
#coding=utf-8
def tuple_dictionary_pack(*a, **b):
    print(a)
    print(b)
tuple_dictionary_pack(1,2,3,one=2,two=2)

输出的结果是:

(1,2,3)
{'one':4,'two':5}

在该例子中,‘*a’这个位置负责接收任意多个非关键字参数,‘**b’这个位置可以接收任意多个关键字参数,注意二者在函数定义中的顺序不能颠倒。

拆解

拆解就是将传递给函数的一个列表、元组或字典拆分成独立的多个元素然后赋值给函数中的参变量(包括普通的位置参数,关键字参数,元组也即‘*’非关键字参数,字典也即‘**’关键字参数)。在解字典时会有两种解法,一种使用‘*’解,解出来传给函数的只有键值(.key)另一种是用**解,解出来的是字典的每一项。
位置变量和元组混合拆解的例子

#!/usr/bin/env python
#coding=utf-8
def variable_tuple_unpack(a,b,c,*d):
    print(c)
    print(d)
ee = [1,2,3,4,5]
variable_tuple_unpack(*ee)

输出的结果是:

(4,5)

元组和字典混合的例子

#!/usr/bin/env python
#coding=utf-8
def tuple_dictionary_unpack(*a,**b):
    print(a)
    print(b)
ee = (1,2,3)
ff = {'one':1,'two':2,'three':3} 
tuple_dictionary_unpack(*ee,**ff)

输出的结果是:

(1,2,3)
{'one':1,'three':3,'two':2}

字典的键值解成元组的例子

#!/usr/bin/env python
#coding=utf-8
def tuple_dictionary(*a):
    print(a)
ff = {'one':1,'two':2,'three':3} 
tuple_dictionary(*ff)

输出的结果是:

('one','three','two')
1
非关键字参数指的就是位置参数,在函数参数传递中根据顺序对变量赋值;关键字参数可以根据变量的关键字乱序赋值,关键字参数也会在函数定义中赋予初值。另外,非关键字参数不可以通过关键字赋值,但是关键字参数可以通过位置参数赋值;而且在函数定义时,关键字参数后不能有非关键字参数。 ↩︎
————————————————
版权声明:本文为CSDN博主「xiaoquinNUDT」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xiaoqu001/article/details/78823498

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python——*和** 的相关文章

随机推荐

  • 【ML on Kubernetes】第 10 章:构建、部署和监控模型

    大家好 我是Sonhhxg 柒 希望你看完之后 能对你有所帮助 不足请指正 共同学习交流 个人主页 Sonhhxg 柒的博客 CSDN博客 欢迎各位 点赞 收藏 留言 系列专栏 机器学习 ML 自然语言处理 NLP 深度学习 DL fore
  • 从主机备份ubuntu到虚拟机的坑

    系统用的是16 04 1 备份过程 直接采用这个方法 不过我是直接用的镜像 data放在U盘 没有做成启动U盘 参考链接1 问题就来了 直接挂载镜像使用的是CD ROM 可能出现权限问题无法修改 记住要提前把必要的文件保存在虚拟机的系统下
  • Python自动化测试专栏——选择元素基本方法之CSS选择器

    CSS选择器选择元素 1 根据 tag名选择元素 选择 所有的tag名为div的元素 wd find elements by css selector div 2 根据id属性选择元素 wd find element by css sele
  • tensorflow如何更新到最新的版本

    背景 前面在anaconda中使用tensorflow时 在深度学习目标检测的那方面出现了问题 提示 no op 当你在百度上百度这个错误的时候 很多的CSDN博主会告诉你是因为你的tensorflow版本过低 准备 那就是更新tensor
  • MySQL——习题:每个部门当前员工最高薪水

    有一个员工表dept emp简况如下 有一个薪水表salaries简况如下 获取所有部门中员工薪水最高的相关信息 给出dept no emp no以及其对应的salary 按照部门编号升序排列 以上例子输出如下 解法1 SELECT d1
  • 移植Qt4.8.4项目到QT5.2上时遇到的一些问题

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 问题1 Qt 5 2 使用原来的QT4 8 4项目时QWebView QWebFrame等类无法编译通过 出现原因 QWebView QWebFrame QWebPage
  • OJ: 蛇形矩阵 螺旋矩阵

    题目描述 题目说明 在一个N N的方阵中 填入1 2 N共N个数 并要求构成如下的格式 N lt 10 例 输入描述 多组数据 每行读入一个N 输出描述 对应输出N N的蛇形矩阵 每个数字占3格子 每个蛇形矩阵之间用空行分割 输入样例 3
  • 【Git】git pull总是要输入账号和密码

    git config global credential helper store 之后再次执行git push 或者git pull这时候只需要在输入一次用户名和密码下次就不需要了 这个命令则是在你的本地生成一个账号密码的记录 这样就不用
  • Python中执行MySQL语句, 遇到同时有单引号, 双引号处理方式 !r, repr()

    SQL语句 insert cmd INSERT INTO 0 SET 1 format db conn firmware info table join 0 1 r format k str v for k v in info dict i
  • linux读取按行读写文本文件

    include
  • 迪杰斯特拉算法浅析

    所谓的迪杰斯特拉算法 就是一个用来求一个图中某点到其它点的最短路径的算法 大致方法 遍历所有节点 找到离起点最近的一个点 那么这个点到起点的最小距离肯定是起点到这个点的这条边的权值 然后标记这个点被使用过了 以1中的那个点为中继 更新其它节
  • 进程和线程的区别

    简介 进程 进程是计算机中运行程序的实例 是操作系统进行资源分配和调度的基本单位 每个进程都有独立的内存空间和系统资源 不同进程之间相互独立 彼此不能直接访问对方的内存 进程之间的通信需要通过操作系统提供的特定机制 如管道 共享内存等 个人
  • nginx 之安全配置

    前言 看官网官网 一 控制并发连接数 1 在默认发布目录新建一个目录并保存一张图片 传送文件到server1 打开浏览器就能看到图片 2 测试 查看日至情况 cat usr local nginx logs access log http状
  • 时间计时android程序,Android实现时间倒计时功能

    本文实例为大家分享了Android实现时间倒计时功能展示的具体代码 供大家参考 具体内容如下 效果展示 MainActivity 主页面代码 public class MainActivity extends Activity privat
  • Nacos配置中心落地与实践

    一 背景 目前 我们公司各团队配置中心使用各异 电商使用的是 Spring Cloud Config 支付使用的是 Apollo APP 团队使用的是 Apollo Nacos 为了更好地应对公司业务的发展 统一基础设施技术栈必不可少 图片
  • ChatGPT-Next-Web:Vercel 和 Cloudflare 的快速部署

    项目地址 GitHub Chanzhaoyu chatgpt web 用 Express 和 Vue3 搭建的同时支持 openAI Key 和 网页 accessToken 的 ChatGPT 演示网页 依赖安装 1 安装node cur
  • BI-SQL丨行列转换

    行列转换 行列转换 在SQL Server中属于常见的基本操作 无论是搭建数仓 还是通过PowerBI进行数据分析 我们总会接触到各式各样的数据源 而在这些数据源中 除了标准的大型数仓外 我们很少能够拿到标准规范的数据表结构 接触最多的 往
  • 最熟悉的陌生人:ListView 中的观察者模式

    http blog csdn net u011240877 article details 52683711 RecyclerView 得宠之前 ListView 可以说是我们用的最多的组件 之前一直没有好好看看它的源码 知其然不知其所以然
  • tar分卷压缩解压

    1 使用tar分卷压缩 格式 tar cvzf filedir split d b 50m filename 样例 tar cvzf dir split d b 10m dirname tar gz 将 dir 打包 并切割为 10m 的包
  • python——*和**

    python中 和 的使用分两个方面 一个是计算 另一个是参数传递过程中元素的打包和解包 计算中的运用 和 在python中最常见的作用分别是 相乘 和 乘幂 如下 gt gt gt a 2 gt gt gt b 3 gt gt gt c