目录
接收用指针,调用遍历,报错'tuple' object has no attribute 'append'
接收参数为指针时,可以传多个参数,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