Почему Python не позволяет дефисы

Я всегда задавался вопросом, почему мы не можем использовать дефисы промежуточные имена функций и имена переменной в Python

Попробовав языки функционального программирования как Lisp и Clojure, где дефисы позволяются. Почему Python не делает этого.

# This won't work -- SyntaxError
def is-even(num):
    return num % 2

# This will work
def is_even(num):
    return num % 2

Я уверен, что сэр Guido, должно быть, сделал это из-за некоторых причин. Я погуглил, но не мог суметь найти ответ. Кто-либо может пролить некоторый свет на это?

21
задан 2 revs, 2 users 100% 14 January 2010 в 13:31
поделиться

4 ответа

Используйте опцию . Опция (см. Документацию здесь: http://docs.jquery.com/plugins/validation/validate#toptions )

$('#RegisterForm').validate({
        rules: {
            Country:{required: true},
            State:{required: true}
        },
        messages: {
            Country:{required: "Select Country"},
            State:{required: "Select State"}
        },
        errorPlacement: function(error, element) {
            error.appendTo( element.parent("td").next("td") );
        }
    });

Конечно, вам придется адаптировать код вашей ситуации.

-121--3126715-

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

my_var = is-even(another_var)

это - даже (only_var) Функция - даже , или это вычитает результат функции даже из переменной с именем ?

Диалекты Lisp не имеют этого Проблема, поскольку они используют префиксную запись. Например, существует четкая разница между

(is-even 4)

и

(- is (even 4))

в LISP.

45
ответ дан 29 November 2019 в 06:36
поделиться

Поскольку Python использует запись INFIX для представления расчетов и дефис и минус имеет тот же самый код ASCII. Вы можете иметь неоднозначные случаи, такие как:

a-b = 10
a = 1
b = 1

c = a-b

Что такое ответ? 0 или 10?

9
ответ дан 29 November 2019 в 06:36
поделиться

Поскольку он сделает парсер еще более сложным. Это тоже будет запутано для программистов.

Рассмотрим Def - даже (Num): : Теперь, если - это - это глобальная переменная, что происходит?

также обратите внимание, что - Является ли оператор вычитания в Python, поэтому дополнительно усложняет анализ.

7
ответ дан 29 November 2019 в 06:36
поделиться
is-even(num)

содержит дефис? Я думал, что это вычитание значения, возвращаемого функцией даже с аргументом num, из значения is.

Как говорит @jdupont, синтаксический анализ может быть непростым.

Марк

0
ответ дан 29 November 2019 в 06:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: