打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

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

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

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

  1. def a():
  2. print("hello!")
  3. print("hey")
  4. a()

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

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

  1. def a():
  2. b()
  3. def b():
  4. print("hello!")
  5. print("hey")
  6. a()

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

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

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

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

第一个代码验证:

  1. print("hey")
  2. a()
  3. def a():
  4. b()
  5. def b():
  6. print("hello!")

报错如下图所示。

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

第二个代码验证:

  1. def a():
  2. b()
  3. print("hey")
  4. a()
  5. def b():
  6. print("hello!")

报错如下图所示。

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

 

独孤尚良dugushangliang——著

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
python 中函数的定义以及调用先后顺序问题
Python程序执行顺序
python知识巩固 | lambda函数表达式,玩转函数速写
Python知识点:lambda 表达式
第5天:Python函数
Python中的函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服