前言
关于星号的探索来源于在很多的代码学习中,
函数简写中,使用了如下的格式
函数体(*被调用的函数名())
这是因为在python
中函数的返回是元组,才用星号解包。
星号作用
星号在python
中分为单星号和双星号:分别可以用在计算和打包、解包以及传递这三个方面。
1. 计算
一个 * :代表乘法
两个 **: 代表乘幂
2. 打包和解包
星号(*)是给元祖(tuple)解包的,而两个星号是给字典解包的。
ps: python
中函数的返回都是元组。
例子如下:
def return_tu(x):
y = [x+1]
return x, y
print(return_tu(3))
# outputs
(3, [4]) # 所以是元组的输出
因此星号的作用就在这里有用武之地了。例子如下
# preprocess_data是数据预处理,返回值有features和labels
# TensorDataset是torch.utils.data的一个数据包
Data.TensorDataset(*preprocess_data(train_data, vocab))
同样双星号也是这样,只不过针对字典对象而已。
3.传参
传参就是在第二点上的扩展用法,因为可以解元组对象,所以通常会这个*args
形式出现在大家眼里。
def foo(*args):
return ...
def foo(**args):
return...