【python】python参数中的星号*, **
2013-03-04 10:03
239 查看
分两类。
一是作为函数定义时,一类是函数调用时。
一个 * 对应一个元组;
两个 ** 对应一个字典;
-------------------
当函数定义时:
一个 * 表示此函数接受的参数为一个元组;
两个 ** 表示此函数接受的参数是一个字典;
举例:
def nostar(a):
print a
def onestar(*a):
print a
def twostar(**a):
print a
nostar(1)
onestar(1,2,3)
twostar(a=1,b=2,c=3)
上面的调用是正确的调用。
下面是不正确的调用:
nostar(1,2,3)
nostar(a=1,b=2,c=3)
onestar(a=1,b=2,c=3)
twostar(1, 2, 3)
nostar 定义只接受一个参数,则它只能明确接受一个参数,不允许可变参数,不管是传1,2,3的元组给它,还是传a=1,b=2这样的字典给它,都是错误的用法。编译器会访回一个错误。
同样地,onestar定义接受一个元组,表示允许接受可变参数。但它只能接受像1,2,3这样的元组,而无法理解a=1,b=2类似这样的字典。
twostar定义为接受一个字典,表示允许key=value这样的可变参数。如果只传1,2,3这样的元组给它,同样报错。
----------------------------
当函数调用时:
* 号起了自动拆封参数的作用。
一个 * 表示对一个元组参数进行拆封;
两个 ** 表示对一个字典参数进行拆封;
举例:
def test(a, b, c):
print a, b, c
test(1,2,3)
x=(1,2,3)
test(*x)
y={'a':1, 'b':2, 'c':3}
test(**y)
通过上面的例子你就明白了。
x是一个列表,直接传给test 函数是会报错的。因为test 定义为接受三个参数。而你传给它的竟是一个列表,显然不行。因此,你通过在前面加* 号,python会自动帮你进行参数拆分。 两个** 号也是类似一样的。
一是作为函数定义时,一类是函数调用时。
一个 * 对应一个元组;
两个 ** 对应一个字典;
-------------------
当函数定义时:
一个 * 表示此函数接受的参数为一个元组;
两个 ** 表示此函数接受的参数是一个字典;
举例:
def nostar(a):
print a
def onestar(*a):
print a
def twostar(**a):
print a
nostar(1)
onestar(1,2,3)
twostar(a=1,b=2,c=3)
上面的调用是正确的调用。
下面是不正确的调用:
nostar(1,2,3)
nostar(a=1,b=2,c=3)
onestar(a=1,b=2,c=3)
twostar(1, 2, 3)
nostar 定义只接受一个参数,则它只能明确接受一个参数,不允许可变参数,不管是传1,2,3的元组给它,还是传a=1,b=2这样的字典给它,都是错误的用法。编译器会访回一个错误。
同样地,onestar定义接受一个元组,表示允许接受可变参数。但它只能接受像1,2,3这样的元组,而无法理解a=1,b=2类似这样的字典。
twostar定义为接受一个字典,表示允许key=value这样的可变参数。如果只传1,2,3这样的元组给它,同样报错。
----------------------------
当函数调用时:
* 号起了自动拆封参数的作用。
一个 * 表示对一个元组参数进行拆封;
两个 ** 表示对一个字典参数进行拆封;
举例:
def test(a, b, c):
print a, b, c
test(1,2,3)
x=(1,2,3)
test(*x)
y={'a':1, 'b':2, 'c':3}
test(**y)
通过上面的例子你就明白了。
x是一个列表,直接传给test 函数是会报错的。因为test 定义为接受三个参数。而你传给它的竟是一个列表,显然不行。因此,你通过在前面加* 号,python会自动帮你进行参数拆分。 两个** 号也是类似一样的。
相关文章推荐
- python参数—星号作用
- python 函数参数的传递(参数带星号的说明)
- python函数星号参数详解
- Python中的星号参数与双星参数
- <转>Python 参数知识(变量前加星号的意义)
- python 函数参数的传递(参数带星号的说明)
- 转-Python参数知识[变量前加星号的意义]
- python 函数参数的传递(参数带星号的说明)
- python 函数参数的传递(参数带星号的说明)
- python 函数参数的传递(参数带星号的说明)
- python函数参数带星号*
- python中带星号/一个星号/两个星号的参数
- python 函数参数的传递(参数带星号的说明) 元组传递 字典传递
- Python函数的各种参数(含星号参数)
- Python函数参数中的星号*(关键字参数与非关键字参数)
- python参数(加星号的参数含义)
- 【转】Python 参数知识(变量前加星号的意义)
- python函数参数带星号*
- python函数星号参数
- python 函数参数的传递(参数带星号的说明)