python 星号(*)的多种用途
作者:Sight Tech. 发布时间:2021-08-13 06:16:27
标签:python,星号,
结论
概括的来说,就是对修饰的变量进行拆分, 对修饰的形式参数进行参数聚集。
单*号,将被修饰的变量按元素方式拆分, 对修饰的形式参数进行参数聚集。
双**号,将被修饰的变量按键值对进行拆分, 对修饰的形式参数进行参数聚集。
修饰实例变量时
作用: 讲被修饰的实例变量或者可迭代对象进行拆分
def func3(a, b, c):
print("param a is {}, param b is {}, param c is {}".format(a, b, c))
if __name__ == '__main__':
arr1 = [1, 2, 3]
print(arr1, sep='\t') # [1, 2, 3]\t 正常输出
print(*arr1, sep='\t') # 1\t2\t3 每个数字中间以\t分割
arr2 = [[1, 2, 3], [3, 4, 5], [5, 6, 7]]
print(list(zip(*arr2))) # [(1, 3, 5), (2, 4, 6), (3, 5, 7)] 二维数组的行转列
dictionary = {'a': 1, 'b': 2, 'c': 3}
print(dictionary, sep='\t') # {'a': 1, 'b': 2, 'c': 3}\t 正常输出
print(*dictionary, sep='\t') # a\tb\tc\t 每个字母中间以\t分割
print(func3(**dictionary)) # param a is 1, param b is 2, param c is 3
比较使用和不使用*号后产生的结果就可以发现,单*号将可迭代对象进行了拆分,按单个元素方式依次将数据传进方法。
配合其他方法使用可以优雅的完成矩阵的行转列操作。
双**号的使用,是将变量对象拆分成键值对的形式,所以只有dict类型可以使用。
注意上面的func3,他需要三个形参,但是我们只传入**dict_obj, 就完成了功能。
可迭代对象有:list, dict, tuple, generator, iterator
出现在方法的形式参数位置
作用: 放在参数列表的末尾, 作为不定长的参数列表的形参接受对象。 (可以类比Java的可变参数列表)
def func1(*args):
print("type", type(args)) # type <class 'tuple'>
print("all arguments: ", args) # all arguments: (1, 2, 3)
print("second argument: ", args[1]) # second argument: 2
def func2(**kw):
print("type", type(kw)) # type <class 'dict'>
print("all arguments: ", kw) # all arguments: {'a': 1, 'b': 2, 'c': 3}
print("second argument: ", kw['a']) # second argument: 1
if __name__ == '__main__':
a, b, c = 1, 2, 3
func1(a, b, c)
func2(a=a, b=b, c=c)
尽管函数func1的形参只有一个,但被传递三个参数,程序还是可以正常运行。
因为*args将三个参数以tuple形式存储,作为一个整体传递给方法func1。
同理,func2的**kw形参将传入的三个参数压成一个dict进行使用。
具体实验代码可以通过Github获得。
来源:https://www.cnblogs.com/sight-tech/p/13024882.html


猜你喜欢
- 1 准备工作1.1 环境搭建1.1.1 安装python3.6python安装官网1.1.2 安装django2.2pip install
- 本文实例讲述了mysql存储过程之创建(CREATE PROCEDURE)和调用(CALL)及变量创建(DECLARE)和赋值(SET)操作
- 目录项目地址运行环境运行方法数据爬取(jd.comment.py)模型训练(train.py)情感分析(sentiment.analysis
- 如果你对长篇大论没有兴趣,也可以直接看看结果,或许你对结果感兴趣。在实际应用中经过存储、优化可以做到在超过9千万数据中的查询响应速度控制在1
- 要处理文本数据,需要比数字类型的数据更多的清理步骤。为了从文本数据中提取有用和信息,通常需要执行几个预处理和过滤步骤。Pandas 库有许多
- Python常用的数据结构,有如下几种。但是我们用的最多的,还是字符串、列表、字典这3种。其实学习任何一门编程语言,最基础的就是学习它的数据
- 安装python之后,我们往往面临这样一个问题,在命令行输入“python”,竟然出错,难道是没有安装成功吗?非也,其实是你的系统环境变量没
- 为标签添加背景图片import sysfrom PyQt5.QtGui import *from PyQt5.QtCore import *
- Go init函数详解init()函数会在每个包完成初始化后自动执行,并且执行优先级比main函数高。init 函数通常被用来:对变量进行初
- 1. 生命游戏是什么生命游戏是英国数学家约翰·何顿·康威在1970年发明的细胞自动机。它包括一个二维矩形世界,这个世界中的每个方格居住着一个
- 像在下拉菜单中选择省、市这样的操作,我一直用ASP来创建生成列表函数,把它们保存在一个Include文件中,用的时候就加载。这样做确实有个不
- PHP Session 变量当运行一个应用程序时,你会打开它,做些更改,然后关闭它。这很像一次会话。计算机清楚你是谁。它知道你何时启动应用程
- 1、Config命令Config命令主要用于修改SSI的默认设置。其中:Errmsg:设置默认错误信息。为了能够正常的返回用户设定的错误信息
- home.html:<!DOCTYPE html><html lang="en"><hea
- 前言最近在评估项目时,要开启评估平台,查看平台和保存平台,感觉非常繁琐,开发了一款可以获取评估平台数据,查看项目排期和直接保存数据到数据库的
- 1.sort()方法sort()是列表的方法,修改原列表使得它按照大小排序,没有返回值,返回NoneIn [90]: x = [4, 6,
- 本文实例讲述了js+html5操作sqlite数据库的方法。分享给大家供大家参考,具体如下://copyright by lanxyou l
- 摸到她了!青翠的衣衫,奶白的肌肤,捧在手上的感觉真是太好了,心里美滋滋的。《悟透JavaScript》,一本偶然之作,终于成书并出版了。本书
- 目录初始化程序创建Surface对象事件监听游戏循环Pygame 作为一个入门级的游戏开发库,其实并不难学,只要掌握 Python 编程的相
- 目录python 语法简要介绍爬取网页解析网页储存网页python作为一种已经广泛传播且相对易学的解释型语言,现如今在各方面都有着广泛的应用