python星号参数学习笔记

目录

接收参数单星号指针时,可以传多个参数,list会转成tuple

指针会把元组转成多个参数,代码示例

懒人必备,统一接收可变长参数:

接收参数为变量,调用传变量 ok

接收参数为变量,调用传指针,list参数会拆成多个参数

参数是列表:

接收用指针,调用遍历,报错'tuple' object has no attribute 'append'

接收参数为指针时,参数list会转tuple,不可更改。

接收参数为变量,调用参数为指针时,list会拆成多个变量:

发送参数为星号

发送参数为单星号:

发送参数为双星号:


接收参数单星号指针时,可以传多个参数,list会转成tuple

def calc(*nums):
    sum = 0
    for n in nums:
        sum += n

    return sum

data=calc(1,2,3)
print(data)

指针会把元组转成多个参数,代码示例

call中fo_args是元组,转成了多个参数:aaa运行不报错: 

回调函数也是可以的:

def aaa(a,b,c,d ):

    print(a,b,c,d)

def get_fun():
    return aaa


def call(fo_args):

    aaa(1,*fo_args)

if __name__ == '__main__':

    ddd=1,2,3,4
    call((12,35,35))


    fun_a=get_fun()

    fun_a(*(2,12,35,35))

懒人必备,统一接收可变长参数:

param是可变长参数,

def add_a(a,*param):

    print(a,param)
    a,b=param

if __name__ == '__main__':

    add_a(1,2,"asf")

接收参数为变量,调用传变量 ok

import torch
class A:
    def aaa(self,inputs,bb=False):

        print(inputs,bb)
        a,b=inputs

inputs = torch.randn(1, 3, 128, 128)
bbb=A()
data=[355,123135]
aaa=str(type(data))
bbb.aaa(data)

接收参数为变量,调用传指针,list参数会拆成多个参数

import torch
class A:
    def aaa(self,inputs,bb=False):
        print(inputs,bb)
        a,b=inputs

inputs = torch.randn(1, 3, 128, 128)
bbb=A()
data=[355,123135]

bbb.aaa(*data)

参数是列表:

def add_end(l = []):
    l.append('END')
    return l
data= add_end([2])
print(data)

结果:

[2, 'END']

接收用指针,调用遍历,报错'tuple' object has no attribute 'append'

def add_end(*data):
    print('param',data)
    data.append('END')
    return data
data= add_end([2])
print(data)

接收参数为指针时,参数list会转tuple,不可更改。

def add_end(*data):
    print('param',data)
    data.append('END')
    return data

param=[2]
data= add_end(*param)
print(data)

结果:

报错'tuple' object has no attribute 'append'

接收参数为变量,调用参数为指针时,list会拆成多个变量:

def add_end(data):
    print('param',data)
    data.append('END')
    return data

param=[2,2]
data= add_end(*param)
print(data)

结果:

  File "F:/project/cls/NonDeepNetworks/aaa.py", line 10, in <module>
    data= add_end(*param)
TypeError: add_end() takes 1 positional argument but 2 were given

发送参数为星号

发送参数为单星号:

list 会把list内容发过去,转成多个参数

dict  会把dict的keys发过去,转成多个参数,values不会发。

# def abab(param,bb):
def abab(aa,bb,cc,dd,ee,ff,mm):

    print(aa,bb,cc,dd,ee,ff,mm)


def validate(args):


    model_args = dict(block_a=Bottleneck, layers=[3, 4, 6, 3], stem_width=32, stem_type='deep', avg_down=True, num_classes=321,in_chans=3)

    model_args=[1,2,3,4,5,6,7]
    abab(model_args)
    abab(*model_args)

发送参数为双星号:

dict  会把dict的内容发过去,转成多个参数,values也会发。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

AI算法加油站

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值