oeasy教您玩转python - 006 - # hello world
Hello World!
回忆上次内容
python3
的程序是一个 5.3M 的可执行文件python3
里面全都是 cpu 指令- 可以执行的那种指令
我们可以把指令对应的汇编找到
objdump -d ~/python3 > python3.asm
汇编语句是和当前机器架构的指令集相关的
uname -a
可以查询指令集
我们执行的过程其实就
- 系统执行
python3
这个可执行文件 - 给了
python3
一个参数hello.py
python3
对于hello.py
一句句的解释执行- 在显示器输出了
hello world
python3
执行完毕- 把控制权交回给 shell
- 系统执行
- 这就是我们执行
hello world
的过程 - 为什么我们学编程总是从
hello world
开始呢?
为啥总是Hello World
奇怪
- 不论学习什么编程语言
- 总是从
Hello World
开始 - 为什么呢?
正在上传…重新上传取消
起源
这一切都要从头说起
- 目前操作系统的老祖宗
unix
- 和他对应的编程语言
c
- 是一切的开始
- 目前操作系统的老祖宗
- 1969 年,由于所在的
Multics
项目失败 无所事事的两人
Kenneth Thompson
Dennis Ritchie
希望能在 PDP 机器上继续玩一个游戏
- 这个游戏是
Multics
下的star travel
- 他们想要做一个操作系统
unix
- 这个游戏是
为了制作操作系统
- 他们创造了
c
语言的编译器
- 他们创造了
当时
c
是他们为了开发unix
而制作的语言unix
是为了能玩star travel
而制作的系统
c
和unix
只能运行在当时的机器上- 没有文档
- 没有书籍
- 甚至没有人知道
hello world!
与他们同在 bell 实验室的
Brian Wilson Kernighan
- 开始写 c 语言的类似于文档说明书的东西
手稿
整体的函数叫做
main
函数- 里面输出函数就叫做
printf
函数
- 里面输出函数就叫做
不管是
main
,还是printf
都有小括号
小括号
从那个时候就和函数相关
- 为什么输出字符要用
printf
来当做函数名呢?
print 来历
刚才那 1974 年的手稿
- 写在打字机用纸的上面
- 打字机就是当时的显示器
- 所以用
print
来表示输出 f
的意思是format
格式printf
是按格式输出
printf函数
后面有小括号
小括号
里面放的是函数
的参数
print("hello world")
中函数print
的参数
是"hello world"
双引号
引起来意味着hello world
是字符串
- 输出的内容就是这个字符串
("hello world")
从
c语言
开始- 最早的入门教学程序都做一个
hello world
- 习惯成自然之后
- 所有的编程语言第一个例子都是
hello world
- 是一种规矩或者文化
- 最早的入门教学程序都做一个
成书
1978 年,
Kernighan
和Ritchie
出版了这本书- 不厚,很薄
- 轻松的语言风格
- 因为
c
的目的就是让人像玩一样编程 - 而不是记忆各种 cpu 汇编指令
蓬勃发展的计算机技术
- 使得
c
语言成为系统语言的老大 python
的源代码就是用纯 c 编的linux
内核 也是用纯 c 编的- 所以
c
还是非常核心的啊
- 使得
虽说
python
是用纯c
编写的- 不过
python
一旦出现之后就可以简化好多东西
- 不过
内置函数
- 我们可以看到游乐场上来就自带一些函数和模块
- 比如 dir() 这个函数
- 调用这个函数可以知道当前游乐场载入了哪些模块
- 比如
builtins
这个模块 - 这
builtins
里面又有些什么呢?
dir()
dir(__builtins__)
buildins
意思是在里面构建好的- 这里面有好多内置的函数
包括我们熟悉的
- exit()
- print()
- dir()
- 如果我想要查询更详细的信息应该如何呢?
help(__builtins__)
help(__builtins__)
- 我们可以查询到
__builtins__
模块的帮助文件 - 返回的这些函数和子模块都隶属于
__builtins
这个模块 除了内置的、这些不用引入就可以用的模块之外
- 还可以引入外部模块
导入模块
import __hello__
- 这个模块可以输出经典的一句话
- 还可以把新模块导入到游乐场
注意!
- 导入
__hello__
模块前后游乐场中的模块增加了
- 导入
总结
hello world
不是从来就有的- 来自于
unix
和c
- 虽然我们今天有各种先进的学习手段
最早的高级语言学习是从最早的那张打字机用纸的手写代码起源的
- 所以输出用的是
print
打印 - 最早输出的是字符串是
"hello world"
- 这就成了一个迷因
- 所以输出用的是
等等!
- 计算机里面不都是二进制的 0 和 1 吗
- 哪里来的
hello
中的h
之类的字符呢?
- 我们下次再说!
oeasy教您玩转python - 006 - # hello world的更多相关文章
- oeasy教您玩转vim - 56 - # 字符可视化模式
可视化编辑 回忆上节课内容 我们学习了关于模式匹配中使用参数 单个参数 :%s/<h2>\(.*\)</h2>/ - \1/g 多个参数 :%s/<img src=\ ...
- oeasy教您玩转vim - 57 - # 行可视化
可视化编辑 回忆上节课内容 上次我们了解到可视模式 其实可视化对应三种子模式 字符可视模式 v 行可视模式 大写V 块可视模式ctrl+v 我们先来了解字符可视化模式 快捷键 v 可配合各种mot ...
- oeasy教您玩转linux010203显示logo
我们来回顾一下 上一部分我们都讲了什么?
- oeasy 教您玩转linux010101查看内核uname
linux([?l?n?ks]) 是什么????? 咱们这次讲点什么呢?这次咱们讲讲这个 linux([?l?n?ks]),什么是 linux([?l?n?ks])呢?这linux([?l?n?ks] ...
- oeasy教您玩转linux010202软件包管理apt
顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010201持续输出yes
我们来回顾一下 上一部分我们都讲了什么?
- oeasy教您玩转linux010108到底哪个which
到底哪个which 回忆上次内容 我们上次讲了查找命令位置whereis 我想找到whereis的位置怎么办?
- oeasy教您玩转vim - 53 - # 批量替换
查找细节 回忆上节课内容 我们温习了关于搜索的相关内容 /正向,?反向 n保持方向,N改变方向 可以设置 是否忽略大写小写 是否从头开始查找 是否高亮显示 还有一些正则表达式的使用方法 行头行尾 ^$ ...
- oeasy教您玩转linux-010110内容回顾
我们来回顾一下 我们都讲了什么?
随机推荐
- TensorFlow.NET机器学习入门【5】采用神经网络实现手写数字识别(MNIST)
从这篇文章开始,终于要干点正儿八经的工作了,前面都是准备工作.这次我们要解决机器学习的经典问题,MNIST手写数字识别. 首先介绍一下数据集.请首先解压:TF_Net\Asset\mnist_png. ...
- 『学了就忘』vim编辑器基础 — 97、vim使用技巧
目录 1.在vim中导入其他文件内容或命令结果 (1)导入其他文件内容 (2)在vim中执行系统命令 (3)导入命令结果 2.设定快捷键 3.字符替换 4.多文件打开 vim使用技巧,就是vim编辑器 ...
- elementUI表单嵌套表格并对每行进行校验
elementUI表单嵌套表格并对每行进行校验 elementUI 表单嵌套表格并进行校验. 目录 效果展示 代码链接 关键代码 完整代码 效果展示 先看看这是不是需要的效果^_^ 如图,Elem ...
- JavaScript实现简单的打字游戏
完整项目下载:https://download.csdn.net/download/weixin_44893902/13131694 演示地址:https://url_777.gitee.io/typ ...
- .net 经验总结
先做个自我介绍,我是 2015 年大四实习开始学习的 .net,如果从 2016 年毕业开始算,到目前为止已有 5 年的 web 开发相关经验了,自认为并不是技术很厉害的人,但是也有一点个人的经验,希 ...
- Asp.Net Core 使用Monaco Editor 实现代码编辑器
在项目中经常有代码在线编辑的需求,比如修改基于Xml的配置文件,编辑Json格式的测试数据等.我们可以使用微软开源的在线代码编辑器Monaco Editor实现这些功能.Monaco Editor是著 ...
- 在本地开启了代理,postman可以正常发起外部请求,但Java代码却请求失败,已解决
在本地开启了代理,postman可以正常发起外部请求,但Java代码却请求失败,已解决 现象:开了vpn访问公司服务器,postman可以正常发起服务器请求,但是java代码请求失败,连接超时.包括在 ...
- 首次分享,大厂资深测试做Api接口自动化测试的关键思路都在这里了
引言 与UI相比,接口一旦研发完成,通常变更或重构的频率和幅度相对较小.因此做接口自动化的性价比更高,通常运用于迭代版本上线前的回归测试中. 手工做接口测试,测试数据和参数都可以由测试人员手动填写和更 ...
- 【Python+Django+Pytest】数据库异常pymysql.err.InterfaceError: (0, '') 解决方案
问题背景: 接口自动化测试平台,在执行测试案例之外,还需要做以下五件事情(或步骤): 1.查询用户在数据准备中预置的测试套件层数据初始化相关sql (setUp_class方法中) 2.查询用户在数 ...
- 初识python: 自定义函数
什么是函数? 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.函数能提高应用的模块性,和代码的重复利用率. 函数的定义方法: def test(x): '函数定义方法' x+=1 r ...