Простой в изучении язык, такой как Python, но для чего требуется объявление переменных?
Python очень прост в освоении и понимании; Мне нравится его использование ключевых слов, отсутствие сложного синтаксиса (в отличие от perl, как я слышал) и простых в использовании структур данных. Тем не менее, я не могу смириться с отсутствием объявления переменных, потому что это делает невозможным явное указание Python, какую область видимости должна иметь переменная. Есть ли языки, которые обладают всеми качествами, которые мне нравятся в Python, а также декларацией переменных и, возможно, приличным набором доступных библиотек?
Большое спасибо.
7 ответов
Вы можете попробовать использовать 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) расширений.
Cython во многом похож на Python, но имеет объявление переменных, подобное C (на самом деле, Cython допускает множество вещей, присутствующих в C).
Попробуйте Google Go, если вы не говорите о производственном коде. Языку чуть больше года. Это очень легко учиться. Это предложение только потому, что вы попросили какие-либо языки.
В противном случае ответ Вима Коенена просто сработает для вас.
Как насчет Бу. CLR, очень похожий на Python. Статические типы с выводом типа.
Вы также можете взглянуть на Perl 6, который устраняет проблемы, описанные в Perl 5, но сохраняет преимущества, с возможностью даже иметь строго типизированные переменные. Проблема в том, что это все еще не закончено, и никто не знает, когда это будет...
В любом случае вы можете проверить http://dev.perl.org/, если вы заинтересованы.