Python: переменная по умолчанию в определении не определена при импорте модуля - PullRequest
0 голосов
/ 26 августа 2018

Допустим, у меня есть модуль foo.py, который содержит следующую функцию:

def bar(var=somedict):
    print(var)

В моей основной программе, main.py, я импортирую этот модуль, определяю переменную somedict и затем запускаю функцию bar:

from foo import *
somedict = 'foobar'
bar()

Идея состоит в том, что somedict передается как параметр по умолчанию, без необходимости явно его указывать (чего я хотел бы избежать для реальной программы, которую я пишу).

Однако, Python бросает NameError: name 'somedict' is not defined. Как я могу все еще импортировать модуль и получить желаемую «передачу переменной по умолчанию»? Спасибо!

1 Ответ

0 голосов
/ 26 августа 2018

somedict не определяется при импорте.Итак, from foo import * выдает ошибку NameError: name 'somedict' is not defined

Так измените foo.py следующим образом

somedict={}
def bar(var=None):
    if var is None:
        var=somedict
    print(var)

Теперь вы должны быть в состоянии сделать то, что пытались, в несколько иной форме

import foo
foo.somedict = {'a':1}
foo.bar()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...