2017-08-24 16 views
0

をインポートしてる機能でグローバル変数にアクセスすることができますが、コードの先頭です... user_functionsでどのように私はここに

import sys 
import requests 
import datetime 
import json 
import user_functions 
from time import sleep 
now = datetime.datetime.now() 
import urllib3 
urllib3.disable_warnings() 
requests.packages.urllib3.disable_warnings() 

importgroups = ['staff'] 
key = "" 

私が機能を持っているファイル:

def TDactionuser(bcchangess): 
    global key 
    print key 
    global importgroups 
    if bcchangess['primary_affiliation'] not in importgroups: 
     return 

問題の擦れは、私がキーまたはインポートグループの変数にアクセスすることができないということです。私はこれを回避する方法がわかりません。私はグローバルでグローバルではなく、よく使っています....それは定義されていないと言います。

Traceback (most recent call last): File "./userupload.py", line 66, in user_functions.TDactionuser(bcchangess) File "/TDPROXY/USERIMP/user_functions.py", line 12, in TDactionuser print key NameError: global name 'key' is not defined

これですべてのヘルプはあなたが行うことができます...

+2

である "グローバル" *モジュールレベルでは*意味Pythonで。 'TDactionuser'のグローバルスコープは' user_functions'のトップレベルのスコープで、 'TDactionuser'を呼び出す場所ではありません。いずれにしても、グローバル変数は使用しないでください。これはスパゲティコードの始まりの素晴らしい例です。 **パラメータを渡して返すだけです**。 –

+0

別のファイルから変数にアクセスしようとすると、それを 'import'する必要があります – Mangohero1

+0

しかし、関数をfile1にインポートする際に – BostonMacOSX

答えて

1

を理解されるであろう。

def TDactionuser(bcchangess): 
    from __main__ import key 
    from __main__ import importgroups 
    print key 
    if bcchangess['primary_affiliation'] not in importgroups: 
     return 

しかし、一般的に、それは悪いデザイン

関連する問題