打开APP
userphoto
未登录

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

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

一、解释型语言

解释型语言:程序不需要编译,程序在运行时才翻译成机器语言,每执 行一次都要翻译一次。因此效率比较低。

  • 解释型语言是相对于编译型语言存在的,源代码不是直接翻译成机器语言,而是先翻译成中间代码,再由解释器对中间代码进行解释运行。比如Python/JavaScript / Perl /Shell等都是解释型语言。比如Basic语言,专门有一个解释器能够直接执行Basic程 序,每个语句都是执行的时候才翻译。(在运行程序的时候才翻译,专门有一个解释器去进行翻译,每个语句都是执行的时候才翻译。效率比较低,依赖解释器,跨平台性好.)

  • 一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高,但也不能一概而论,部分解释型语言的解释器通过在运行时动态优化代码,甚至能够使解释型语言的性能超过编译型语言。

二、函数定义顺序

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

def a():    print('a')print('hello')a()

上面这个代码执行的时候,首先是知道有一个函数a(),但不看这个函数里面的内容,继续执行下面的代码,当执行过print("hey")后要执行a()时,调用之前记录下的函数a() ,这个时候再看a()中的内容。

如果a()的定义放在后面,则程序不知道有这个函数,则会报错。

print('hello')a()def a():    print('a')NameError: name 'a' is not defined

三、函数之间相互调用顺序

def a():    b()def b():    print("b")print("hey")a()

上面代码,在a()里面先调用了b(),但是程序却没有报错,正常执行。

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

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

之前说过了

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

def a():    b()print("hey")a()def b():    print("b")

上面的代码在程序执行的时候就会报错!

NameError: name 'b' is not defined

因为在执行a()的时候,需要看a函数里面的内容了,而此时里面的b()程序还没有看过,所以报错

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
python中函数的定义和调用的先后顺序问题
Python中命名空间与作用域使用总结
Python程序执行顺序
python函数的使用
《计算机二级Python语言程序设计考试》第5章:函数和代码复用
一、Python函数(函数定义、函数调用)用法详解
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服