python 星号(*) 还能这么用-世界视讯
博客园 2023-06-20 13:27:15

哈喽大家好,我是咸鱼


(相关资料图)

今天跟大家介绍一下 python 当中星号(*)的一些用法

首先大家最常见的就是在 python 中 *是乘法运算符,实现乘法

sum = 5 * 5 # 25

除此之外,还有一种常见的用法就是 *号操作符在函数中的用法

单星号(*)在函数中用法

举个例子,你有一个函数,用来实现两个数求和

def add(num1, num2):    return num1 + num2print(add(1,2)) # 3

上面这个函数只能接收固定个数(两个)的参数,那如果我想要求任意数量的值的和该怎么办?

可以在形参部分加一个 *

def add(*num):sum = 0for i in num:        sum += num   return sum

在函数定义的时候形参前面加一个 *号,就可以用任意数量的参数来调用函数,如果检查数据类型,会发现 num 是一个元组(tuple)

即将所有传入函数的位置参数打包成一个元组

#使用任意数量的参数来调用函数add(1, 2, 3, 4) # 10

那如果函数在定义的时候就已经固定了形参的个数

def add(num1, num2, num3):    return num1 + num2 + num3

我们想要传递一个列表参数(假设这个列表有三个元素),可以这么调用函数

my_list = [1, 2, 3]add(my_list[0], my_list[1], my_list[2])

这样子调用要多敲几个键盘,多麻烦。我们用 *号来实现,前面我们看到 *可以用在函数定义的时候的用法

在函数调用的时候加一个 *号可以将一个列表或元组解构成多个变量

my_list = [1, 2, 3]add(*my_list)
双星号(**)在函数中的用法

上面我们介绍了 *操作符在函数定义的时候可以用来接收多个参数,并且将参数打包成一个元组,在函数调用的时候可以对列表或者元组中的元素进行解构

那如果对象是字典,我们可以使用双星号操作符(**

举个例子,假设有下面的函数

def user_info(username, email, phone, date_of_birth):    user = get_user(username)    user.email = email    user.phone = phone    ...

如果我们用关键字参数(keyword arguments,kwargs)调用它,就是下面的效果

user_info("kanye", email="blog@example.com", phone="88888", date_of_birth="2000.08.15")

那如果我需要增加传参个数,我就不得不去函数定义那里添加形参,这么做太麻烦了

我们可以这么做,我们在 kwargs形参前面加了双星号,用于接收任意数量的关键字参数

def user_info(username, **kwargs):    user = get_user(username)    user.email = kwargs["email"]    user.phone = kwargs["phone"]    ...

在形参中,**kwargs的关键是双星号,你完全可以使用其他名字例如 **usr(还是建议用 kwargs)

在函数定义中,** 操作符会把传进来的参数打包成字典

当然,我们可以像使用 Python 中的其他字典一样使用 kwargs字典,这样会使代码更简洁易懂

def user_info(username, **kwargs):    user = get_user(username)    for k,v in kwargs.items():    ....

除此之外,**操作符也可以用在函数调用的时候,用于将一个字典解构成多个变量

dict = {"email":"blog@example.com""phone":"88888"    ...}user_info(username,**dict)
单星号接收非关键字参数

在函数定义的时候,单星号可以独立使用,不需要变量(参数)名称,在Python中是一个完全有效的函数定义

def my_function(*, keyword_arg):    ...

在上面的函数定义中,*号参数会接收所有非关键字参数(位置参数),然后剩下的关键字参数传给 keyword_arg

如果你在调用的时候只传了位置参数,就会报错

my_function(1)"""TypeError: my_function() takes 0 positional arguments but 1 was given"""

在上面代码中,函数my_function定义了一个命名关键字参数keyword_arg,但在函数调用时使用位置参数 1 来传递参数,而不是使用关键字参数的方式,所以报错

函数定义中,使用*来标识位置参数结束,之后的参数都被视为命名关键字参数,这意味着在函数调用时必须传递关键字参数

那如果我们想强制只使用位置参数,而不是上面案例中的只使用关键字参数该怎么办

我们使用 /号来实现

def only_positional_arguments(arg1, arg2, /):    ...

如果你传递关键字参数,会发生报错,是不是很有意思

only_positional_arguments(arg1=1, arg2=2)"""TypeError: only_positional_arguments() got some positional-only arguments passed as keyword arguments: "arg1, arg2""""
星号拓展用法

1、单星号构建或解构列表

比如说有下面两个列表

my_list_1 = [1, 2, 3]my_list_2 = [10, 20, 30]

我们打算合并这两个列表,可以用 +操作符

merged_list = my_list_1 + my_list_2

但是单星号更灵活,比如说我们在合并的时候在中间加一个元素

num=42merged_list = [*my_list_1, some_value, *my_list_2]

我们知道,解构列表元素的时候可以这么干

my_list = [1, 2, 3]a, b, c = my_list# a -> 1# b -> 2# c -> 3

上面每个变量都存储了列表中的元素,那假设我打算将列表中的第一个和最后一个元素放在指定变量中,中间的元素还是作为列表,我该怎么办

可以使用单星号

my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]a, *b, c = my_list# a -> 1# b -> [2, 3, 4, 5, 6, 7, 8, 9]# c -> 10

需要注意的是,单星号接收的对象是列表

my_list = [1, 2, 3]a, *b, c = my_list# a -> 1# b -> [2]# c -> 3

2、双星号构建字典

同理,双星号可以用于构建字典

dict1 = {    "age": "22"}dict2 = {    "email": "blog@example.com"}user_dict = {"username": "kanye", **dict1, **dict2}

python 星号(*) 还能这么用-世界视讯

2023-06-20 13:27:15

【世界快播报】扮靓海上花园 焕发发展活力——浙江温州洞头乡村振兴一线观察

2023-06-20 12:39:05

环球百事通!安迪萨姆伯格的穿越蜘蛛侠角色确认

2023-06-20 12:06:48

公司问答|亚光股份:公司不锈钢目前没有采取套期保值

2023-06-20 11:37:57

21汽车视频|汽车合资新模式:星际魅族联手极星成立合资公司

2023-06-20 11:11:31

以色列国家旅游部与新浪微博签署战略合作协议-世界即时看

2023-06-20 10:58:39

环球观察:探寻化石王国 让和政走向世界——晚新生代青藏高原古生物·古环境与和政古生物化石研讨会在我州引发强烈反响

2023-06-20 10:32:32

美邦服饰(002269):拟3亿元出售位于辽宁省沈阳市和平区太原街1号、1-1号店铺

2023-06-20 10:00:19

传音控股:6月19日融券卖出21.62万股,融资融券余额8.8亿元

2023-06-20 09:43:05

最新资讯:阿里内部人士称梅西直播没有超预期

2023-06-20 09:14:59

江山市气象台发布暴雨黄色预警【Ⅲ级/较重】【2023-06-20】 当前关注

2023-06-20 08:42:11

当前速读:安徽五河:漴河之上 百舸奋楫迎端午

2023-06-20 08:10:15

勇士官推晒库里新秀定妆照:谁将成为下一位震动金州的新秀?_短讯

2023-06-20 07:17:32

世界今日讯!32家企业拟融资超21亿,河南省政府投资基金尼龙产业专题路演会举行

2023-06-20 06:08:52

韵达5月快递服务业务收入37.58亿元|天天观速讯

2023-06-20 05:13:27

【环球快播报】未转变者英文怎么说_未转变者英文

2023-06-20 02:49:17

【环球热闻】放大微信字体怎么弄_如何放大微信字体简介介绍

2023-06-20 00:52:51

环球消息!“峰”云十载•2023岳麓峰会|金蝶郭旭光:回湖南是金蝶的必然选择

2023-06-19 22:46:25

上海市政府常务会部署推动会展经济高质量发展 实施促进外商投资全球伙伴计划-焦点要闻

2023-06-19 21:56:37

沐猴而冠的意思和来源(沐猴而冠的意思)_即时

2023-06-19 21:10:35

世界今热点:迪丽热巴穿碎花吊带裙秀美背 复古烟熏妆性感魅惑

2023-06-19 20:34:06

深康佳A: 2022年年度股东大会决议公告

2023-06-19 19:12:07

今日快看!液流电池,正在储能市场「分庭抗锂」?

2023-06-19 18:57:00

wps一级标题二级标题怎么设置(二级标题怎么设置)|天天头条

2023-06-19 18:08:45

天天视点!预计未来一周 强降雨和高温仍是我国天气两大“主角”

2023-06-19 17:55:27

全球微头条丨福山经开区推出“拉通”新举措,持续扩大园区企业“朋友圈”

2023-06-19 17:08:54

蓝厅观察丨中美外长闭门磋商 到底谈了啥

2023-06-19 17:00:25

焦点消息!叶集将举办首届定制家居暨供应链产业博览会

2023-06-19 16:20:36

视点!普林斯顿大学推出Infinigen AI模型,可生成真实自然环境3D场景

2023-06-19 15:58:17

安庆高新区山口乡军绿色志愿服务队携手儿童共迎端午佳节

2023-06-19 15:13:06

第二十九届北京国际图书博览会闭幕 版权贸易成果丰硕

2023-06-19 14:50:38

世界快讯:当“空警”变“辅警”,如何适应好派出所工作?

2023-06-19 14:21:07

科普中药知识|天天热点

2023-06-19 13:58:49

世界速读:野钓鲤鱼自制鱼饵配方:鲤鱼重味型,饵料对了口,连竿到手酸

2023-06-19 13:07:05

广西崇左市食品药品检验所开展“实验室开放日”活动-今日最新

2023-06-19 12:30:04

全球新动态:外地来京就医16项治疗性辅助生殖技术项目可以医保报销吗

2023-06-19 11:51:00

丈夫偷吃小16岁女!她心碎诉离挨轰:闹够没?网一面倒怒挺_世界新视野

2023-06-19 11:16:56

2023广东高考查分攻略(时间+入口)_环球热议

2023-06-19 10:49:20

最新快讯!安克创新拟募资布局便携及户用储能产品研发及产业化

2023-06-19 10:51:21

如何看待部分地区发布网约车饱和预警

2023-06-19 10:15:29

烧烤、小龙虾,比比谁做得更好_报资讯

2023-06-19 10:10:17

弘扬中华民族传统美德手抄报_弘扬中华民族传统美德

2023-06-19 09:36:32

阆中旅游景点大全介绍 阆中旅游景点大全_世界快资讯

2023-06-19 09:24:09

今日要闻!马云在东京大学开讲 研讨“创新和企业家精神”

2023-06-19 09:28:40

海南“618”数据呈现购销两旺势头

2023-06-19 08:52:30

插画之梦:Painter绘画造型的秘密

2023-06-18 21:59:37

以优质志愿服务为亚运添彩 杭州上城137万余名市民群众文明迎亚运-世界动态

2023-06-18 20:56:28

每日速递:“植物大熊猫”银杉迎来新生

2023-06-18 20:26:15

全球热消息:浙商银行(02016.HK):拟以“10配3”基准进行A股配股 配股价格为2.02元/股

2023-06-18 19:35:16

当前热议!起亚EV6将于6月份开启盲订 8月成都车展期间上市

2023-06-18 19:05:06

视点!咸宁市气象台发布暴雨黄色预警【III级/较重】【2023-06-18】

2023-06-18 18:03:43

「早稻叽雅典娜二创赛」正式开始!

2023-06-18 17:17:10

永泰能源(600157.SH):半年度净利预增31.11%~44.10%_全球球精选

2023-06-18 16:57:09

关于我仍的文案

2023-06-18 16:16:07

道教雷斋月是什么时候_斋月是什么时候|资讯

2023-06-18 15:35:54

舍利子一颗真的值多少钱(一颗舍利子多少钱)

2023-06-18 14:51:44

京东二十周年发布“ 35711 ”梦想 未来将提供超过 100 万就业岗位

2023-06-18 13:29:17

每日热讯!火电行业深度:煤电压舱石地位不改,继续看好盈利修复

2023-06-18 12:32:54

为排海做铺垫?日本东电7月起将允许民众参观福岛第一核电站|环球简讯

2023-06-18 11:38:09

环球速讯:Valve发布新版Steam客户端:引入新框架,全新界面,增加笔记等功能

2023-06-18 10:56:12

全球要闻:福建省漳州市发布大雾黄色预警

2023-06-18 10:27:19

全球热点评!红楼梦里,三个疯狂嫁妹的哥哥,其妹才貌双全,为何被权贵嫌弃

2023-06-18 09:54:18

天天时讯:安阳市永飞金属制造有限公司

2023-06-18 09:07:14

世界热资讯!人间四月芳菲尽打一中草药名 人间四月芳菲尽打一中草药

2023-06-18 08:57:17

世界热门:恐龙帝国崛起的真正奥秘

2023-06-18 07:53:01

环球最资讯丨红海行动迅雷下载地址(嘘禁止想象迅雷下载地址)

2023-06-18 07:01:40

2022 年一级消防工程师《消防安全技术实务》考前模拟卷(二)一单项选择题71-当前讯息

2023-06-18 06:23:25

每日看点!旧设备出口到越南有没有特殊要求_旧设备出口

2023-06-18 04:54:58

天天视点!速冻水饺是“垃圾食品”,没营养?大部分人都误解了!

2023-06-18 01:46:17

每日速读!防治荒漠化能有多少种可能?来看看这份“中国良方”

2023-06-17 22:49:49

【冲刺旅发 一线有我】北湖区机关事务服务中心:当好旅发后勤保障 “服务员”|世界聚看点

2023-06-17 22:13:06

黔西市:落实强制报告制度 共同呵护未成年人|即时

2023-06-17 21:31:02

今日热讯:毛裤的编织方法 手工毛裤编织方法

2023-06-17 19:57:26

片单少了,但热情高了:今年上影节释放了什么信号?-当前通讯

2023-06-17 19:29:03

【环球时快讯】多图直击!2023年河南省校园足球文化节来了

2023-06-17 18:13:50

【全球报资讯】刀郎咋回事_刀郎为什么会坐牢

2023-06-17 17:53:45

常熟古里:战略抉择!打造乡村“微度假”旅游节|今日热议

2023-06-17 17:11:53

农村这种了哥王,全株有毒,却是很厉害的解毒植物,跌打损伤找它 热闻

2023-06-17 16:29:22

三星 Galaxy Tab S9 系列平板海报曝光

2023-06-17 15:53:21

囚妃传下载_囚妃传 当前视点

2023-06-17 14:58:36

2019美洲虎I-Pace射程234英里 落后于Model X_每日热文

2023-06-17 14:00:45

世界快播:金桔几月成熟 金桔几月成熟上市

2023-06-17 13:39:00

【世界新要闻】如果诈骗金额50万,家属将50万补偿了被诈骗人,会如何判刑

2023-06-17 12:41:14

号码定位系统电脑版_号码定位 天天短讯

2023-06-17 11:51:04

如何科学应对猴痘病毒?专家回应热点关切_全球看点

2023-06-17 11:11:31

萧炎被斗宗强者重创,美杜莎看后满脸担忧,网友:求求你们领证吧 今日热搜

2023-06-17 10:37:03

魔兽世界目标宏暴风雨_魔兽世界目标宏_世界球精选

2023-06-17 10:13:35

严查!全区范围!斗门作出明确...

2023-06-17 09:43:11

天天简讯:名记:勇士预计追梦将会跳出合同 球队希望与之续约

2023-06-17 08:52:56

“我们在一起就会了不起” 台青写歌献给两岸青年

2023-06-17 08:56:53

2023文化和旅游安全宣传咨询日活动在房山区十渡镇举办|当前快看

2023-06-17 07:57:16

资讯推荐:shoes音标怎么写(shoes音标)

2023-06-17 07:16:42

办理护照需要什么(办理护照需要什么条件)

2023-06-17 06:23:48

联通volte是什么功能_联通volte 天天热推荐

2023-06-17 05:52:48

6月16日基金净值:财通集成电路产业股票A最新净值1.8437,涨2.65%

2023-06-17 03:27:52

文咏珊美图太性感妩媚!肤白貌美身材火辣风情万种 环球焦点

2023-06-17 02:00:32

世界今头条!股票行情快报:苏州科达(603660)6月16日主力资金净卖出1075.30万元

2023-06-17 00:30:13

90年代,一个时尚美女正在K歌的照片,神情显得有点落寞!

2023-06-16 23:10:31

浙大城市学院科研团队助力亚运设施获“三星”认证

2023-06-16 22:25:32

迪赛男装几线品牌_迪赛是几线品牌是哪个国家的品牌

2023-06-16 21:50:29