【问题标题】:is there some syntax mechanist to write a function definitions after writing the function call in python?在 python 中编写函数调用后,是否有一些语法机制来编写函数定义?
【发布时间】:2021-03-24 02:31:22
【问题描述】:

javascript中的函数提升允许我们做这个事情,这对代码的可读性来说是非常棒的:

function f(a,b){
    return divide(a,b)*a
    
    function divide(a,b){
        return a/b
    }
}

Haskell 允许我们用“where”来做这样的事情。 python是否有任何允许这样做的语法机制?

【问题讨论】:

  • 这能回答你的问题吗? Declare function at end of file in Python
  • 我不认为这真的是那个问题的重复,尽管解决方案确实适用 - 但是,定义 main() 并在最后调用它是 Python 中的常见模式,做它在函数中是一个坏主意,如下所示。

标签: python where-clause hoisting


【解决方案1】:

没有您正在寻找的类型的提升。

Python 做了一些提升,例如在块中声明的变量(如 for 循环变量)被提升到块所在的范围内。

但您不能在变量(或其他名称,如函数)被赋值或定义之前引用它。

如果你想有这种代码顺序,这是一种绕过它的方法,但它对可读性几乎没有帮助:

def f(a, b):
    def _f():
        return divide(a, b)*a

    def divide(a, b):
        return a / b
    return _f()


print(f(10, 5))
}

更一般地说,不要试图将一种语言的约定强加于另一种语言 - 使用具有您喜欢的约定的语言,或者学习您使用的语言的约定。阅读您的代码的其他程序员(包括未来的您)会感谢您。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-18
    • 2014-12-14
    • 2011-05-08
    • 1970-01-01
    • 1970-01-01
    • 2018-12-07
    • 1970-01-01
    • 2022-09-27
    相关资源
    最近更新 更多