2016-05-01 7 views
2

Я использую следующий метод isset(var), чтобы определить, существует ли переменная.Проверьте, существует ли переменная

def isset(variable): 
    try: 
     variable 
    except NameError: 
     return False 
    else: 
     return True 

Он возвращает True, если существует переменная. Но если переменная не существует, я получаю следующее:

Traceback (most recent call last): 
    File "/usr/lib/python2.7/runpy.py", line 162, in _run_module_as_main 
    "__main__", fname, loader, pkg_name) 
    File "/usr/lib/python2.7/runpy.py", line 72, in _run_code 
    exec code in run_globals 
    File "/home/lenovo/pyth/master/vzero/__main__.py", line 26, in <module> 
    ss.run() 
    File "vzero/ss.py", line 4, in run 
    snap() 
    File "vzero/ss.py", line 7, in snap 
    core.display() 
    File "vzero/core.py", line 77, in display 
    stdout(session(username())) 
    File "vzero/core.py", line 95, in session 
    if isset(ghi): #current_sessions[user]): 
NameError: global name 'ghi' is not defined 

Мне не нужны все эти ошибки. Я просто хочу, чтобы он вернул False. Нет выхода. Как я могу это сделать?

+1

Ваша функция не будет работать, потому что вы передаете переменную вашей функции, которой не существует. В противном случае ваш код в порядке. –

ответ

2

Вместо того, чтобы писать сложные вспомогательные функции isset и назвав его

if not isset('variable_name'): 
    # handle the situation 

в том месте, где вы хотите, чтобы проверить наличие переменной сделать:

try: 
    # some code with the variable in question 
except NameError: 
    # handle the situation 
+0

На самом деле, вы указываете, что кадры стека - это то, о чем я даже не мог подумать. +1 –

Смежные вопросы