python单星号(*)与双星号(**)使用示例demo

 更新时间:2024年12月31日 09:37:24   作者:yueguang8  
这篇文章详细介绍了Python中*与**操作符的使用场景及注意事项,并通过示例代码展示了它们在函数形参和实参、序列解包以及函数参数顺序中的应用,需要的朋友可以参考下

本章将详细介绍python中*与**操作符的使用场景以及注意事项,并给出示例demo。

1.作为运算符

*表示乘法运算

**表示乘方运算

代码 示例:

#1.* ** 作为运算符
print('\n------运算符测试------')
a = 3*2  #乘法
b = 3**2 #乘方
print("a = ", a)  #输出6
print("b = ", b)  #输出9

执行结果:

2.作为函数形参

*在python中做函数形参,表示的是一个可变长度的序列,类型为tuple,即将所有参数放入一个元组(tuple)中,被函数使用。

**在python中做函数形参,表示的是一个可变长度的序列,类型为dict,即将所有的关键字参数,放入一个字典(dict)中, 被函数使用。

*与**作为形参同时出现时,**必须在最后面.

代码示例:

#2.作为形参
print('\n------形参测试------')
def printx(*arg1, **arg2):
    print("arg1={0}, type:{1}".format(arg1, type(arg1)))
    print("arg2={0}, type:{1}".format(arg2, type(arg2)))

#调用
P1 = printx(1,2, key1=1, key2=2)

代码执行结果:

3.作为函数实参

在list/tuple/set前加*,会把序列中的所有元素解包成位置参数

在dict前加*,会把dict的变成位置参数;加**,把字典的键值对变成关键字参数。

        A = (a,b,c)

        B = {“key1” :1, “key2”:2}

        P3 = Printx(*A)    # 等同于printx(a,b,c)

        P3 = Printx(*A, *B)   #等同于printx(a,b,c,key1,key2)

        P3 = Printx(*A, **B)   #等同于printx(a,b,c,key1=1,key2=2)

代码示例:

def printx(*arg1, **arg2):
    print("arg1={0}, type:{1}".format(arg1, type(arg1)))
    print("arg2={0}, type:{1}".format(arg2, type(arg2)))


#3.实参测试
print('\n------实参测试------')
A = (1,2,3)
K1 = {'key1':1, 'key2':2}
P2 = printx(*A, *K1)  #注意在dict前加一个*,只把dict的 '键' 作为位置参传递
print('')
P3= printx(*A, **K1)

执行结果:

4. 作为序列解包

注意序列解包时*解包为list,不再是tuple了

1. 先对不带*的变量解包,剩余的数据在划分给带*的变量

        x,y,*z = 1,2,3,4,5 #等同于 x=1, y = 2, z= [3,4,5]

        X,*y,z = 1,2,3,4,5 #等同于 x=1, y = [2,3,4], z= 5

2. 如果左值比右值要多,那么带 * 的变量默认为空列表

        x,y,*z = 1,2 #等同于 x=1, y = 2, z= []  

        x,*y,z = 1,2  #x=1, y = [], z= 2

3. 单*只解包dict的键, **解包dict键值对

        key_A = {‘key1’:1, ‘key2’:2}

        key_B = {“key3” :3, “key4”:4}

        X = {*key_A}  #等同于x= {‘key1’, ’key2’}

        X = {**key_A}  #等同于x= {‘key1’:1, ‘key2’:2}

        X = {**key_A, **key_B} #等同于组包,x={‘key1’:1, ‘key2’:2, “key3” :3, “key4”:4} 

注意:组包时,若键相同,则用后面的键值替换前面的,即最终合并后,为后面的键值对。

代码示例:

#4.解包测试
print('\n------解包测试------')
x,y,*z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))

x,*y,z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))

x,*y,z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))

x,y,*z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))

#解包&组包
K2 = {'key3':3, 'key4':4}
K3 = {'key5':5, 'key6':6}
k4 = {**K2, **K3}
print("k4=", k4)

 执行结果:

注意

在Python中默认的函数参数顺序是:必选参数、默认参数、*args和**kwargs。如下所示:

        def  testFunc(name, age=10, *agrs, **kwargs):

                pass

 整体测试代码:

import torch

#1.* ** 作为运算符
print('\n------运算符测试------')
a = 3*2  #乘法
b = 3**2 #乘方
print("a = ", a)  #输出6
print("b = ", b)  #输出9

#2.作为形参
print('\n------形参测试------')
def printx(*arg1, **arg2):
    print("arg1={0}, type:{1}".format(arg1, type(arg1)))
    print("arg2={0}, type:{1}".format(arg2, type(arg2)))

#调用
P1 = printx(1,2, key1=1, key2=2)

#3.实参测试
print('\n------实参测试------')
A = (1,2,3)
K1 = {'key1':1, 'key2':2}
P2 = printx(*A, *K1)  #注意在dict前加一个*,只把dict的 '键' 作为位置参传递
print('')
P3= printx(*A, **K1)

#4.解包测试
print('\n------解包测试------')
x,y,*z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))

x,*y,z = 1,2,3,4,5
print("x={0}, y= {1}, z={2}".format(x,y,z))

x,*y,z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))

x,y,*z = 1,2
print("x={0}, y= {1}, z={2}".format(x,y,z))

#解包&组包
K2 = {'key3':3, 'key4':4}
K3 = {'key5':5, 'key6':6}
k4 = {**K2, **K3}
print("k4=", k4)

运行结果:

总结 

到此这篇关于python单星号(*)与双星号(**)使用的文章就介绍到这了,更多相关python单星号(*)与双星号(**)使用内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python sys模块使用方法介绍

    python sys模块使用方法介绍

    sys模块是最常用的和python解释器交互的模块,sys模块可供访问由解释器(interpreter)使用或维护的变量和与解释器进行交互的函数,需要的朋友可以参考下
    2022-08-08
  • python基础之包的导入和__init__.py的介绍

    python基础之包的导入和__init__.py的介绍

    这篇文章主要介绍了python基础之包的导入和__init__.py的相关资料,需要的朋友可以参考下
    2018-01-01
  • Python文档的基本操作指南(从创建到发布)

    Python文档的基本操作指南(从创建到发布)

    在Python开发过程中,良好的文档是项目成功的关键因素之一,本文将介绍Python文档的基本操作,包括文档字符串(docstring)、帮助函数、文档生成工具以及文档托管等内容,帮助开发者创建专业级的项目文档,需要的朋友可以参考下
    2025-05-05
  • Python使用bs4获取58同城城市分类的方法

    Python使用bs4获取58同城城市分类的方法

    这篇文章主要介绍了Python使用bs4获取58同城城市分类的方法,涉及Python使用BeautifulSoup库解析html页面的技巧,需要的朋友可以参考下
    2015-07-07
  • Python编程基础之字典

    Python编程基础之字典

    这篇文章主要为大家介绍了Python的字典,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • python3实现语音转文字(语音识别)和文字转语音(语音合成)

    python3实现语音转文字(语音识别)和文字转语音(语音合成)

    这篇文章主要介绍了python3实现语音转文字(语音识别)和文字转语音(语音合成),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • Django通过json格式收集主机信息

    Django通过json格式收集主机信息

    这篇文章主要介绍了基于Django收集主机信息json格式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • Python语言实现将图片转化为html页面

    Python语言实现将图片转化为html页面

    这篇文章主要介绍了Python实现将图片转化为html页面,具有一定参考价值,需要的朋友可以了解下。
    2017-12-12
  • pycharm利用pyspark远程连接spark集群的实现

    pycharm利用pyspark远程连接spark集群的实现

    由于工作需要,利用spark完成机器学习。因此需要对spark集群进行操作。所以利用pycharm和pyspark远程连接spark集群。感兴趣的可以了解一下
    2021-05-05
  • Python实现上下文管理器的方法

    Python实现上下文管理器的方法

    这篇文章主要介绍了Python实现上下文管理器的方法,帮助大家更好的理解和学习Python,感兴趣的朋友可以了解下
    2020-08-08

最新评论