Python中的*用法总结

1,625 阅读1分钟

目前大概就看到了 4 种用法,如果有不完善的欢迎补充

1.数学运算

主要用于乘法运算、幂运算

print(2 * 3)   	# 6
print(2 ** 3)	# 8 

2.对象重复

主要用于重复打印某个符号,比如想画一道分隔线

print('-' * 5)	# '-----'

3.函数定义

定义函数时,在参数前加上*表示收集若干参数

def fun1(x, *args):
    print(x)
    print(args)
    
fun1(0, 1, 2, 3)

def fun2(x, **kwargs):
    print(x)
    print(kwargs)
    
fun2(0, a=1, b=2, c=3)

def fun3(*args, **kwargs):
    print(args)
    print(kwargs)
    
fun3(1, 2, 3, a=1, b=2, c=3)

4.函数调用

调用函数时,在传入的参数前加上*表示对参数进行分解,前提是参数可迭代(Iterable)

list = [1, 2, 3]
print(*list)   # 1 2 3

data = [(1, 'a'), (2, 'b'), (3, 'c')]
l1, l2 = zip(*data)
print(l1) 	# (1, 2, 3)
print(l2) 	# ('a', 'b', 'c')

import torch.nn as nn
import torchvision.models as models

resnet = models.resnet18(pretrained=True)
modules = list(resnet.children())[:-1]	# remove the last Linear layer
resnet = nn.Sequential(*modules)