Помогите разобраться с поведением функции, а точнее с результатом который она должна вернуть.(возвращается объект 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
&> 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 либо входное имя.
Подскажите что происходит?
Решить проблему получилось введением в функцию глобальной переменной или добавлением в аргументы функции словаря - но это какие то лишние телодвижения.