Python:有没有办法从其他函数访问变量而不使用'global'?

时间:2012-06-15 19:11:34

标签: python scope

这是我正在思考的一个例子:

def check_args():
    if len(sys.argv) < 2:
        sys.exit('Reason')
    if not os.path.exists(sys.argv[1]):
        sys.exit('ERROR: Folder %s was not found!' % sys.argv[1])
    global path
    path = sys.argv[1]

正如您在check_args()成功完成后所知,“path”变量具有通用含义 - 您可以在其他函数中将其用作事实变量。

所以我在想是否有办法访问“路径”,例如check_args.path?

在python v3中怎么样?

2 个答案:

答案 0 :(得分:3)

Python函数是对象。您可以在其上定义所需的任何自定义属性:

def a():
    a.test = 123

a()
a.test # => 123

答案 1 :(得分:0)

您只需返回值

即可
def check_args():
    if len(sys.argv) < 2:
        sys.exit('Reason')
    if not os.path.exists(sys.argv[1]):
        sys.exit('ERROR: Folder %s was not found!' % sys.argv[1])
    path = sys.argv[1]
    return path

my_path = check_args()

或使用if __name__ ...时:

if __name__ == '__main__':
    my_path = check_args()
    results = do_something(path)