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
    6
    print('''line1
    line2
    line3''')
    line1
    line2
    line3
  • 布尔值

    布尔值和布尔代数的表达完全一致,一个布尔值只有True、False两个值

  • 空值

  • 变量

    变量名必须是大小写英文、数字和_的组合,且不能数字开头。

    1
    a = 'ABC'

    python解释器干了两件事:

    1. 在内存里创建了一个ABC的字符串;
    2. 在内存中创建了一个名为ad的变量,并把它指向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保存。

2024-01-28 14-34-46

浏览网页的时候也是这个道理,服务器把动态生成的Unicode转化为UTF-8在传输到浏览器:

2024-01-28 14-32-51

所以很多网页源码上会标注类似<meta charset="UTF-8"/>,表示该网页用的是UTF-8编码。

Python的字符串

在最新的Python 3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言。

对于单独的字符串编码,Python提供了类似ord()函数获取字符的整数表示,char()函数把编码转化为对应的字符串:

1
2
3
4
5
6
7
8
>>>ord('A')
65
>>>ord('中')
20013
>>>char(66)
'B'
>>>char(25991)
'文'

如果想知道字符的整数编码,还可以用十六进制这么写str:

1
2
>>>'\u4e2d\u6587'
'中文'

Python的字符串,在内存里是Unicode表示,一个字符串对应若干个字节。但是在网上传输或者保存在磁盘中是,就要把str转成以字节为单位的bytes

Python对bytes类型的数据带b前缀的单引号或者双引号表示

1
x=b'abc'

Python从零开始(持续更新)
https://liu620.github.io/2024/01/27/Python从零开始/
作者
alen
发布于
2024年1月27日
许可协议