像 Python 这样易于学习的语言,但需要变量声明?
Posted
技术标签:
【中文标题】像 Python 这样易于学习的语言,但需要变量声明?【英文标题】:Easy-to-learn language like Python, but which requires variable declaration? 【发布时间】:2011-05-13 12:16:29 【问题描述】:Python 非常容易学习和理解;我喜欢它,因为它使用了关键字、缺乏复杂的语法(与 perl 相反,据我所知)以及易于使用的数据结构。但是,我无法忍受缺少变量声明,因为它无法明确告诉 Python 您希望变量具有什么作用域。是否有任何语言具有我喜欢 Python 的所有特性以及变量声明,也许还有一组不错的库可用?
感谢。
【问题讨论】:
Python 的作用域相当容易推断。我真的不明白你的意思。 变量声明与作用域有什么关系?如果你在大多数语言中做“正确的事情”并声明你初始化的地方,你就会遇到完全相同的情况。 @Nick Bastin:在具有真正闭包的语言中,变量声明用于设置范围 - 如果您在函数内声明变量,则该函数内声明的任何其他内容都可以读取和写入(即使稍后调用)。 Python 不允许 赋值 到更高范围的事物(全局范围除外)。 @Amber:当然你的意思是 Python 2.x。 Python 3.x 具有用于此目的的 nonlocal 语句。 @Amber:首先,这既不存在也不存在 - 没有语言可以让您对范围进行完全访问控制(我们没有 ACL 来定义名称传播)。第二点你错了——Python 允许显式分配更高范围内的名称(w/nonlocal
和 global
)。 Python 完全允许 OP 想要的东西,他们可能只是不理解它。
【参考方案1】:
尝试pychecker、pylint、pyflakes 或其他代码检查工具。它们有助于捕获解释器不会抱怨的错误。
【讨论】:
【参考方案2】:您可以尝试使用带有变量声明的 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
你能解释一下这有什么问题吗?此外,就像 Nick Bastin 在评论中所说的那样,如果您解释您的问题是与声明还是范围有关,这将有所帮助。
如果您的问题是语法或静态类型,您可以接受下一个语法吗?
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
This syntax 是 Cython 的名称,Cython 是一种使用编译 (C) 扩展来扩展 Python 的语言。
【讨论】:
【参考方案3】:C#
这里有一些code examples。
【讨论】:
【参考方案4】:如果您不是在谈论生产代码,请尝试 Google 的 Go。语言才一年多。它也很容易学习。这个建议只是因为您要求任何语言。
否则,Wim Coenen 的答案应该对你有用。
【讨论】:
【参考方案5】:您还可以查看 Perl 6,它消除了您在 Perl 5 中描述的问题,但保留了优点,甚至可以选择强类型变量。问题是还没完结,也不知道什么时候……
如果您有兴趣,可以查看dev.perl.org。
【讨论】:
【参考方案6】:Cython 很像 Python,但具有类似于 C 的变量声明(实际上,Cython 允许 C 中存在很多东西)。
【讨论】:
【参考方案7】:Boo 怎么样。 CLR,非常类似于 Python。具有类型推断的静态类型。
【讨论】:
以上是关于像 Python 这样易于学习的语言,但需要变量声明?的主要内容,如果未能解决你的问题,请参考以下文章