Найти - Пользователи
Полная версия: возврат данных из рекурсивной функции
Начало » Python для новичков » возврат данных из рекурсивной функции
1
BIA
Здравствуйте уважаемые.

Помогите разобраться с поведением функции, а точнее с результатом который она должна вернуть.(возвращается объект None)

#! /usr/bin/python
# -*- coding: utf-8 -*-

import os, sys

#def prefix(name, d):
def prefix(name):
"""
возвращается имя файла с добавлением
префикса вида: name_file.XXX
"""
if os.path.exists(name):
if name.split('.')[-1].isdigit():
print '%s is digit'%name.split('.')[-1]
name='.'.join(['.'.join(name.split('.')[:-1]), str(int(name.split('.')[-1])+1)])
print 'new name is %s'%name
#prefix(name, d)
prefix(name)
else:
print '%s is string'%name.split('.')[-1]
#prefix(name+'.0', d)
prefix(name+'.0')
else:
print '%s name not exists'%name
print 'type is %s'%type(name)
#d['res']=name
return name # 1) возвращает объект типа None
#return name # 2) возвращает первоначальное значение name
#return d['res']

d={}
name=sys.argv[1]
#new_name=prefix(name, d)
new_name=prefix(name)
print new_name
print d
Пример вывода для случая 1)

&> python file_prefix.py task1

task1 is string

task1.0 name not exists
type is <type ‘str’>
None
{'res': ‘task1.0’}

Пример вывода для случая 2)

&> python file_prefix.py task1

task1 is string

task1.0 name not exists
type is <type ‘str’>
task1
{'res': ‘task1.0’}



В общем ожидал на выходе из функции новое имя файла с добавлением префикса(в случае если и префикс есть то инкремент префикса) - а получаю либо объект None либо входное имя.
Подскажите что происходит?

Решить проблему получилось введением в функцию глобальной переменной или добавлением в аргументы функции словаря - но это какие то лишние телодвижения.
Isem
Замените везде вызов prefix(…) на return prefix(…)
BIA
как все просто) Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB