Моя пользовательская функция возвращает неправильную вещь, а не скомпилированную строку в Python - PullRequest
0 голосов
/ 01 ноября 2019

Я делаю модуль под названием IndeX. Существует переменная __version__, которая является самой новой версией. У меня есть функция, которая выводит информацию об обновлении в зависимости от аргумента v. Я хочу, чтобы эта функция выводила информацию о последнем обновлении, если v равно 'n'. Итак, у меня есть тонна переменных типа _update_desc1_0 (конечно, это не всегда 1_0). У меня есть пользовательская функция _versionTransform(v), которая преобразует, например, float(1.3) в str(1_3). Я хочу преобразовать '_update_desc' + _versionTransform(__version__) в, например, _update_desc1_4, а затем вернуть его.

Я пытался сделать некоторые скучные вещи с compile() и exac(), но это не сработало.

Функция преобразования

def _versionTransform(v):
    if type(v) == float:
        v = str(v)
        result = v.replace('.', '_')
        return result

Функция версии

def getUpdate(v):
    if v == 'new' or v == 'newest' or v == 'New' or v == 'Newest' or v == 'n' or v == 'NEW' or v == \
    'NEWEST' or v == 'N':
        trans1 = _versionTransform(__version__)
        trans2 = '_update_desc' + trans1
        return exec(trans2)

Я хотел, чтобы она выводила информацию о последней версии, новозвращается либо '_update_desc1_3', либо None

1 Ответ

0 голосов
/ 01 ноября 2019

О, я решил это. Проблема в том, что я набрал return exec(trans2) вместо return eval(trans2)

...