访问模块功能内的变量

时间:2020-04-10 20:43:41

标签: python-3.x

我有common/auth.py

#!/usr/bin/env python

import subprocess


def process_token():
    global TOKEN
    TOKEN = subprocess.Popen("auth-token",
                             shell=True,
                             stdout=subprocess.PIPE,
                             universal_newlines=True)

我也有script.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import common.auth

token = TOKEN.stdout.read()
headers = {'Authorization': "{token}"}

为什么我不能使用python模块中的变量?我收到错误消息:Undefined variable 'TOKEN'

1 个答案:

答案 0 :(得分:1)

在调用TOKEN之前,未定义

process_token。无论如何,global变量在大多数情况下都是一个坏主意,请避免使用它们,直到您真正知道自己在做什么。对于common/auth.py

,这里有一个更好的设计
import subprocess

def process_token():
    return subprocess.Popen(
        "auth-token", shell=True, stdout=subprocess.PIPE, universal_newlines=True
    )

script.py

#!/usr/bin/env python
# -*- coding: utf-8 -*-
import common.auth

token = common.auth.process_token()
headers = {'Authorization': "{token}"}