目录
接收参数单星号指针时,可以传多个参数,list会转成tuple
接收用指针,调用遍历,报错'tuple' object has no attribute 'append'
- 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")
- 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)
- 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']
- def add_end(*data):
- print('param',data)
- data.append('END')
- return data
- data= add_end([2])
- print(data)
- 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'
- 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
- 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也会发。