python 星号(*)的多种用途

 更新时间:2020年09月21日 10:56:20   作者:Sight Tech.  
这篇文章主要介绍了python 星号(*)的多种用途,帮助大家更好的理解和使用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获得。

以上就是python 星号(*)的多种用途的详细内容,更多关于python 星号(*)的资料请关注脚本之家其它相关文章!

相关文章

  • django 实现电子支付功能的示例代码

    django 实现电子支付功能的示例代码

    这篇文章主要介绍了django 实现电子支付功能的示例代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-07-07
  • Python处理XML格式数据的方法详解

    Python处理XML格式数据的方法详解

    这篇文章主要介绍了Python处理XML格式数据的方法,结合实例形式详细分析了Python针对xml格式文件的编码处理、常见错误及相关操作注意事项,需要的朋友可以参考下
    2017-03-03
  • python抓取某汽车网数据解析html存入excel示例

    python抓取某汽车网数据解析html存入excel示例

    python抓取某汽车网经销商信息网页数据解析html,这里提供一个示例演示,大家可以根据需要分析自己网站的数据
    2013-12-12
  • python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解

    这篇文章主要介绍了python 实现tar文件压缩解压的实例详解的相关资料,这里提供实现方法,帮助大家学习理解这部分内容,需要的朋友可以参考下
    2017-08-08
  • python3模块smtplib实现发送邮件功能

    python3模块smtplib实现发送邮件功能

    这篇文章主要为大家详细介绍了python3模块smtplib实现发送邮件功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-05-05
  • 如何用Python做一个微信机器人自动拉群

    如何用Python做一个微信机器人自动拉群

    这篇文章主要介绍了如何用Python做一个微信机器人自动拉群,微当群人数达到100人后,用户无法再通过扫描群二维码加入,只能让用户先添加群内联系人微信,再由联系人把用户拉进来。这样,联系人员的私人微信会添加大量陌生人,给其带来不必要的打扰,需要的朋友可以参考下
    2019-07-07
  • Python shapefile转GeoJson的2种方式实例

    Python shapefile转GeoJson的2种方式实例

    geojson是地图可视化系统中最常用的地理数据格式,几乎所有主流地图可视化库或框架都支持geojson数据的加载,下面这篇文章主要给大家介绍了关于Python shapefile转GeoJson的2种方式的相关资料,需要的朋友可以参考下
    2023-03-03
  • pytest配置项目不同环境URL的实现

    pytest配置项目不同环境URL的实现

    pytest-base-url是pytest的第三方插件,主要用来帮助我们进行切换测试环境地址,下面就来介绍一下配置不同环境URL的实现,感兴趣的可以了解一下
    2024-02-02
  • 利用Python绘画双摆操作分享

    利用Python绘画双摆操作分享

    这篇文章主要介绍了利用Python画双摆,绘画双摆的过程主要包括以下步骤,双摆问题、运动过程及公式推导过程,下文详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • 代码详解Python的函数基础(2)

    代码详解Python的函数基础(2)

    这篇文章主要为大家详细介绍了Python的函数基础,使用了函数参数和递归函数,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-01-01

最新评论