2013-08-01 9 views
2

Итак, у меня есть переменная, которую я хочу быть строкой или функцией, которая возвращает строку из данного экземпляра объекта.Сокращение для вызова функции или использования в качестве строки в python

В основном:

def evalstr(var, someob): 
    if callable(var): 
     return var(someob) 
    else: 
     return var 

Это похоже на то, что будет иметь встроенную команду. Для этого существует чистая сокращенная/встроенная функция?

+3

Для этого нет встроенной функции, возможно, более короткий путь, но «короче! = Лучше». Ваша текущая функция понятна и читаема и показывает, что именно она делает на первый взгляд. – Wessie

+1

Я не уверен, что полностью понимаю, что вы хотите изменить, но если вы просто собираетесь сделать менее многословный или более «элегантный» код, измените другое, если на тройной. –

ответ

0

Нет, нет стенографии, потому что это не будет хорошей идеей. Вы могли бы написать выше с помощью предложения try/except TypeError, но я до сих пор не могу представить случай, когда такая функция полезна (может быть, вы могли бы просветить нас?). Докшринк для этой функции, вероятно, будет длиннее, чем тело функции, и от имени одной функции вряд ли удастся вызвать то, что делает функция. Поэтому я полагаю, что либо информация здесь слишком мало, чтобы быть полезной (и вы должны показать нам весь прецедент), либо (и это моя догадка), что вы ошибаетесь в этом.