时间:2021-05-23
在了解带星号(*)的参数之前,先看下带有默认值的参数,函数定义如下:
>> def defaultValueArgs(common, defaultStr = "default", defaultNum = 0): print("Common args", common) print("Default String", defaultStr) print("Default Number", defaultNum)(1)带默认值的参数(defaultStr、defaultNum)不传参时的调用:
>> defaultValueArgs("Test") Common args TestDefault String defaultDefault Number 0(2)带默认值的参数(defaultStr、defaultNum),调用的时候可以直接传参(如下例中的defaultStr),也可以写成“argsName = value”的形式(如下例中的defaultNum):
>> defaultValueArgs("Test", "Str", defaultNum = 1) Common args TestDefault String StrDefault Number 1 >> defaultValueArgs("Test", defaultNum = 1) Common args TestDefault String defaultDefault Number 1注意:在函数定义时,第一个带有默认值的参数之后的所有参数都必须有默认值,否则,运行时报错。
>> def defaultValueArgs(common, defaultStr = "default", defaultNum): print("Common args", common) print("Default String", defaultStr) print("Default Number", defaultNum) SyntaxError: non-default argument follows default argument带一个参数的函数定义如下:
>> def singalStar(common, *rest): print("Common args: ", common) print("Rest args: ", rest)(1)带星号(*)的参数不传参:
>> singalStar("hello") Common args: helloRest args: ()带星号(*)的参数不传参时默认是一个空的元组。
(2)带星号(*)的参数传入多个值时(个数大于或等于函数定义时的参数个数):
>> singalStar("hello", "world", 000) Common args: helloRest args: ('world', 0)不难看出,第二种方式中,星号参数把接收的多个参数合并为一个元组。
(3)当我们直接传元组类型的值给星号参数时:
>> singalStar("hello", ("world", 000)) Common args: helloRest args: (('world', 0),)此时,传递的元组值作为了星号参数的元组中的一个元素。
(4)如果我们想把元组作为星号参数的参数值,在元组值前加上" * " 即可。
>> singalStar("hello", *("world", 000))Common args: helloRest args: ('world', 0)>> singalStar("hello", *("world", 000), "123")Common args: helloRest args: ('world', 0, '123')带两个星号(**)的函数定义如下:
>> def doubleStar(common, **double): print("Common args: ", common) print("Double args: ", double)(1)双星号(**)参数不传值:
>> doubleStar("hello") Common args: helloDouble args: {}带双星号(**)的参数不传值时默认是一个空的字典。
(2)双星号(**)参数传入多个参数时(个数大于或等于函数定义时的参数个数):
>> doubleStar("hello", "Test", 24)TypeError: doubleStar() takes 1 positional argument but 3 were given>> doubleStar("hello", x = "Test", y = 24)Common args: helloDouble args: {'x': 'Test', 'y': 24}可以看到,双星号参数把接收的多个参数合并为一个字典,但与单星号不同的是,此时必须采用默认值传参的 “ args = value ” 的方式,“ = ” 前的字段成了字典的键,“ = ” 后的字段成了字典的值。
(3)如果想把字典作为星号参数的参数值,那么该怎么办呢?与单星号参数类似,在字典值前加上 “ ** ”,同时其后不能添加任何值。
>> doubleStar("hello", {"name": "Test", "age": 24})TypeError: doubleStar() takes 1 positional argument but 2 were given>> doubleStar("hello", **{"name": "Test", "age": 24}, {"name": "Test2", "age": 24})SyntaxError: positional argument follows keyword argument unpacking>> doubleStar("hello", **{"name": "Test", "age": 24}, **{"name": "Test2", "age": 24})TypeError: doubleStar() got multiple values for keyword argument 'name'>> doubleStar("hello", **{"name": "Test", "age": 24})Common args: helloDouble args: {'name': 'Test', 'age': 24}到此这篇关于Python 带星号(* 或 **)的函数参数详解的文章就介绍到这了,更多相关Python 带星号参数内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
Python函数可变参数定义及其参数传递方式详解python中函数不定参数的定义形式如下1、func(*args)传入的参数为以元组形式存在args中,如:de
一、什么是星号变量最初,星号变量是用在函数的参数传递上的,在下面的实例中,单个星号代表这个位置接收任意多个非关键字参数,在函数的*b位置上将其转化成元组,而双星
python中chrunichrord函数的实例详解chr()函数用一个范围在range(256)内的(就是0~255)整数作参数,返回一个对应的字符。unic
Python绘制箱线图主要用matplotlib库里pyplot模块里的boxplot()函数。plt.boxplot()参数详解plt.pie(x,#指定要绘
python中的dir()函数是一个非常重要的函数,它可以帮助我们查看函数的功能和特性。中文说明:不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数