博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一节课让你彻底搞懂python中的单星号(*)和双星号(**)的区别及项目实际用法——给我学!
阅读量:3959 次
发布时间:2019-05-24

本文共 2312 字,大约阅读时间需要 7 分钟。

引言——同学们是不是经常可以在python的函数中看到输入的参数前面有一个或者两个星号(如下图:),却不是很明白他们的作用。那么今天这节课就来带领大家深入探讨一下。

def function1(param1, *param2):def function2(param1, **param2):

其实这俩的用法都是用来将任意个数的参数传入到python函数中,但是它们两个的应用场景及某些细分的作用又有所不同哦!

需要注意的是:我们在探讨单星号和双星号的作用时,要分两种情况-----1.在定义函数的时候使用(为了收集参数);2.在调用函数的时候使用(为了分配参数,即所谓的拆包!)

1.单星号(*):*agrs

(1)定义函数时使用:将参数以元组(tuple)的形式导入(收集参数)!

上代码1:

def fun1(*args):          #*可以接收任意多个    print(args)           #此处的args又把接收的任意多个数据放为一个整体:元组中fun1(1,2,3,4,5,6,6)# 输出为:(1, 2, 3, 4, 5, 6, 6)

上代码2:

# 单星号的使用:def fun3(world,*value):    # 注意使用单星号的参数要放在其他参数之后!    print(world)    print(value)fun3('cool',1,2,3,4,5,6,1,7,8,98)# 输出为:cool#       (1, 2, 3, 4, 5, 6, 1, 7, 8, 98)

(2)调用函数时使用:拆包(分配参数)!

上代码1:

#拆包def fun1(*args):          #*可以接收任意多个    print(args)           #此处的args又把接收的任意多个数据放为一个整体:元组中    print(*args)          #此处的*又把args接收的那个元组整体拆分为一个一个的fun1(1,2,3,4,5,6,6)# 输出为:(1, 2, 3, 4, 5, 6, 6)#        1 2 3 4 5 6 6

上代码2:

def myprint(x, y):    print(x)    print(y)params=(1,2)myprint(*params)# 输出为:1#        2

2.双星号(**):**kwargs

(1)定义函数时使用:将关键字参数以字典(dic)的形式导入(收集参数)!

上代码1:

def fun2(**kwargs):    print(kwargs)fun2(a = 1 , b = 2)       #因为上面有**,所以把参数a = 1和b = 2转换为{}的形式# 输出为:{'a': 1, 'b': 2}

上代码2:

## 双星号(**)的使用:def function(key, **kwargs):    print(key)    print(kwargs)function('aaa', a = 1, b = 2, c = 3)# 输出为:aaa#       {'a': 1, 'b': 2, 'c': 3}

(2)调用函数时使用:拆包(分配参数)!

上代码1:

def myprint(x, y):    print(x)    print(y)params={
'x':1,'y':2} myprint(**params) # 此句等同于: myprint(x = 1, y = 2)# 输出为:1# 2

上代码2:

def fun2(**kwargs):    print(kwargs)fun2(a = 1 , b = 2)               #因为上面有**,所以把a = 1和b = 2的形式转换为{}的形式fun2(**{
'a':1, 'b': 2}) #把{}的形式拆包为 a = 1, b = 2的形式,此方法等同上一句代码,但是可以直接传字典格式数据而不用特意改变了!# 输出为:{'a': 1, 'b': 2}# {'a': 1, 'b': 2}# 小知识点:# a = 1 < ==== > {'a':1} 可以相互转换

3.混合使用

# *和**的混合使用:def fun4(*name,**value):    print(name)    print(value)fun4('key', 'beautiful', a = 1, b = 2)# 输出为:('key', 'beautiful')#        {'a': 1, 'b': 2}

4.拓展——实战项目中单星号的使用!

a = [ [7, 17146.16129032258], [8, 26092.645161290322], [9, 26865.633333333335], [10, 35460.67741935484], [11, 51436.166666666664]]# *a的作用将变量a拆包为一个个的列表;print(*a)# zip()函数的作用是:将对象逐一配对,*zip()的作用就是拆包:将一一对应的5个列表数据拆分为一一对应的两个列表数据!x_unique, y_mean = [*zip(*a)]print(x_unique)print(type(x_unique))print(y_mean)print(type(y_mean))

在这里插入图片描述

转载地址:http://vzlzi.baihongyu.com/

你可能感兴趣的文章
utorrent如何处理占资源过大的问题
查看>>
<好文分享>妖怪和和尚过河问题
查看>>
uTP协议的前世今生(from wikipedia)
查看>>
uTP协议的前世今生(from wikipedia)
查看>>
utp的包头格式<2>
查看>>
开源搜索引擎的比较(收藏几个博客文章)最近要做搜索系统的研究方向
查看>>
asii码表
查看>>
<读书笔记>WebUsage Mining:Discovery and Applications of Usage Patterns from Web Data
查看>>
并查集(Disjoint Sets)
查看>>
在Linux下安装MATLAB
查看>>
readme
查看>>
微服务概念
查看>>
数据库分库分表
查看>>
hibernate inverse 和cascade讲解
查看>>
建模工具Rose的学习
查看>>
javascript ajax提出异步请求
查看>>
Hibernate 中的 QBC
查看>>
解快局域网共享问题
查看>>
xp常用命令
查看>>
java 加密解密
查看>>