在 python 中,*args
和 **kwargs
都代表 1
个 或 多个
参数的意思。*args
传入tuple
类型的无名参数,而 **kwargs
传入的参数是 dict
类型。下文举例说明。
- 单星号形式(*args)用来传递非命名键可变参数列表。
- 双星号形式(**kwargs)用来传递键值可变参数列表。
1.*args
的用法,以下测试代码:
def test(*args):
print(args)
for i in args:
print(i)
test(1,2,3)
# 输出值分别为
# (1,2,3)
# 1
# 2
# 3
2.**kwargs
的用法,以下测试代码:
def test(**kwargs):
print(kwargs)
keys = kwargs.keys()
value = kwargs.values()
print(keys)
print(value)
test(a=1,b=2,c=3,d=4)
# 输出值分别为
# {'a': 1, 'b': 2, 'c': 3, 'd': 4}
# dict_keys(['a', 'b', 'c', 'd'])
# dict_values([1, 2, 3, 4])
3.实际例子
def from_settings(cls, settings):
dbparms = dict(
host = settings["MYSQL_HOST"],
db = settings["MYSQL_DBNAME"],
user = settings["MYSQL_USER"],
passwd = settings["MYSQL_PASSWORD"],
charset='utf8',
cursorclass=MySQLdb.cursors.DictCursor,
use_unicode=True,
)
dbpool = adbapi.ConnectionPool("MySQLdb", **dbparms)
return cls(dbpool)