浅谈Python中的*和**(字符串)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yg970514/article/details/79190915
**keywords????
def cheeseshop(kind, *arguments, **keywords)
ex:
def cheeseshop(kind, *arguments, **keywords):
  print("-- Do you have any", kind, "?")
 print("-- I'm sorry, we're all out of", kind)
  for arg in arguments:
    print(arg)
  print("-" * 40)
 keys = sorted(keywords.keys())
  for kw in keys:
    print(kw, ":", keywords[kw])
它可以像这样调用:
cheeseshop("Limburger", "It's very runny, sir.",
  "It's really very, VERY runny, sir.",
     shopkeeper="Michael Palin",
    client="John Cleese",
    sketch="Cheese Shop Sketch")
当然它会按如下内容打印:
-- Do you have any Limburger ?
-- I'm sorry, we're all out of LimburgerIt's very runny, sir.
It's really very, VERY runny, sir.
----------------------------------------
client : John Cleese
shopkeeper : Michael Palin
sketch : Cheese Shop Sketch

解释:
调用函数时使用* **

test(*args)* 的作用其实就是把序列 args 中的每个元素,当作位置参数传进去。比如上面这个代码,如果 args 等于 (1,2,3) ,那么这个代码就等价于 test(1, 2, 3) 。

test(**kwargs)** 的作用则是把字典 kwargs 变成关键字参数传递。比如上面这个代码,如果 kwargs 等于 {'a':1,'b':2,'c':3} ,那这个代码就等价于 test(a=1,b=2,c=3) 。

定义函数参数时使用* **

def test(*args):
    ...定义函数参数时 * 的含义又要有所不同,在这里 *args 表示把传进来的位置参数都装在元组 args 里面。比如说上面这个函数,调用 test(1, 2, 3) 的话, args 的值就是 (1, 2, 3) 。:

def test(**kwargs):
    ...类似的, ** 就是针对关键字参数和字典的了。 调用 test(a=1,b=2,c=3) 的话, kwargs 的值就是 {'a':1,'b':2,'c':3} 了。

猜你喜欢

转载自blog.csdn.net/yg970514/article/details/79190915