Простой в изучении язык, такой как Python, но для чего требуется объявление переменных?

Python очень прост в освоении и понимании; Мне нравится его использование ключевых слов, отсутствие сложного синтаксиса (в отличие от perl, как я слышал) и простых в использовании структур данных. Тем не менее, я не могу смириться с отсутствием объявления переменных, потому что это делает невозможным явное указание Python, какую область видимости должна иметь переменная. Есть ли языки, которые обладают всеми качествами, которые мне нравятся в Python, а также декларацией переменных и, возможно, приличным набором доступных библиотек?

Большое спасибо.

7 ответов

Попробуйте pychecker, pylint, pyflakes или другие инструменты проверки кода. Они помогают выявлять ошибки, на которые переводчик не жалуется.

Вы можете попробовать использовать Python с объявлениями переменных:

>>> x = 0 # a global variable
>>> def fact(n): #n is a parameter
...     x = 0 # local variable declaration
...     z = 1 # declaration and initialization
...     for i in range(1, n + 1): # a loop variable is defined inline
...         z = z * i
...     return z
...     
>>> x = 5 # the global x
>>> fact(x)
120

Можете ли вы объяснить, в чем проблема с этим? Кроме того, как сказал Ник Бастин в комментарии, было бы полезно, если бы вы объяснили, связана ли ваша проблема с декларацией или областью действия.

Если ваша проблема связана с синтаксисом или статической типизацией, будет ли приемлем следующий синтаксис для вас?

def f(double x):
    return x**2-x

def integrate_f(double a, double b, int N):
    cdef int i
    cdef double s, dx
    s = 0
    dx = (b-a)/N
    for i in range(N):
        s += f(a+i*dx)
    return s * dx

Этот синтаксис является синтаксисом Cython, языка для расширения Python с использованием скомпилированных (C) расширений.

C#

Вот несколько примеров кода.

Cython во многом похож на Python, но имеет объявление переменных, подобное C (на самом деле, Cython допускает множество вещей, присутствующих в C).

Попробуйте Google Go, если вы не говорите о производственном коде. Языку чуть больше года. Это очень легко учиться. Это предложение только потому, что вы попросили какие-либо языки.

В противном случае ответ Вима Коенена просто сработает для вас.

Как насчет Бу. CLR, очень похожий на Python. Статические типы с выводом типа.

Вы также можете взглянуть на Perl 6, который устраняет проблемы, описанные в Perl 5, но сохраняет преимущества, с возможностью даже иметь строго типизированные переменные. Проблема в том, что это все еще не закончено, и никто не знает, когда это будет...

В любом случае вы можете проверить http://dev.perl.org/, если вы заинтересованы.

Другие вопросы по тегам