python如何编写带输出参数的函数(通过引用调用)?

python

请记住在 Python 中参数是通过赋值来传递的。 由于赋值只是创建了对象的引用,因此在调用者和被调用者的参数名称之间没有别名,所以本身是没有按引用调用的。 你可以通过多种方式实现所需的效果。

  1. 通过返回一个结果元组:

    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

    这几乎总是最清晰明了的解决方案。

  2. 通过使用全局变量。 这种方式不是线程安全的,而且也不受推荐。

  3. 通过传递一个可变 (即可原地修改的) 对象:

    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

  4. 通过传递一个会被改变的字典:

    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"])

  5. 或者在一个类实例中捆绑值:

    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

回到顶部