如何在 Python 中的函数之间共享变量?

新手上路,请多包涵

我有两个函数 fun1fun2 ,它们分别将字符串和数字作为输入。他们也都获得相同的变量 a 作为输入。这是代码:

 a = ['A','X','R','N','L']

def fun1(string,vect):
    out = []
    for letter in vect:
        out. append(string+letter)
    return out

def fun2(number,vect):
    out = []
    for letter in vect:
        out.append(str(number)+letter)
    return out

x = fun1('Hello ',a)
y = fun2(2,a)

这些函数执行一些无意义的操作。我的目标是以变量 a 在函数之间共享的方式重写代码,以便它们不再将其作为输入。

删除变量 a 作为输入的一种方法是在函数本身中定义它,但不幸的是,这不是很优雅。实现我的目标的可能方法是什么?

这些函数应该以相同的方式运行,但输入参数应该只是字符串和数字( fun1(string)fun2(number) )。

原文由 Federico Gentile 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
2 个回答

面向对象的 编程在这里有帮助:

 class MyClass(object):
    def __init__(self):
        self.a = ['A','X','R','N','L']  # Shared instance member :D

    def fun1(self, string):
        out = []
        for letter in self.a:
            out.append(string+letter)
        return out

    def fun2(self, number):
        out = []
        for letter in self.a:
            out.append(str(number)+letter)
        return out

a = MyClass()
x = a.fun1('Hello ')
y = a.fun2(2)

原文由 ospahiu 发布,翻译遵循 CC BY-SA 3.0 许可协议

使用类的替代方法:您可以使用 global 关键字来使用位于函数外部的变量。

 a = 5
def func():
    global a
    return a+1

print (func())

这将打印 6。

但是应该尽量避免使用全局变量。

原文由 involtus 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏