python如何编写带输出参数的函数(通过引用调用)?
请记住在 Python 中参数是通过赋值来传递的。 由于赋值只是创建了对象的引用,因此在调用者和被调用者的参数名称之间没有别名,所以本身是没有按引用调用的。 你可以通过多种方式实现所需的效果。
通过返回一个结果元组:
deffunc2(a,b):
a="new-value"# a and b are local names
b=b+1# assigned to new objects
returna,b# return new values
x,y="old-value",99
x,y=func2(x,y)
print(x,y)# output: new-value 100
这几乎总是最清晰明了的解决方案。
通过使用全局变量。 这种方式不是线程安全的,而且也不受推荐。
通过传递一个可变 (即可原地修改的) 对象:
deffunc1(a):
a[0]="new-value"# "a" references a mutable list
a[1]=a[1]+1# changes a shared object
args=["old-value",99]
func1(args)
print(args[0],args[1])# output: new-value 100
通过传递一个会被改变的字典:
deffunc3(args):
args["a"]="new-value"# args is a mutable dictionary
args["b"]=args["b"]+1# change it in-place
args={"a":"old-value","b":99}
func3(args)
print(args["a"],args["b"])
或者在一个类实例中捆绑值:
classcallByRef:
def__init__(self,/,**args):
forkey,valueinargs.items():
setattr(self,key,value)
deffunc4(args):
args.a="new-value"# args is a mutable callByRef
args.b=args.b+1# change object in-place
args=callByRef(a="old-value",b=99)
func4(args)
print(args.a,args.b)
几乎没有任何适当理由将问题如此复杂化。
你的最佳选择是返回一个包含多个结果的元组。
以上是 python如何编写带输出参数的函数(通过引用调用)? 的全部内容, 来源链接: utcz.com/z/520605.html