Python001 课程简介、开发环境搭建、计算机通识、进制转换、变量和常量
1. 课程简介
1.1 课程体系
- Python基础
- Python函数
- Python模块
- Python面向对象
- 网络编程
- 并发编程
- MySQL数据库
1.2 课程要求
-
代码敲两便
-
总结笔记
-
快乐,活跃,吃苦。
2. Python开发环境搭建
2.1 查看当前电脑是否安装了Python
- 程序和功能 → 查看是否安装了Python3.6.8 → 如果安装了 → 直接在程序和功能中卸载即可。
2.2 Anaconda软件
- Anaconda:支持多个版本的Python在同一台电脑中兼容,目前用不上,先卸载掉。
- 如上图,Python3.6.4,Python3.6.5都直接卸载掉。
2.3 Python 3.6和3.7的区别
- 两者99%是一样的,他们的内存缓存机制有差异。学会了3.6,那么3.7就没有问题。
2.4 安装Python 3.6.8
- step1:双击Python-3.6.8-amd64.exe文件,选择自定义安装。
- step2:选择安装目录后点击Install即可完成安装
- step3:显式下图表示安装完成,点击Close退出。
3. PyCharm安装
-
学习阶段,安装社区版即可:PyCharm-community-2020.1.2
-
一般来说先安装Python,再安装PyCharm。
-
step1:一直下一步,到安装路径,定义为:D:\04 Future\12 PyCharm
- step2:勾选创建快捷方式和关联.py文件
- step3:安装完成后在桌面双击打开PyCharm,勾选已阅读,然后Continue。
- step4:选择Darcula背景,然后默认跳过
4. PyCharm初次新建项目
4.1 创建新项目设置
-
双击PyCharm → Create New Project → 新建项目面板
-
Location:新建项目存放的目录
-
New environment using不勾选(会自动安装很多包),选择Existing interpreter → Interpreter → System Interper → OK → Create。
-
-
配置过程1:新建项目面板
- 配置过程2:配置Python解释器
4.2 PyCharm中新建.py文件
4.3 PyCharm中创建脚本并运行
5. 计算机基本认识
5.1 计算机硬件
- cpu: 中央处理器. 相当于人的大脑.运算中心,控制中心.
- 内存: 临时存储数据. 优点:读取速度快。 缺点:容量小,造价高,断电即消失.
- 硬盘: 长期存储数据. 优点:容量大,造价相对低,断电不消失。 缺点:读取速度慢.
- 操作系统:统一管理计算机软硬件资源的程序
5.2 计算机文件大小单位
- b = bit 位(比特),一个1或者0表示一位。
- B = Byte 字节
- 一个字节等于8位,即1Byte = 8 bit( 可以简写成 1B = 8b)
- 字节大小的转换
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
1EB = 1024PB
5.3 进制转换
- 二进制由2个数字组成,有0 和 1。表示形式为:0b101
- 八进制由8个数字组成,有0,1,2,3,4,5,6,7。表示形式为:0o127
- 十进制由10个数字组成,有0,1,2,3,4,5,6,7,8,9。表示形式为:250
- 十六进制:有16个数字组成,有0,1,2,3,4,5,6,7,8,9,a,b,c,d,e,f(字母大小写都可以,分别代表10,11,12,13,14,15) 。表示形式为:xff 0Xff 0XFF
6. 进制之间的互相转换
6.1 二进制与十进制互转
# 将二进制转换为十进制,如:0b10100101 => 165
运算:1* 2^0 + 0* 2^1 + 1* 2^2 + 0* 2^3 + 0* 2^4 + 1* 2^5 + 0* 2^6 + 1* 2^7=
1 + 0 + 4 + 0 + 0 + 32 + 0 + 128 = 165
说明:任意数的0次幂为1,如2^0=1。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 将十进制转换为二进制,如:426 => 0b110101010
运算过程:
1. 用426除以2,得出的结果再去不停地除以2。
2. 直到除完最后的结果小于2停止。
3. 在把每个阶段求得的余数从下到上依次拼接完毕即可。
6.2 八进制与十进制互转
# 将八进制转换为十进制,如:0o127 => 87
运算:7*8^0 + 2*8^1 + 1*8^2 = 7+16+64 = 87
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 将十进制转换为八进制,如:426 => 0o652
运算过程:
1. 用426除以8,得出的结果再去不停地除以8。
2. 直到除完最后的结果小于8停止。
3. 在把每个阶段求得的余数从下到上依次拼接完毕即可。
6.3 十六进制与十进制互转
# 将十六进制转换为十进制,如:0xff
运算:15*16^0 + 15*16^1 = 255
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 将十进制转换为十六进制,如:426 => 0x1AA
运算过程:
1. 用426除以16,得出的结果再去不停地除以16。
2. 直到除完最后的结果小于16停止。
3. 在把每个阶段求得的余数从下到上依次拼接完毕即可。
6.4 二进制与八进制转换
- 二进制与八进制对应关系
八进制 二进制
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
如二进制:1010100101,转换为八进制,转换方法为:从右向左 3位一隔开 不够三位用0补位 变成:
001 010 100 101
0o 1 2 4 5
6.5 二进制与十六进制转换
十六进制 二进制
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
a 1010
b 1011
c 1100
d 1101
e 1110
f 1111
如二进制:1010100101,转换为十六进制,转换方法为:从右向左 4位一隔开 不够四位用0补位 变成:
0010 1010 0101
0x 2 a 5
6.6 八进制与 十六进制转换
- 先转换成二进制,再去对应转换
如十六进制0x2a5,先转换成二进制1010100101,再再转八进制0o1245。
7. 原码,反码,补码(了解)
-
原码,补码都是二进制数据
- 原码:二进制的表现形式,数据以原码形式显示
- 补码:二进制的存储形式,数据以补码形式存储
-
反码:二进制码0变1,1变0叫做反码,首位(即符号位)不取反。
- 反码是源码、补码之间的转换形式
-
提出补码的原因
- 补码的提出用于表达一个数的正负(可实现计算机的减法操作)
- 计算机默认只会做加法,实现减法用负号: 5+(-3) => 5-3
- 乘法除法:是通过左移和右移 << >> 来实现
-
正负关系的表示
[原码]形式的正负关系:
原码特点: 第一位是1
00000000 1 表达数字正1
10000000 1 表达数字负1
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
[补码]形式的正负关系:
补码特点: 高位都是1
00000000 1 表达数字正1
11111111 1 表达数字负1
- 运算顺序
- 补码 -> 原码 -> 最后人们看到的数,进制转换的时候需要先把内存存储的补码拿出来变成原码再进行转换输出
- 转换规律
- 如果是一个正数:原码 = 反码 = 补码
- 如果是一个负数:
- 原码 与 补码 之间 , 互为取反加1
- 原码 = 补码取反加1 给补码求原码
- 补码 = 原码取反加1 给原码求补码
8. Python认知
8.1 Python 简介
- 89年开发的语言,创始人范罗苏姆(Guido van Rossum),别称:龟叔(Guido).
- Python具有非常多并且强大的第三方库,使得程序开发起来得心应手。
- Python程序员的信仰:人生苦短,我用Python!
- 开发方向: 机器学习人工智能 ,自动化运维&测试 ,数据分析&爬虫 ,Python全栈开发
8.2 Python版本
- Python 2.x 版本,官方在 2020 年停止支持,原码不规范,重复较多
- Python 3.x 版本,功能更加强大且修复了很多bug,原码清晰,简单
Python 2.X输出语句写法:print "hello world!"
Python 3.X输出语句写法:print("hello world!")
- Linux 操作系统默认支持Python语言,可直接使用
8.3 编译型与解释型语言区别
- 编译型:一次性把所有代码编译成机器能识别的二进制码,在运行,代表语言:c,c++
- 优点:执行速度块
- 缺点: 开发速度慢,调试周期长
- 解释型:代码从上到下一行一行解释并运行,代表语言:Python,php
- 优点:开发效率快,调试周期短
- 缺点:执行速度相对慢
8.4 Python的解释器
- CPython(官方推荐):把Python转化成c语言能识别的二进制码,我们安装的Python 3.6.8就是CPython的解释器。
- JPython:把Python转化成java语言能识别的二进制码
- 其他语言解释器:把Python转化成其他语言能识别的二进制码
- PyPy:将所有Python代码一次性编译成二进制码,加快执行效率(模仿编译型语言的一款Python解释器)
9. 注释
- 注释:就是对代码的解释,方便大家阅读Python代码
注释的分类 : 1.单行注释 2.多行注释
# 1.单行注释 以#号开头 ,右边的所有东西都被当做说明文字 ,程序不进行编译运行。
print(‘hello world’)
# 2.多行注释 三个单引号 或 三个双引号
'''
这是第一行
这是第二行
'''
说明:Ctrl + Z撤销,Ctrl + Y反撤销。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
注释的注意点:如果外面使用三个单引号,里面使用三个双引号,反之亦然。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
注释的排错性:先注释一部分代码,然后执行另外一部分,看看是否报错,逐层缩小报错范围,找到最终错误点。
10. PyCharm的初始设置
10.1 设置PyCharm的默认解释器
- 菜单栏 → File → Settings → Project:01 Base → Project Settings → Project Interpreter → 单击 → 找到安装的Python解释器路径
- 如果编译的时候没有任何结果,那就要查看是否没有指定Python的解释器。
10.2 设置字体大小
- 菜单栏 → File → Settings → Editor → Font → 如下图
10.3 通过鼠标滚轮缩放
- 菜单栏 → File → Settings → Editor → General → Mouse Control → 勾选Change font size with Ctrl + Mouse Wheel → 如下图
10.4 设置皮肤
- 菜单栏 → File → Settings → Editor → General → Scheme → Darcula(一般编译器都自带)
10.5 设置缩进
- 菜单栏 → File → Settings → Editor → Code Style → Python → Tabs and Indents → 如下图
10.6 PyCharm取消拼写检查
- File → Settings → Editor → Color Scheme → General → Errors and Warnings → WeekWarning → Effects → 取消勾选
10.7 PyCharm代码格式化
- 菜单栏 → Code → Reformate Code(格式化代码)
- Ctrl + Shift + L
11. 变量
11.1 变量的概念和内存图解
- 变量:是指可以改变的量,实际具体指的是内存中的一块存储空间
- 变量在内存中默认一次只能指向一个值,当一个值没有任何变量指向的时候,内存才会自动把该数据从内存中释放掉,用以节省内存空间,变量在内存中的表现形式如下:
hanting_305 = "贾克斯"
hanting_305 = "诺手"
print(hanting_305)
控制台输出:
诺手
说明:
1. 执行hanting_305 = "贾克斯"代码段的过程:
1.1 首先在内存某个区域开辟一个内存空间用来存放字符串“贾克斯”,该字符串会有一个门牌号,即内存地址,假设为0x101。
1.2 然后将变量hanting_305放到内存另一个区域。
1.3 =表示赋值,可以理解为一个绑定的关系,即映射(箭头所示)。将变量hanting_305与内存地址(房间号)关联起来。
1.4 print(hanting_305),实际上打印的是内存地址里面的值。内存地址为0x101里面的值为"贾克斯“这个字符串。
2. 注意变量在同一个时间只能指向一个值。
3. 执行hanting_305 = "诺手"代码段的过程:
3.1 首先在内存某个区域再开辟一个内存空间来存放字符串”诺手“,该字符串也有一个门牌号,即内存地址,假设为0x102。
3.2 =表示将变量hanting_305与内存地址0x102关联起来,此时执行print(rhanting_305),实际打印的是“诺手”。
3.3 当一个值没有任何变量指向的时候,内存会自动把该数据从内存中释放掉,用以节省内存空间,即垃圾回收机制。
3.4 当hanting_305 = "诺手"执行完成之后,“贾克斯”没有被变量指向了(即没有与任何变量的映射了),那么”贾克斯“这个内存空间会自动释放掉。
11.2 变量三种声明(定义)方式
# 变量的声明方式1:
a = 1, b = 2
print(a)
print(b)
控制台输出:
1
2
说明:print(a)表示打印一行。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 变量的声明方式2:
a,b = 1,2
print(a, b)
控制台输出
1 2 # 注意此时1和2中间会有一个空格
说明:
1. print(a, b)表示将变量a指向的值1和变量b指向的值2打印到同一行中,两个值之间默认以空格隔开。
2. print(a, b, c, ..., n)表示将多个变量的值打印到同一行中,同时变量的值之间默认以空格隔开。
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 变量的声明方式3:
a = b = 3
print(a, b)
控制台输出:
3 3
说明:
1. 注意赋值语句的阅读顺序是从右往左看,对于a = b = 3阅读顺序如下
1.1 先在内存中开辟内存空间用来存放3,并且产生一个内存地址假设0x101,该内存地址中存放的值为3
1.2 b = 3表示内存中产生变量b,并将变量b指向内存地址0x101,因此变量b的值可以理解为3。此时3被第一次引用。
1.3 a = b表示将变量a也指向变量b指向的内存地址,因此变量a的值也为3,此时3被第二次引用。
2. a = b = 3表示开辟了内存空间0x101并且该内存空间中存放的是值3,同时创建了变量b和变量a,两个变量各引用了一次0x101这个内存空间。特别注意并不是3开辟了两次内存空间,a和b分别指向两个3的内存空间。而是值3被变量a和变量b同时指向了,也就是说值3所在的内存地址被引用了2次,分别被变量a和变量b引用了。
11.3 变量的命名规则
- 字母数字下划线 ,首字符不能为数字
- 严格区分大小写 ,且不能使用关键字
# 查看Python中所有关键字
import keyword
print(keyword.kwlist)
控制台输出:
['False', 'None', 'True', 'and', 'as', ...]
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 系统预设的关键字不能被替换
print = 100
print(11)
报错信息:TypeError: 'int' object is not callable
说明:
1. 虽然print不是python中的关键字,但是它本意是打印到控制台的方法。如果将它赋值之后,就失效了。
2. 'int' object is not callable的含义:object表示类型,callable表示调用。
- 变量命名有意义 ,且不能使用中文
中文 = "贾克斯"
print(中文)
控制台输出:
贾克斯
说明:
1. 虽然中文命名变量是不会的,但是禁止使用。
2. 字符编码:中文命名的变量容易乱码。
2.1 utf-8(万国码),在世界上任何国家,任何服务器,使用utf-8不会乱码,但是一个中文占用3个字节,字符、数字、符号占用1个字节。
2.2 gbk(国标码),一个中文占用2个字节,子母、数字、符号占用1个字节。
3. 占用空间:中文命名变量比英文命名变量占用更大的空间。
18.4 变量的交换
# 变量的交换写法1:python特有的写法
a,b = b,a
—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—·—
# 变量的交互写法2:通用写法,在所有编程语言中都可以实现。
tmp = a
a = b
b = tmp
12. 常量
- 常量:就是不可改变的量,Python当中没有明确定义常量的关键字,所以约定俗成把变量名大写就是常量,表示不可改变。
热门相关:寻情仙使 重生之神级败家子 捡宝王 隐婚99天:首席,请矜持 重生娘子在种田