【问题标题】:Easy-to-learn language like Python, but which requires variable declaration?像 Python 这样易于学习的语言,但需要变量声明?
【发布时间】:2023-03-11 16:00:02
【问题描述】:

Python 非常容易学习和理解;我喜欢它,因为它使用了关键字、缺乏复杂的语法(与 perl 相反,据我所知)以及易于使用的数据结构。但是,我无法忍受缺少变量声明,因为它无法明确告诉 Python 您希望变量具有什么作用域。是否有任何语言具有我喜欢 Python 的所有特性以及变量声明,也许还有一组不错的库可用?

感谢。

【问题讨论】:

  • Python 的作用域相当容易推断。我真的不明白你的意思。
  • 变量声明与作用域有什么关系?如果你在大多数语言中做“正确的事情”并声明你初始化的地方,你就会遇到完全相同的情况。
  • @Nick Bastin:在具有真正闭包的语言中,变量声明用于设置范围 - 如果您在函数内声明变量,则该函数内声明的任何其他内容都可以读取和写入(即使稍后调用)。 Python 不允许 赋值 到更高范围的事物(全局范围除外)。
  • @Amber:当然你的意思是 Python 2.x。 Python 3.x 具有用于此目的的 nonlocal 语句。
  • @Amber:首先,这既不存在也不存在 - 没有语言可以让您对范围进行完全访问控制(我们没有 ACL 来定义名称传播)。第二点你错了——Python 允许显式分配更高范围内的名称(w/nonlocalglobal)。 Python 完全允许 ​​OP 想要的东西,他们可能只是不理解它。

标签: python declaration declare variable-declaration


【解决方案1】:

尝试pycheckerpylintpyflakes 或其他代码检查工具。它们有助于捕获解释器不会抱怨的错误。

【讨论】:

    【解决方案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 syntaxCython 的名称,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。具有类型推断的静态类型。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2010-10-08
                • 1970-01-01
                • 2014-05-30
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2022-12-05
                • 1970-01-01
                相关资源
                最近更新 更多