python中函数的定义和调用的先后顺序问题

系统 1519 0

版权声明:转载请注明作者(独孤尚良dugushangliang)出处: https://blog.csdn.net/dugushangliang/article/details/89016588

 

踩过多少次坑后,意识到这个问题得好好琢磨琢磨,所以现在记录下想明白了的其中的情况。

python是不需要先编译的,所以这决定了你调用函数之前得知道有这个函数,所以执行代码前需要有要用到的函数的定义。

            
              def a():
    print("hello!")

print("hey")
a()
            
          

上面这个代码执行的时候,首先是知道有一个函数a(),但不看这个函数里面的内容,继续执行下面的代码,当执行过print("hey")后要执行a()时,调用之前记录下的函数a(),如果a()的定义放在后面,则程序不知道有这个函数,则会报错。

那么为什么函数之间互相调用不需要先后顺序呢?

            
              def a():
    b()

def b():
    print("hello!")

print("hey")
a()
            
          

上面的代码为什么可以正确执行呢?看我刚刚说的话。

程序执行的时候,读取到函数的定义的时候,这是记录下函数的名单,知道有这么些函数,但是不看函数里面的内容,当需要执行函数的时候才去读取这个函数里面的内容。

上面的代码在执行的时候,程序先见了a()的定义,又见了b()的定义,再执行a()的时候,直接去找程序见过的函数了。如果调用函数的时候程序还没见过这个函数,是不能成功运行的。

可以看下面的代码验证这个想法。

第一个代码验证:

            
              print("hey")
a()

def a():
    b()

def b():
    print("hello!")
            
          

报错如下图所示。

这是因为执行到a()的时候程序还没见过这个函数的定义。

第二个代码验证:

            
              def a():
    b()

print("hey")
a()

def b():
    print("hello!")
            
          

报错如下图所示。

执行a()的时候程序见过了a()的定义,所以可以调用a(),但a()中调用的b()还没见过,所以报错。

 

独孤尚良dugushangliang——著


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论