社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  python开源

Python3 * 和 ** 运算符

夏天 • 6 年前 • 721 次点击  

在 Python 中,* 具有语法多义性,具体来说是有四类用法。

  1. 算数运算

1 *  代表乘法

2 ** 代表乘方

3 >>> 2 * 5 4 10 5 >>> 2 ** 5 6 32 2. 函数形参

args 和 *kwargs 主要用于函数定义。

你可以将不定数量的参数传递给一个函数。不定的意思是:预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字。其实并不是必须写成 args 和 kwargs。  (星号) 才是必须的. 你也可以写成 ar  和 k 。而写成 args 和**kwargs 只是一个通俗的命名约定。Python学习交流群 302521268

python函数传递参数的方式有两种:

位置参数(positional argument) 关键词参数(keyword argument) 1 args 与 *kwargs 的区别,两者都是 python 中的可变参数:

2 args 表示任何多个无名参数,它本质是一个 tuple kwargs 表示关键字参数,它本质上是一个 dict 如果同时使用 *args 和 kwargs 时,必须 args 参数列要在 **kwargs 之前。

1 >>> def fun(args, kwargs): 2 ... print('args=', args) 3 ... print('kwargs=', kwargs) 4 ... 5 >>> fun(1, 2, 3, 4, A='a', B='b', C='c', D='d') 6 args= (1, 2, 3, 4) 7 kwargs= {'A': 'a', 'B': 'b', 'C': 'c', 'D': 'd'} 使用 args

1 >>> def fun(name, args): 2 ... print('你好:', name) 3 ... for i in args: 4 ... print("你的宠物有:", i) 5 ... 6 >>> fun("Geek", "dog", "cat") 7你好: Geek 你的宠物有: dog 你的宠物有: cat 使用 *kwargs

1 >>> def fun(**kwargs): 2 ... for key, value in kwargs.items(): 3 ... print("{0} 喜欢 {1}".format(key, value)) 4 ... 5 >>> fun(Geek="cat", cat="box") 6 Geek 喜欢 cat 7 cat 喜欢 box 3. 函数实参Python学习交流群 302521268

如果函数的形参是定长参数,也可以使用 args 和 *kwargs 调用函数,类似对元组和字典进行解引用:

1 >>> def fun(data1, data2, data3): 2 ... print("data1: ", data1) 3 ... print("data2: ", data2) 4 ... print("data3: ", data3) 5 ... 6 >>> args = ("one", 2, 3) 7 >>> fun(args) 8 data1: one 9 data2: 2 10 data3: 3 11 >>> kwargs = {"data3": "one", "data2": 2, "data1": 3} 12>>> fun(*kwargs) 13 data1: 3 14 data2: 2 15 data3: one 4. 序列解包

序列解包 往期博客有写过,这里只列出一个例子,序列解包没有 **。

1 >>> a, b, *c = 0, 1, 2, 3
2 >>> a
3 0
4 >>> b
5 1
6 >>> c
7 [2, 3]

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/31085
 
721 次点击