当前位置: 首页 > 面试题库 >

Python的执行顺序和编码风格

司马渝
2023-03-14
问题内容

我是Python的新手,所以如果问题太简单,请不要发火:)

我已经读过Python是从上到下执行的。

如果是这种情况,为什么程序会如下所示:

def func2(): 
    pass

def func1():
    func2()

def func():
    func1()

if __name__ == '__main__':
    func()

因此,从我所看到的来看,主要功能最后出现,其他功能堆叠在其顶部。

我说错了吗?如果不是,为什么不从上到下写主函数或函数定义?

编辑:我问为什么我不能这样做:

if __name__ == '__main__':
    func()

def func1():
    func2()

这不是自然秩序吗?因为它是从上到下执行的,所以您一直在底部添加内容。


问题答案:

defs的只是创造的功能。除了解析语法并将函数绑定到这些名称之外,不执行任何代码。

if实际执行的是第一个地方代码。如果先放置它,然后在定义它之前调用一个函数,则结果为NameError。因此,您需要在定义函数之后将其放置。

请注意,这与“悬挂”函数的PHP或JavaScript不同-
在处理所有函数定义之前,必须先处理和解析所有函数定义。在PHP和JavaScript中,按照您所说的做并在源代码中定义函数的位置低于调用它们的位置,这是完全合法的。(JS中的一个细节是,像这样定义的函数function(){}被吊起,而像这样定义的函数var func1=function(){};则没有被吊起。我还不知道它如何与PHP 5.3中的匿名函数一起工作)。

看到,这里cat()将正确打印,并yip()给您一个NameError,因为解析器yip()在您调用它时尚未达到其定义。

def cat():
  print 'meowin, yo'

cat()

yip()

def yip():
  print 'barkin, yall'

meowin,yo追溯
(最近一次调用为最新):
文件“ cat.py”,第5行,位于ip
()中
NameError:未定义名称“ yip”



 类似资料:
  • 本文向大家介绍Unity3D中脚本的执行顺序和编译顺序,包括了Unity3D中脚本的执行顺序和编译顺序的使用技巧和注意事项,需要的朋友参考一下 事件函数的执行顺序 先说一下执行顺序吧。 官方给出的脚本中事件函数的执行顺序如下图: 我们可以做一个小实验来测试一下: 在Hierarchy视图中创建三个游戏对象,在Project视图中创建三条脚本,如下图所示,然后按照顺序将脚本绑定到对应的游戏对象上:

  • 问题内容: 我需要为测试设置执行顺序,因为我需要先验证一些数据。可以下订单吗? 谢谢 问题答案: 最好不要这样做。 测试应该是独立的。 要做您最想做的就是将代码放入测试调用的函数中。 像那样: 甚至拆分测试类,并将断言放入setUp函数中。 当我拆分班级时,我经常编写更多更好的测试,因为测试被拆分,并且在应该测试的所有情况下我都能看到更好的结果。

  • 本文向大家介绍以下代码的执行顺序?相关面试题,主要包含被问及以下代码的执行顺序?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: //输出2,6,5,3,4,1 为什么呢?具体请参考我的文章: 从promise、process.nextTick、setTimeout出发,谈谈Event Loop中的Job queue

  • 本文向大家介绍setTimeout和Promise的执行顺序?相关面试题,主要包含被问及setTimeout和Promise的执行顺序?时的应答技巧和注意事项,需要的朋友参考一下 参考回答: 首先我们来看这样一道题: 输出答案为2 10 3 5 4 1 要先弄清楚settimeout(fun,0)何时执行,promise何时执行,then何时执行 settimeout这种异步操作的回调,只有主线程

  • 问题内容: Python教程说:“在运算符周围和逗号后使用空格,但不要直接在括号结构内使用:a = f(1,2)+ g(3,4)”。“不直接在包围结构内”到底是什么意思? 问题答案: 这可能来自PEP 8-Python代码样式指南 。具体来说,请参见“表达式和语句中的空白”部分。 从该部分:

  • 下面这段代码中,为何 ws.send_text("1") 必须等待 load_dataset("beans") 加载完毕才会执行呢? 不应该是先执行 ws.send_text("1") 然后再执行 load_dataset("beans") 吗? load_dataset 是一个 加载模型数据集的函数。