# 第2~5章 学习笔记

## 什么是计算机语言
计算机就是一台用来计算机的机器,人让计算机干什么计算机就得干什么!
需要通过计算机的语言来控制计算机(编程语言)!
计算机语言其实和人类的语言没有本质的区别,不同点就是交流的主体不同!
计算机语言发展经历了三个阶段:
机器语言
- 机器语言通过二进制编码来编写程序
- 执行效率好,编写起来太麻烦

符号语言(汇编)
- 使用符号来代替机器码
- 编写程序时,不需要使用二进制,而是直接编写符号
- 编写完成后,需要将符号转换为机器码,然后再由计算机执行
符号转换为机器码的过程称为汇编
- 将机器码转换为符号的过程,称为反汇编
- 汇编语言一般只适用于某些硬件,兼容性比较差

高级语言
- 高级语言的语法基本和现在英语语法类似,并且和硬件的关系没有那么紧密了
- 也就是说我们通过高级语言开发程序可以在不同的硬件系统中执行
- 并且高级语言学习起来也更加的容易,现在我们知道的语言基本都是高级语言
- C、C++、C#、Java、JavaScript、Python 。。。

## 编译型语言和解释型语言
计算机只能识别二进制编码(机器码),所以任何的语言在交由计算机执行时必须要先转换为机器码,
也就是像 print('hello') 必需要转换为类似 1010101 这样的机器码

根据转换时机的不同,语言分成了两大类:
编译型语言
- C语言
- 编译型语言,会在代码执行前将代码编译为机器码,然后将机器码交由计算机执行
- a(源码) --编译--> b(编译后的机器码)
- 特点:
执行速度特别快
跨平台性比较差

解释型语言
- Python JS Java
- 解释型语言,不会在执行前对代码进行编译,而是在执行的同时一边执行一边编译
- a(源码)--解释器--> 解释执行
- 特点:
执行速度比较慢
跨平台性比较好

## Python的介绍
Python是解释型语言

Python(英国发音:/ˈpaɪθən/ 美国发音:/ˈpaɪθɑːn/),是一种广泛使用的高级编程语言,属于通用型编程语言,由吉多·范罗苏姆创造,第一版发布于1991年。可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。作为一种解释型语言,Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。

Life is short you need Python (人生苦短,我用Python)

Python的用途:
WEB应用
Facebook 豆瓣 。。。
爬虫程序
科学计算
自动化运维
大数据(数据清洗)
云计算
桌面软件/游戏
人工智能
。。。

## Python开发环境搭建
开发环境搭建就是安装Python的解释器
Python的解释器分类:
CPython(官方)
用c语言编写的Python解释器
PyPy
用Python语言编写的Python解释器
IronPython
用.net编写的Python解释器
Jython
用Java编写的Python解释器

步骤:
1.下载安装包 python-3.6.5.exe
- 3.x
- 2.x
2.安装(傻瓜式安装)
3.打开命令行窗口,输入python 出现如下内容
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>>

## Python的交互界面
当我们通过命令行来输入Python,所进入到的界面就是Python的交互界面
结构:
版本和版权声明:
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 16:07:46) [MSC v.1900 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.

命令提示符:
>>>

在命令提示符后可以直接输入Python的指令!输入完的指令将会被Python的解释器立即执行!

安装Python的同时,会自动安装一个Python的开发工具IDLE,通过IDLE也可以进入到交互模式
但是不同的是,在IDLE中可以通过TAB键来查看语句的提示。
IDLE实际上就是一个交互界面,但是他可以有一些简单的提示,并且可以将代码保存

交互模式只能你输入一行代码,它就是执行一行,所以他并不适用于我们日常的开发!
仅可以用来做一些日常的简单的测试!

我们一般会将Python代码编写到一个py文件中,然后通过python指令来执行文件中的代码

练习:
自己尝试创建一个py文件,并向文件中写入python打印语句(print...)
然后执行该文件。
如果你的系统的扩展名无法修改,请尝试自行baidu!

## Python和Sublime的整合
1.在Sublime中执行Python代码,ctrl + b 自动在Sublime内置的控制台中执行
这种执行方式,在某些版本的Sublime中对中文支持不好,并且不能使用input()函数

2.使用SublimeREPL来运行python代码
安装完成,设置快捷键,希望按f5则自动执行当前的Python代码
{ "keys": ["f5"], "caption": "SublimeREPL:Python","command": "run_existing_window_command", "args":{"id": "repl_python_run","file": "config/Python/Main.sublime-menu"}},

## 几个概念
1.表达式
表达式就是一个类似于数学公式的东西
比如:10 + 5 8 - 4
表达式一般仅仅用了计算一些结果,不会对程序产生实质性的影响
如果在交互模式中输入一个表达式,解释器会自动将表达式的结果输出

2.语句
在程序中语句一般需要完成某种功能,比如打印信息、获取信息、为变量赋值。。。
比如:
print()
input()
a = 10
语句的执行一般会对程序产生一定的影响
在交互模式中不一定会输出语句的执行结果

3.程序(program)
程序就是由一条一条的语句和一条一条的表达式构成的。

4.函数(function)
函数就是一种语句,函数专门用来完成特定的功能
函数长的形如:xxx()
函数的分类:
内置函数
- 由Python解释器提供的函数,可以在Python中直接使用
自定义函数
- 由程序员自主的创建的函数
当我们需要完成某个功能时,就可以去调用内置函数,或者自定义函数
函数的两个要素:
参数
- ()中的内容就是函数的参数
- 函数中可以没有参数,也可以有多个参数,多个参数之间使用,隔开
返回值
- 返回值是函数的返回结果,不是所有的函数都有返回值
## 基本语法
1.在Python中严格区分大小写
2.Python中的每一行就是一条语句,每条语句以换行结束
3.Python中每一行语句不要过长(规范中建议每行不要超过80个字符)
"rulers":[80],
4.一条语句可以分多行编写,多行编写时语句后边以\结尾
5.Python是缩进严格的语言,所以在Python中不要随便写缩进
6.在Python中使用#来表示注释,#后的内容都属于注释,注释的内容将会被解释器所忽略
我们可以通过注释来对程序进行解释说明,一定要养成良好的编写注释的习惯
注释要求简单明了,一般习惯上#后边会跟着一个空格

## 字面量和变量
字面量就是一个一个的值,比如:1,2,3,4,5,6,‘HELLO’
字面量所表示的意思就是它的字面的值,在程序中可以直接使用字面量

变量(variable)变量可以用来保存字面量,并且变量中保存的字面量是不定的
变量本身没有任何意思,它会根据不同的字面量表示不同的意思

一般我们在开发时,很少直接使用字面量,都是将字面量保存到变量中,通过变量来引用字面量

## 变量和标识符
## 数据类型
数据类型指的就是变量的值得类型,也就是可以为变量赋哪些值
数值
整型
布尔值
浮点型
复数
字符串
空值

## 类型检查
## 对象(object)
- Python是一门面向对象的语言
- 一切皆对象!
- 程序运行当中,所有的数据都是存储到内存当中然后再运行的!
- 对象就是内存中专门用来存储指定数据的一块区域
- 对象实际上就是一个容器,专门用来存储数据
- 像我们之前学习的数值、字符串、布尔值、None都是对象
- 参考 图1

## 对象的结构
- 每个对象中都要保存三种数据
- id(标识)
> id用来标识对象的唯一性,每一个对象都有唯一的id
> 对象的id就相当于人的身份证号一样
> 可以通过id()函数来查看对象的id
> id是由解析器生成的,在CPython中,id就是对象的内存地址
> 对象一旦创建,则它的id永远不能再改变

- type(类型)
> 类型用来标识当前对象所属的类型
> 比如:int str float bool 。。。
> 类型决定了对象有哪些功能
> 通过type()函数来查看对象的类型
> Python是一门强类型的语言,对象一旦创建类型便不能修改

- value(值)
> 值就是对象中存储的具体的数据
> 对于有些对象值是可以改变的
> 对象分成两大类,可变对象 不可变对象
可变对象的值可以改变
不可变对象的值不能改变,之前学习的对象都是不可变对象
- 参考 图2

练习:尝试自己画一下对象的内存结构。

## 变量和对象
- 对象并没有直接存储到变量中,在Python中变量更像是给对象起了一个别名
- 变量中存储的不是对象的值,而是对象的id(内存地址),
当我们使用变量时,实际上就是在通过对象id在查找对象
- 变量中保存的对象,只有在为变量重新赋值时才会改变
- 变量和变量之间是相互独立的,修改一个变量不会影响另一个变量

- 参考 图3

## 类型转换
- 所谓的类型转换,将一个类型的对象转换为其他对象
- 类型转换不是改变对象本身的类型,而是根据当前对象的值创建一个新对象

## 运算符(操作符)
- 运算符可以对一个值或多个值进行运算或各种操作
- 比如 + 、-、= 都属于运算符
- 运算符的分类:
1.算术运算符
2.赋值运算符
3.比较运算符(关系运算符)
4.逻辑运算符
5.条件运算符(三元运算符)

python第2~5章 学习笔记的更多相关文章

  1. 《Think Python》第17章学习笔记

    目录 <Think Python>第17章学习笔记 17.1 面向对象的特性(Object-oriented features) 17.2 打印对象(Printing objects) 1 ...

  2. 《Think Python》第16章学习笔记

    目录 <Think Python>第16章学习笔记 16.1 Time 16.2 纯函数(Pure functions) 16.3 修改器(Modifiers) 16.4 原型 vs. 方 ...

  3. 《Think Python》第15章学习笔记

    目录 <Think Python>第15章学习笔记 15.1 程序员定义的类型(Programmer-defined types) 15.2 属性(Attributes) 15.3 矩形( ...

  4. 《Think Python》第8章学习笔记

    目录 8.1 字符串是一个序列(A string is a sequence) 8.2 len 8.3 用一个 for 循环进行遍历(Traversal with a for loop) 8.4 字符 ...

  5. 《Think Python》第7章学习笔记

    目录 7.1 重新赋值(Reassignment) 7.2 更新变量(Updating variables) 7.3 while 语句(The while statement) 7.4 break 语 ...

  6. 《Think Python》第6章学习笔记

    目录 6.1 返回函数值(Return values) 6.2 增量式开发(Incremental development) 6.3 组合(Composition) 6.4 布尔函数(Boolean ...

  7. 《Think Python》第5章学习笔记

    目录 5.1 整除和取模(Floor division and modulus) 5.2 布尔表达式(Boolean expressions) 5.3 逻辑运算符(Logical operators) ...

  8. 《Linux内核设计与实现》课本第五章学习笔记——20135203齐岳

    <Linux内核设计与实现>课本第五章学习笔记 By20135203齐岳 与内核通信 用户空间进程和硬件设备之间通过系统调用来交互,其主要作用有三个. 为用户空间提供了硬件的抽象接口. 保 ...

  9. 《Linux内核设计与实现》 第一二章学习笔记

    <Linux内核设计与实现> 第一二章学习笔记 第一章 Linux内核简介 1.1 Unix的历史 Unix的特点 Unix很简洁,所提供的系统调用都有很明确的设计目的. Unix中一切皆 ...

  10. 《Linux内核设计与实现》第四章学习笔记

    <Linux内核设计与实现>第四章学习笔记           ——进程调度 姓名:王玮怡  学号:20135116 一.多任务 1.多任务操作系统的含义 多任务操作系统就是能同时并发地交 ...

随机推荐

  1. Python运维开发之路《高阶函数》

    一.列表生成式,迭代器&生成器 列表生成式 需求:data列表里有如下三个值,需要给每个值加1 1 data = [1,2,3] 2 list = map(lambda x:x+1,data) ...

  2. 面试官:讲讲MySql索引失效的几种情况

    索引失效 准备数据: CREATE TABLE `dept` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `deptName` VARCHAR(30) DEFAUL ...

  3. python打包exe总结 pyinstaller py2exe

    Python打包exe 有很多可以用的 如 pyinstaller py2exe cx_Freeze nuitka py2app py0xidizer 其中cx_Freeze没用过 nuitka是把p ...

  4. httpx的两个坑(httpx.ReadTimeout; SSL: CERTIFICATE_VERIFY_FAILED)

    关于python异步网络请求库httpx的两个坑 其一:httpx.ReadTimeout 实测发现,网络不稳定的情况下,极其容易出现该错误. 相对于requests库, httpx库是有默认的超时时 ...

  5. js中数组的方法,32种方法

    数组的32中方法=>{ 1.push(): 在数组末尾添加一个或多个元素,并返回修改后的数组. let fruits = ['apple', 'banana', 'orange']; fruit ...

  6. 从TL、ITL到TT

    1.概述 ThreadLocal(TL)是Java中一种线程局部变量实现机制,他为每个线程提供一个单独的变量副本,保证多线程场景下,变量的线程安全.经常用于代替参数的显式传递. Inheritable ...

  7. ip2location.py

    import re import geoip2.database from tabulate import tabulate from matplotlib import pyplot as plt ...

  8. Lora简介

    断断续续接触lora已经有几年时间了,一直用lora来做点对点的传输,近来有朋友想通过Lora来做广播群发和群收管理,想通过低成本方式实现,sx1302几百的银子,成本有点高,尝试通过sx1278/L ...

  9. 使用 FastGPT 构建高质量 AI 知识库

    作者:余金隆.FastGPT 项目作者,Sealos 项目前端负责人,前 Shopee 前端开发工程师 FastGPT 项目地址:https://github.com/labring/FastGPT/ ...

  10. 发布关于PostGIS对于USD格式的拓展

    我们非常高兴的发布为了一年一度的SIGGRAPH 2023发布关于为PostGIS支持USD格式的新拓展. 新添加了3个函数 ST_AsUSDA(geom geometry, usd_root_nam ...