Можно ли передать ключевое слово = значение в качестве аргумента функции, где значение является аргументом из другой функции?NameError: имя не определено при использовании keyword = value
Например
Я определяю upper_dir
upper_dir='/somefolder'
Я определяю мой рабочий реж:
def get_dir():
repo_path = subprocess.call(["pwd"])
return repo_path
я прохожу upper_dir функции create_branch:
branch = gitmods.create_branch(hostname, upper_dir)
Теперь create_ филиал должен вызвать SYSCMD функцию, передавая ее new_branch и upper_dir:
def create_branch(hostname, upper_dir):
random = randint(100000, 999999)
new_branch = 'git checkout -b removes-node-{0}'.format(random)
syscmd(new_branch, upper_dir)
repo_branch = 'git branch | grep "*"'
branch = syscmd(repo_branch)
branch = branch.split()[1]
return branch
Некоторые другие функции вызывают SysCmd, но они только передать ему 1 аргумент. Я пытаюсь получить «УХО =» по умолчанию значения, содержащегося upper_dir
def syscmd(command, current_dir=upper_dir):
current_dir=str(get_dir())
popen = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=current_dir)
out, err = popen.communicate()
out = out.rstrip()
return out
Если SysCmd функция не получила upper_dir, я хочу, чтобы по умолчанию значения от get_dir (который является текущий каталог линукса в результате pwd
насколько я могу сказать, питон может получить ключевое слово = аргументы значения для функции, и по умолчанию для определенного значения, если не предусмотрен никаких аргументов. Но что происходит, когда ваш аргумент не строка, но вместо этого аргумент от другой функции?
Я получаю эту ошибку:
def syscmd(command, current_dir=upper_dir):
NameError: name 'upper_dir' is not defined
'upper_dir' не определяется, когда файл скомпилирован. –
Как я могу решить это, когда upper_dir определен в __main__, но функции, которые он передает, находятся в модуле? – ARL
Как и в стороне, 'os.getcwd()' также получает текущий рабочий каталог. – tdelaney