程序结束、脚本语言、LISP、Python

程序结束

程序结束似乎没有人类有感情,记录离开的状态也许可以留下回忆。

退出状态

  • 一般程序结束会返回整形值表达最后的状态。

  • 操作系统或解释器获取此状态,可确定程序运行正常与否,Shell或批处理脚本可以用此决定走向。

  • 程序结束返回值一般保存在父进程内核结构中,Shell解释器可通过操作系统标准API获取其返回值,同时也提供符号供Shell脚本使用,比如$?, %errorlevel%.

退出方式

  • C语言一般通过exit(..)反馈结束值,在main函数中用return ...一样的作用。

    • exit好理解,将返回值传递给内核。return语句并没有调用exit函数,但编译器一般在main函数偷偷后面插入了一些代码。比如Windows下插入了__scrt_common_main_seh函数(调用main函数),在执行完main函数后,将返回值(一般放置于eax寄存器)当参数丢给exit函数。
  • Shell使用内置命令exit退出脚本。

退出数值

  • Shell一般遵循0作为成功返回,非0是错误返回。

脚本语言

如果脚本语言不能迅速解决问题,那么它是无用的。如计算1369 + 4589的数值,用C语言需要编写这段代码并编译,再执行。用Python只需要输入1369 + 4589即可。

LISP

上个世纪50年代,一种被用于人工智能研究的语言LISP诞生,时至今日,依然有LISP方言在研究和使用中。

LISP特点

  • LISP语言和FORTH不同,它很依赖括号,如 1 + 2 * 3,代码为(+ 1 (* 2 3)),为前缀表达式。

  • FORTH语言是一种基本没有语法的语言,计算表达式采用栈式结构。如计算 1 + 2, 代码为 1 2 +, 也被称为后缀表达式或者逆波兰表达式。它的优点是执行简单,不需要括号改变优先级,也不需要普通的优先级概念。

Python

作为一门脚本语言,在人工智能领域用起来方便灵活,语法简洁自由是很大原因。

查看字节码

如下示例用dis库查看字节码:

复制代码
  >>> import dis
  >>> dis.dis(lambda x, y, z: (x + y) * z)
  1           0 LOAD_FAST                0 (x)
              2 LOAD_FAST                1 (y)
              4 BINARY_ADD
              6 LOAD_FAST                2 (z)
              8 BINARY_MULTIPLY
             10 RETURN_VALUE

AST

如下示例用ast库查看抽象语法树。

>>> import ast

>>> ast.dump(ast.parse("(3 - 1) * 2"))

'Module(body=[Expr(value=BinOp(left=BinOp(left=Num(n=3), op=Sub(), right=Num(n=1)), op=Mult(), right=Num(n=2)))])'


若文章对您有帮助,欢迎关注。助您在编程路上越走越好!

微风不燥,阳光正好,你就像风一样经过这里,愿你停留的片刻温暖舒心。

我是程序员小迷(致力于C、C++、Java、Kotlin、Android、iOS、Shell、JavaScript、TypeScript、Python等编程技术的技巧经验分享),若作品对您有帮助,请关注、分享、点赞、收藏、在看、喜欢,您的支持是我们为您提供帮助的最大动力。

相关推荐
BoBoZz192 小时前
ExtractSelectionUsingCells选择和提取三维模型中的特定单元(Cell)
python·vtk·图形渲染·图形处理
郑州光合科技余经理2 小时前
实战分享:如何构建东南亚高并发跑腿配送系统
java·开发语言·javascript·spring cloud·uni-app·c#·php
爱装代码的小瓶子2 小时前
【c++进阶】C++11新特性:一切皆可{}初始化
开发语言·c++·visual studio
韩立学长2 小时前
【开题答辩实录分享】以《跳蚤市场二手物品交易推荐平台》为例进行选题答辩实录分享
python·django
yaoxin5211232 小时前
273. Java Stream API - Stream 中的中间操作:Mapping 操作详解
java·开发语言·python
java1234_小锋2 小时前
[免费]基于Python的Flask+Vue物业管理系统【论文+源码+SQL脚本】
后端·python·flask·物业管理
free-elcmacom2 小时前
机器学习高阶教程<5>当机器学习遇上运筹学:破解商业决策的“终极难题”
人工智能·python·机器学习
技术小甜甜2 小时前
[Python实战] 告别浏览器驱动烦恼:用 Playwright 优雅实现网页自动化
开发语言·python·自动化
vortex52 小时前
Bash 替换机制(一):命令替换与进程替换
开发语言·chrome·bash
小徐Chao努力2 小时前
【GO】Gin 框架从入门到精通完整教程
开发语言·golang·gin