Я нашел функции, которые напоминают Python functools.partial
более полезный в JavaScript:
function partial(fn) {
return partialWithScope.apply(this,
Array.prototype.concat.apply([fn, this],
Array.prototype.slice.call(arguments, 1)));
}
function partialWithScope(fn, scope) {
var args = Array.prototype.slice.call(arguments, 2);
return function() {
return fn.apply(scope, Array.prototype.concat.apply(args, arguments));
};
}
, Почему Вы хотели бы использовать его? Общая ситуация, где Вы хотите использовать это, состоит в том, когда Вы хотите связать this
в функции к значению:
var callback = partialWithScope(Object.function, obj);
Теперь, когда обратный вызов называют, this
точки к obj
. Это полезно в ситуациях с событием или оставлять некоторое свободное место, потому что оно обычно делает код короче.
Приправление карри подобно частичному с различием, что функция, приправляющие карри возвраты просто принимают один аргумент (насколько я понимаю это).
Если вы хотите преобразовать "локализованные" числа, такие как американская форма "2 147 483 647", вы можете использовать функцию atof ()
из модуля locale . Пример:
import locale
locale.setlocale(locale.LC_NUMERIC, 'en_US')
print locale.atof('1,234,456.23') # Prints 1234456.23
Что касается дробей, Python теперь обрабатывает их напрямую (начиная с версии 2.6); их можно даже построить из строки:
from fractions import Fraction
x = Fraction('1/4')
print float(x) # 0.25
Таким образом, вы можете анализировать число, записанное любым из первых трех упомянутых вами способов, только с помощью двух указанных выше стандартных модулей:
try:
num = float(num_str)
except ValueError:
try:
num = locale.atof(num_str)
except ValueError:
try:
num = float(Fraction(num_str))
except ValueError:
raise Exception("Cannot parse '%s'" % num_str) # Or handle '42 billion' here
# 'num' has the numerical value of 'num_str', here.
Построить его при pyparsing должно быть довольно просто - фактически, это один из учебников Проекты pyparsing кое-что из этого делают ( wordsToNum.py
на этой странице ) кое-что из этого уже делают. Вы говорите о вещах, которые на самом деле не имеют стандартного представления (стандарт в смысле ISO 8602, а не стандарт в смысле «что все знают»), поэтому легко может быть, что никто не сделал именно то, что вы ищете. для.
babel поддерживает первый регистр (числа i18n с запятыми). Документы: http://babel.edgewall.org/wiki/ApiDocs/babel.numbers .
Поддержку простых именованных чисел не должно быть слишком сложно кодировать самостоятельно, как и с дробями.
Я не слышал ни об одном. Вы знаете такую библиотеку для других языков? Таким образом, вы можете использовать их документацию и тесты.
Если вы не можете его найти, напишите кучу тестовых примеров, и мы поможем вам заполнить код синтаксического анализа.
Google должен иметь его, попробуйте поискать 5,5 миллиарда * 10, но я не думаю у них есть открытый исходный код для всего подобного. В зависимости от того, как вам нужно его использовать, вы можете использовать Google для выполнения некоторых работ;)