Python从零开始(持续更新)
1 Python简介
Python是著名的龟叔Guido van Rossum在1989年圣诞节,为了打发无聊的圣诞节而编写的一个人编程语言。
高级语言通常都会提供一个比较完善的基础代码库,让开发者直接调用。Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象的称作“内置电池(batteries included)”。
除了内置库外,Python还有大量的第三方库,也就是别人开发好的,直接共给你使用的东西。当然,如果你自己开发封装也可以作为第三方库给别人使用。
Python的定位是“优雅”、“明确”、“简单”,所以python程序看上去简单易懂,适合于网络应用、包括网站、后台服务等,其次是各种日常需要的小工具,包括系统管理员需要的脚本任务等。然后就是被称之为胶水语言,把其他语言开发的程序包装起来使用。
Python的缺点,第一个是运行比较慢,解释型语言的通用诟病。但是由于大量的应用程序不需要那么快的运行速度,很多情况下就是1.1s和1.001秒的区别。第二个是代码不能加密,编译型语言都没有这个问题,解释型则必须把源码发布出去。
2 安装Python
因为Python是跨平台的,它可以运行在Windows、mac、linux/unix系统上。
开始学习Python编程,首先就要把Python安装到你的电脑里。安装后,你就会得到Python解释器(负责运行Python程序),一个命令行交互环境,还有一个简单的集成开发的环境。
2.1安装Python3.12
目前,Python有两个版本,一个是2.x版本,一个是3.x版本,这两个版本是不兼容的。
在mac上安装Python
方法一:从Python官网下载Python 3.12的安装程序,下载后双击运行并安装;
方法二:如果安装了Homebrew,直接通过命令brew install python3
安装即可。
3 Python基础
3.1 数据类型和变量
Python中,能直接处理的数据类型有以下几种:
整数
Python可以处理任意大小的整数,包括负数。十六进制表述整形比较方便,十六进制用
0x
前缀和0-9、a-f表示。对于很大的数,例如10000000000
也可以写成10_000_000_000
。浮点数
浮点数也就是小数,之所以称之为浮点数,是因为按照科学计数法表示时,一个浮点数的小数位置可以改变。1.23x 10^9^把10当成e代替,也就是1.23e9,负数0.000012写成1.2e-5。
字符串
单引号
'
或者双引号"
括起来的任意文本。字符串里包含'
、"
,用转义符\
来标识。使用r''
表示''
内部的字符传不能转义。Python允许使用'''...'''
的格式标识多行。例如:1
2
3
4
5
6print('''line1
line2
line3''')
line1
line2
line3布尔值
布尔值和布尔代数的表达完全一致,一个布尔值只有True、False两个值
空值
变量
变量名必须是大小写英文、数字和
_
的组合,且不能数字开头。1
a = 'ABC'
python解释器干了两件事:
- 在内存里创建了一个
ABC
的字符串; - 在内存中创建了一个名为
a
d的变量,并把它指向ABC
。
- 在内存里创建了一个
常量
Python通常用全部大写的变量名表示常量
解释一下整数的除法为什么也是精确的。在Python中,有两种除法,一种除法是/
,/
除法计算结果是浮点数,即使是两个整数恰好整除,结果也是浮点数。
还有一种除法是//
,称为地板除,两个整数的除法仍然是整数。
整数的地板除//
永远是整数,即使除不尽。要做精确的除法,使用/
就可以
3.2 字符串和编码
字符编码
计算机只能处理数字,如果要处理文本,就必须把文本转化为数字处理。最早的计算机在设计的时候,采用8个比特(bit)作为一个字节(byte)。
一开始最早只有127个字符被编码到计算机,大小写英文、数字和一些符号,这个编码被称为ASCII
编码。
中国制定了GB2312
编码,用于把中文编写进去。每个国家有自己的编码,结果就是导致冲突,带来了乱码。
Unicode的出现就是解决乱码问题,标准也在不断的发展,常用的是UCS-16
。
但是新的问题又出现:如果统一为Unicode编码,乱码问题是可以解决,但是会产生空间浪费,后续又出现了UTF-8
编码,把一个Unicode字符按照不同的数字大小编码成1-6个字节。
一般情况下,从文本读取的UTF-8字符串被转化为Unicode字符到内存中,编辑完成后,保存的时候把Unicode转化为UTF-8保存。
浏览网页的时候也是这个道理,服务器把动态生成的Unicode转化为UTF-8在传输到浏览器:
所以很多网页源码上会标注类似<meta charset="UTF-8"/>
,表示该网页用的是UTF-8编码。
Python的字符串
在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。
对于单独的字符串编码,Python提供了类似ord()
函数获取字符的整数表示,char()
函数把编码转化为对应的字符串:
1 |
|
如果想知道字符的整数编码,还可以用十六进制这么写str
:
1 |
|
Python的字符串,在内存里是Unicode表示,一个字符串对应若干个字节。但是在网上传输或者保存在磁盘中是,就要把str
转成以字节为单位的bytes
。
Python对bytes
类型的数据带b
前缀的单引号或者双引号表示
1 |
|