神经网络学习小记录18——python中*和**的用法
学习前言
研究keras-yolo3的代码,里面实在是太多的*和**了,python学的不够多,网上去查资料,看看这是个什么玩意儿。
实际用法
1、乘法
这应该都知道。
print(3*4)
# 此时会打印出12。
2、给函数传入可变长参数
*号的作用是在该位置接受任意多个非关键字(non-keyword)参数,在函数中将其转化为元组(a,b,c,d)。
**号的作用是在该位置接受任意多个关键字(keyword)参数,在函数中转化为词典{key:value, key:value}。
例子如下:
def fx(*args,**kwargs):
print(args)
print(kwargs)
fx(1, 2, 3, a = 1, b = 2, c = 3)
其中:
非关键字参数就是没有指定什么等于什么,直接输入参数的,如例子中的1、2、3;关键字参数就是指定什么等于什么,如例子中的a = 1、b = 2、c = 3。
输出为:
(1, 2, 3)
{'a': 1, 'b': 2, 'c': 3}
3、参数解包
进入第一维解包。
import numpy as np
x = np.arange(12)
print(*x)
xy = np.arange(12).reshape(3,4)
print(*xy)
xyz = np.arange(24).reshape(2,3,4)
print(*xyz)
输出结果为:
0 1 2 3 4 5 6 7 8 9 10 11
[0 1 2 3] [4 5 6 7] [ 8 9 10 11]
[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]