Python学习-入门

175 阅读24分钟

Python简介

Python的历史和发展

  • PythonGuido van Rossum于1989年在荷兰创造。最初,他的目标是设计一种易于阅读和易于使用的编程语言,以替代C/C++语言。他命名该语言为Python,受到英国喜剧团体Monty Python的影响。

  • Python的第一个公开发布版本是在1991年。从那时起,Python开始逐渐获得用户和开发者的关注。

  • Python的设计原则之一是"优雅而清晰的代码",它强调代码的可读性和简洁性。这使得Python成为一种非常适合初学者的编程语言,并且也受到了许多专业开发者的喜爱。

  • Python的语法采用了缩进式风格,这意味着代码块的结构是通过缩进来表示的,而不是使用大括号或关键字。

  • Python拥有一个强大而广泛的标准库,其中包含了许多有用的模块和功能,例如文件操作、网络编程、图像处理等。

  • Python还有一个庞大的第三方生态系统,提供了各种各样的开源库和框架,用于开发Web应用、科学计算、数据分析等各种领域。

  • Python的版本演进中,最著名的是Python 2Python 3之间的过渡。Python 2在很长一段时间内是主流版本,但在2008年发布的Python 3引入了一些不兼容的变化。尽管如此,Python 2仍然在一些遗留项目中使用,但Python 3已经成为主流版本,并且推荐新项目使用Python 3。

  • Python的社区非常活跃,有许多开发者贡献了大量的开源项目和库。Python也拥有许多热衷于教育和推广的组织和社群。

Python的特点和优势

  • 简洁而易读的语法:Python的语法设计非常简洁、优雅,强调代码的可读性和简洁性。它使用缩进来表示代码块结构,而不是使用大括号或关键字,使得代码看起来更加清晰明了,易于理解和维护。

  • 跨平台性:Python是一种跨平台的编程语言,可以在多个操作系统(如WindowsLinuxMacOS等)上运行,而无需针对不同平台编写不同的代码。这使得开发人员能够轻松地在不同的环境中开发和部署Python应用程序。

  • 强大的标准库和第三方生态系统:Python拥有一个丰富的标准库,其中包含了许多有用的模块和功能,如文件操作、网络编程、数据库连接等。此外,Python还有一个庞大的第三方生态系统,提供了各种各样的开源库和框架,用于开发Web应用、科学计算、数据分析等各种领域。这些库和框架可以显著减少开发时间,并提供大量可重用的代码。

  • 多种编程范式支持:Python支持多种编程范式,包括面向对象编程、函数式编程和过程式编程。这使得开发人员可以根据项目需求选择最适合的编程风格,并灵活地组织和管理代码。

  • 简单易用的交互式解释器:Python的交互式解释器(REPL)使得编写、测试和调试代码变得非常方便。开发人员可以逐行执行代码,并即时查看结果,这对于学习和探索新概念非常有帮助。

  • 大量的学习资源和社区支持:Python拥有一个庞大而活跃的社区,提供了大量的学习资源、文档和教程。无论是初学者还是专业开发者,都可以轻松地找到解决问题和学习的资源。此外,Python社区也非常友好和热情,经常举办各种活动和会议,促进交流和合作。

Python的安装和设置

下载和安装Python解释器

  • 访问Python官方网站:打开浏览器,访问Python官方网站 www.python.org

  • 选择版本:在Python官方网站上,你将看到两个主要的Python版本:Python 2Python 3。目前,推荐使用Python 3,因为Python 2已经停止更新和支持。点击Downloads(下载)菜单,然后选择适合你操作系统的Python 3版本。

  • 下载安装程序:在下载页面上,你将看到可用的Python版本。根据你的操作系统,选择合适的安装程序。一般来说,Windows用户可以选择Windows InstallerMac用户可以选择Mac OS X安装程序,Linux用户可以选择对应的发行版的安装程序。

  • 运行安装程序:下载完安装程序后,双击运行安装程序。根据系统提示,选择安装路径和其他选项。对于大多数用户来说,使用默认选项即可。在安装过程中,确保勾选Add Python to PATH(将Python添加到环境变量)选项,这样就可以在命令行中直接运行Python

  • 完成安装:安装程序将自动完成Python的安装过程。安装完成后,你可以关闭安装程序。

  • 验证安装:为了验证Python是否成功安装,打开命令行终端(Windows用户可以打开命令提示符或PowerShellMacLinux用户可以打开终端),输入以下命令来检查Python的版本:

python --version

设置Python环境变量

在Windows上设置Python环境变量:

  • 打开控制面板:点击开始菜单,搜索"控制面板"并打开。

  • 进入系统属性:点击"系统和安全",然后选择"系统"。

  • 点击"高级系统设置":在系统窗口中,点击左侧的"高级系统设置"。

  • 打开环境变量:在系统属性窗口中,点击"环境变量"按钮。

  • 添加Python路径:在"用户变量"或"系统变量"下方的"环境变量"窗口中,找到名为"Path"的变量,然后点击"编辑"。

  • 添加Python安装路径:在"编辑环境变量"窗口中,点击"新建",然后输入Python的安装路径。默认情况下,Python安装在C:\PythonXX目录下,其中XX是你安装的具体版本号。例如,如果你安装的是Python 3.9,则路径可能是C:\Python39

  • 确认设置:点击确定按钮,关闭所有窗口

在Mac OS / Linux上设置Python环境变量:

  • 打开终端:在"应用程序"文件夹中,找到"实用工具"文件夹,然后打开"终端"。

  • 编辑bash配置文件:在终端中,输入以下命令来编辑bash配置文件:

nano ~/.bash_profile
  • 添加Python路径:在打开的bash配置文件中,添加以下行来设置Python路径:
export PATH="/usr/local/bin:$PATH"
  • 保存和退出:按下Ctrl + X组合键来退出,然后按下"Y"键保存更改。

  • 刷新配置:在终端中,输入以下命令来刷新bash配置:

source ~/.bash_profile

| 设置完成后,你可以在命令行中直接运行Python解释器以及Python相关工具。

Python基础语法

变量和数据类型

  • 变量: 在Python中,变量用于存储数据。你可以将变量看作是一个容器,用于存储各种类型的值。Python是动态类型语言,这意味着你不需要提前声明变量的类型,而是在赋值时自动确定变量的类型。例如,你可以使用以下语法创建一个变量并给它赋值:
x = 10

在这个例子中,我们创建了一个名为x的变量,并将整数值10赋给它。

  • 数据类型: Python支持多种内置的数据类型,每种数据类型都有其特定的用途和操作。以下是一些常见的数据类型:

    • 整数(int):表示整数值,例如10。
    • 浮点数(float):表示带有小数点的数值,例如3.14。
    • 字符串(str):表示文本数据,用引号括起来,例如"Hello, World!"。
    • 布尔值(bool):表示True或False两个值,用于逻辑判断,例如True。
    • 列表(list):表示一组有序的元素,可以包含不同类型的数据,用方括号括起- 来,例如[1, 2, 3]。
    • 元组(tuple):类似于列表,但是不可修改,用圆括号括起来,例如(1, 2, 3)。
    • 集合(set):表示一组唯一的元素,用大括号括起来,例如{1, 2, 3}。
    • 字典(dictionary):表示键值对的集合,用大括号括起来,例如{"name": "John", "age": 30}。

这些是Python中常用的一些数据类型,每种类型都有其特定的操作和方法。你可以根据需要选择合适的数据类型来存储和操作数据。

控制流程(条件语句和循环)

  • 条件语句(if语句): 条件语句用于根据条件的真假执行不同的代码块。在Python中,条件语句使用ifelif(可选)和else(可选)关键字来定义。以下是一个示例:

    x = 10
    
    if x > 0:
        print("x是正数")
    elif x < 0:
        print("x是负数")
    else:
        print("x是零")
    

    在这个例子中,我们使用if语句判断变量x的值。如果x大于0,则打印"x是正数";如果x小于0,则打印"x是负数";否则,打印"x是零"

  • 循环(for循环和while循环): 循环用于重复执行一段代码,直到满足特定的条件。在Python中,有两种常见的循环类型:for循环和while循环。

    • for循环: for循环用于遍历一个可迭代对象(如列表、元组、字符串等),并执行相应的代码块。以下是一个示例:

      fruits = ["apple", "banana", "cherry"]
      
      for fruit in fruits:
          print(fruit)
      

      在这个例子中,我们使用for循环遍历列表fruits中的每个元素,并将每个元素打印出来。

    • while循环: while循环用于在特定条件为真时重复执行一段代码块。以下是一个示例:

      i = 0
      
      while i < 5:
          print(i)
          i += 1
      

      在这个例子中,我们使用while循环打印从04的数字。循环会在变量i的值小于5时继续执行,每次循环结束后将i的值加1

函数和模块

  • 函数: 函数是一段可重复使用的代码块,用于执行特定的任务。在Python中,你可以使用def关键字来定义函数,然后在需要的地方调用该函数。以下是一个示例:
def greet(name):
    print("Hello, " + name + "!")

greet("John")

在这个例子中,我们定义了一个名为greet的函数,它接受一个参数name,并打印出相应的问候语。然后,我们调用这个函数并传递参数"John",它将打印出"Hello, John!"

函数可以接受任意数量的参数,并且可以返回一个值(使用return语句)。你可以使用函数来封装可重复使用的代码块,并提高代码的可读性和可维护性。

  • 模块: 模块是包含了一组相关函数、变量和类的文件。在Python中,你可以使用模块来组织代码并提供代码的可重用性。Python拥有大量的内置模块,例如mathrandomdatetime等。你也可以自己创建模块来组织你的代码。

要使用一个模块,你需要使用import语句将其导入到你的代码中。以下是一个示例:

import math

print(math.sqrt(16))

在这个例子中,我们使用import语句导入了Pythonmath模块。然后,我们调用math模块中的sqrt函数来计算16的平方根,并将结果打印出来。

你还可以使用from关键字从模块中导入特定的函数或变量。例如:

from math import sqrt

print(sqrt(16))

这将直接导入math模块中的sqrt函数,并可以直接使用它,而不需要使用模块名作为前缀。

Python常用数据结构

列表和元组

  • 列表(List): 列表是一种有序、可变的数据结构,用于存储一组元素。在Python中,列表使用方括号[]来表示,每个元素之间用逗号,分隔。以下是一个示例:
fruits = ["apple", "banana", "cherry"]

在这个例子中,我们创建了一个名为fruits的列表,其中包含三个字符串元素:"apple""banana""cherry"

列表是可变的,这意味着你可以修改列表中的元素、添加新的元素或删除元素。你可以使用索引来访问列表中的元素,索引从0开始。例如:

print(fruits[0])  # 输出: "apple"

你还可以使用切片来获取列表的子集。例如:

print(fruits[1:3])  # 输出: ["banana", "cherry"]

列表还提供了许多方法和操作:

  1. append(element):向列表末尾添加一个元素。
  2. insert(index, element):在指定位置插入一个元素。
  3. remove(element):删除列表中的指定元素。
  4. pop(index):删除指定位置的元素并返回该元素。
  5. index(element):返回指定元素在列表中的索引。
  6. count(element):返回列表中指定元素的出现次数。
  7. sort():对列表进行排序。
  8. reverse():反转列表中的元素顺序。
  9. copy():复制列表。
  10. clear():清空列表中的所有元素。
  • 元组(Tuple): 元组是一种有序、不可变的数据结构,用于存储一组元素。在Python中,元组使用圆括号()来表示,每个元素之间用逗号,分隔。以下是一个示例:
person = ("John", 30, "New York")

在这个例子中,我们创建了一个名为person的元组,它包含三个元素:字符串"John"、整数30和字符串"New York"。

元组是不可变的,这意味着你无法修改元组中的元素、添加新的元素或删除元素。你可以使用索引来访问元组中的元素,索引从0开始。例如:

print(person[0])  # 输出: "John"

元组的不可变性使得它在某些情况下更适合存储不可变的数据,如坐标、日期等。

字典

字典(Dictionary): 字典是一种无序、可变的数据结构,用于存储键值对。在Python中,字典使用大括号{}来表示,每个键值对之间用冒号:分隔,键值对之间用逗号,分隔。以下是一个示例:

person = {"name": "John", "age": 30, "city": "New York"}

在这个例子中,我们创建了一个名为person的字典,它包含三个键值对:键"name"对应值"John",键"age"对应值30,键"city"对应值"New York"。

字典中的键必须是唯一的,而值可以是任意类型的数据。你可以使用键来访问字典中的值,例如:

print(person["name"])  # 输出: "John"

你还可以使用get()方法来获取字典中的值,如果键不存在,则返回指定的默认值。例如:

print(person.get("name"))  # 输出: "John"
# key, default value
print(person.get("gender", "Unknown"))  # 输出: "Unknown"

字典是可变的,这意味着你可以修改字典中的值、添加新的键值对或删除键值对。例如:

person["age"] = 31  # 修改值
person["gender"] = "Male"  # 添加新的键值对
del person["city"]  # 删除键值对

字典还提供了许多方法和操作,如获取所有键(keys())、获取所有值(values())、获取所有键值对(items())等。你可以根据需要使用这些方法来操作字典中的键值对。

集合

集合(Set): 集合是一种无序、不重复的数据结构,用于存储一组唯一的元素。在Python中,集合使用大括号{}来表示,每个元素之间用逗号,分隔。以下是一个示例:

fruits = {"apple", "banana", "cherry"}

在这个例子中,我们创建了一个名为fruits的集合,它包含三个元素:"apple"、"banana"和"cherry"。注意,集合中的元素是无序的,每个元素都是唯一的,不会重复。

你可以使用集合进行集合运算,如交集、并集和差集等。例如:

fruits1 = {"apple", "banana", "cherry"}
fruits2 = {"banana", "orange", "kiwi"}

print(fruits1 & fruits2)  # 输出: {"banana"},交集
print(fruits1 | fruits2)  # 输出: {"apple", "banana", "cherry", "orange", "kiwi"},并集
print(fruits1 - fruits2)  # 输出: {"apple", "cherry"},差集

你还可以使用集合来去重一个列表中的元素。例如:

numbers = [1, 2, 3, 3, 4, 5, 5]
unique_numbers = set(numbers)
print(unique_numbers)  # 输出: {1, 2, 3, 4, 5}

集合是可变的,这意味着你可以添加新的元素或删除现有的元素。例如

fruits.add("orange")  # 添加新的元素
fruits.remove("banana")  # 删除现有的元素

此外,集合还提供了许多方法和操作,如判断元素是否存在(in运算符)、获取集合的长度(len()函数)等。你可以根据需要使用这些方法来操作集合中的元素。

文件操作

打开、读取和写入文件

  • 打开文件: 在Python中,你可以使用open()函数来打开文件。open()函数接受两个参数:文件名和模式。文件名是要打开的文件的名称(包括路径),而模式指定了你打开文件的方式(读取、写入等)。以下是一个示例:
file = open("example.txt", "r")

在这个例子中,我们打开了名为example.txt的文件,并将其赋值给变量file。我们使用的模式是"r",表示以只读模式打开文件。

  • 读取文件: 一旦你打开了文件,你可以使用不同的方法来读取文件中的内容。最常见的方法是使用read()方法来一次性读取整个文件的内容,如下所示:
content = file.read()

你也可以使用readline()方法来逐行读取文件的内容,如下所示:

line = file.readline()
  • 写入文件: 如果你想写入文件,你需要以写入模式("w")或追加模式("a")打开文件。写入模式将覆盖文件的内容,而追加模式将在文件的末尾添加新的内容。以下是一个示例:
file = open("example.txt", "w")
file.write("Hello, World!")
file.close()

在这个例子中,我们使用写入模式打开名为example.txt的文件,并使用write()方法向文件中写入字符串"Hello, World!"。最后,我们使用close()方法关闭文件。

  • 自动关闭文件: 为了确保在使用完文件后正确关闭它,你可以使用with语句来自动关闭文件。以下是一个示例:
with open("example.txt", "r") as file:
    content = file.read()

在这个例子中,我们使用with语句打开文件,并将其赋值给变量file。在with块内,我们读取文件的内容,并将其赋值给变量content。一旦代码退出with块,文件将自动关闭。

文件的读写模式和编码

文件读写模式

  • 读取模式("r"):以只读模式打开文件。如果文件不存在,会引发FileNotFoundError
  • 写入模式("w"):以写入模式打开文件。如果文件存在,会清空文件内容;如果文件不存在,则创建新文件。
  • 追加模式("a"):以追加模式打开文件。如果文件存在,文件指针会移到文件末尾;如果文件不存在,则创建新文件。
  • 读写模式("r+"):以读写模式打开文件。文件指针位于文件开头,可以读取和写入文件。
  • 二进制模式("b"):以二进制模式打开文件。可以与上述模式组合使用,如:"rb""wb""ab""r+b" 等。

以下是打开文件时使用不同读写模式的示例:

file_read = open("example.txt", "r")
file_write = open("example.txt", "w")
file_append = open("example.txt", "a")
file_read_write = open("example.txt", "r+")
file_binary = open("example.txt", "rb")

文件编码

文件编码指的是将字符转换为字节的过程。在Python中,默认的文件编码是UTF-8,它支持多种语言和字符集。当你打开文件时,可以指定所使用的编码方式。

例如,如果你希望使用UTF-8编码打开文件,可以这样做:

file = open("example.txt", "r", encoding="utf-8")

同样,如果你希望使用其他编码方式,可以在encoding参数中指定相应的编码名称。

需要注意的是,如果你打开文件时指定了编码方式,那么在读取和写入文件时都需要使用相应的编码方式。否则,可能会导致乱码或其他编码问题。

错误处理和异常处理

try-except语句

当在Python中处理异常时,可以使用try-except语句。try-except语句用于捕捉并处理可能引发的异常。下面是try-except语句的介绍:

try-except语句的语法:

try:
    # 可能引发异常的代码块
except ExceptionType:
    # 处理异常的代码块

try块中包含可能引发异常的代码。如果在try块中的代码引发了指定类型的异常,那么对应的except块将被执行。

except块中,你可以编写处理异常的代码。你可以根据具体的异常类型来编写多个不同的except块,以处理不同类型的异常。

以下是一个示例,演示了如何使用try-except语句来处理异常:

try:
    x = 10 / 0  # 可能引发 ZeroDivisionError 异常
except ZeroDivisionError:
    print("除数不能为零!")

在这个例子中,我们尝试将10除以0,这会引发ZeroDivisionError异常。但是,由于我们使用了try-except语句,所以程序不会崩溃。相反,它会执行except块中的代码,并打印出"除数不能为零!"的消息。

除了捕获指定类型的异常,你还可以使用通用的except块来捕获所有类型的异常。以下是一个示例:

try:
    # 可能引发异常的代码块
except:
    # 处理所有类型的异常的代码块

需要注意的是,在处理异常时,最好指定特定的异常类型。这样可以更精确地处理异常,并避免捕获不应该处理的异常。

try-except语句还可以与elsefinally子句一起使用。else子句在try块中的代码没有引发异常时执行,而finally子句始终会执行,无论是否引发了异常。示例如下:

try:
    # 可能引发异常的代码块
    x = 10 / 2
except ZeroDivisionError:
    print("除数不能为零!")
else:
    print("没有引发异常!")
finally:
    print("无论是否引发异常,我都会执行!")

异常处理方法

  1. 使用try-except语句: try-except语句是最常用的异常处理方法。它允许你捕捉并处理可能引发的异常。使用try-except语句时,你可以在try块中编写可能引发异常的代码,并在except块中处理异常。这样可以避免程序崩溃,并根据需要执行相应的处理逻辑。

  2. 使用try-except-else语句: try-except-else语句是在try-except基础上的扩展。在try块中的代码没有引发异常时,else块中的代码会被执行。这可以用来执行在没有异常发生时的特定操作。

  3. 使用try-except-finally语句: try-except-finally语句是在try-except基础上的进一步扩展。finally块中的代码无论是否引发异常都会被执行。这可以用来执行无论如何都要执行的清理操作,例如关闭文件或释放资源。

  4. 使用多个except块: 在try-except语句中,你可以使用多个except块来处理不同类型的异常。每个except块可以捕获特定类型的异常,并执行相应的处理逻辑。这样可以根据异常的类型来采取不同的操作。

  5. 使用finally块: finally块中的代码无论是否引发异常都会被执行。这可以确保在异常处理完成后执行一些必要的清理操作,例如关闭文件或释放资源。

  6. 主动引发异常: 在某些情况下,你可能希望在代码中主动引发异常。你可以使用raise语句来引发指定类型的异常。这可以用于自定义异常或在特定条件下触发异常。

以下是一个示例,演示了使用try-except语句来处理异常:

try:
    x = 10 / 0  # 可能引发 ZeroDivisionError 异常
except ZeroDivisionError:
    print("除数不能为零!")

在这个示例中,我们尝试将10除以0,这会引发ZeroDivisionError异常。但是,由于我们使用了try-except语句,所以程序不会崩溃。相反,它会执行except块中的代码,并打印出"除数不能为零!"的消息。

Python标准库和常用模块

常用的内置模块

Python提供了许多内置模块,用于处理各种任务。下面是一些常用的内置模块的介绍:

  1. math模块: math模块提供了许多数学函数和常量,如三角函数、指数函数、对数函数、数值运算等。你可以使用import math语句来导入这个模块。例如,math.sqrt(16)将返回数字16的平方根。

  2. random模块: random模块提供了生成随机数的函数。你可以使用import random语句来导入这个模块。例如,random.randint(1, 10)将返回一个110之间的随机整数。

  3. datetime模块: datetime模块提供了处理日期和时间的功能。你可以使用import datetime语句来导入这个模块。例如,datetime.datetime.now()将返回当前的日期和时间。

  4. os模块: os模块提供了与操作系统交互的功能,如文件和目录操作、环境变量、进程管理等。你可以使用import os语句来导入这个模块。例如,os.listdir()将返回当前目录中的文件和目录列表。

  5. json模块: json模块提供了处理JSON数据的功能,包括编码和解码JSON数据。你可以使用import json语句来导入这个模块。例如,json.dumps(data)将将Python对象转换为JSON字符串。

  6. re模块: re模块提供了正则表达式的功能,用于模式匹配和文本处理。你可以使用import re语句来导入这个模块。例如,re.search(pattern, string)将在字符串中搜索与指定模式匹配的内容。

  7. csv模块: csv模块提供了处理CSV(逗号分隔值)文件的功能。你可以使用import csv语句来导入这个模块。例如,csv.reader(file)将从CSV文件中读取数据。

以上只是一些常用的内置模块的介绍。Python还提供了许多其他内置模块,用于各种不同的任务,如网络编程、数据库连接、图形界面开发等。你可以根据自己的需求选择合适的模块使用。

第三方库和包管理工具

Python第三方库是由独立开发者或组织创建的,用于扩展Python功能的软件包。这些库可以通过Python的包管理工具来安装和管理。下面是对Python第三方库和包管理工具的介绍:

  • 第三方库: Python的第三方库包括各种各样的功能,如数据科学、网络编程、Web开发、机器学习、图像处理等。这些库通常由独立的开发者或组织维护,并在开源许可下提供。一些常用的第三方库包括:

    • NumPy:用于科学计算的库,提供了多维数组对象和各种数学函数。
    • Pandas:用于数据分析和处理的库,提供了高性能的数据结构和数据分析工具。
    • Requests:用于发送HTTP请求的库,使得与Web服务进行交互变得简单。
    • Django:用于Web应用程序开发的高级框架,提供了一套强大的工具和功能。
    • TensorFlow:用于机器学习和深度学习的库,提供了构建和训练神经网络的工具。
  • 包管理工具: Python有几个流行的包管理工具,用于安装、管理和升级第三方库。这些工具使得与库的依赖关系和版本控制变得简单。以下是一些常用的包管理工具:

    • pippip是Python的默认包管理工具,它允许你安装、升级和卸载第三方库。你可以使用pip install package_name命令来安装一个库。
    • condaconda是一个开源的包管理工具和环境管理系统,它可以处理不同平台上的二进制包,并提供了虚拟环境的支持。
    • poetrypoetry是一个现代化的Python包管理工具,它提供了依赖关系管理、版本控制和构建发布等功能,并支持项目的虚拟环境。

总结

本篇涵盖了Python入门的关键内容,从Python的基础语法和常用数据结构到文件操作、错误处理和异常处理,以及Python的标准库和第三方库。通过学习这些内容,你将建立起对Python编程的基本理解和能力。