2023年11月27日发(作者:)

Python⼊门-第4节课:脚本编写

⽬录

1. Python 安装和环境设置

安装 Anaconda

2. 与⽤户输⼊交互

3. 处理异常

错误和异常

Try 语句

指定异常

访问错误消息

4.读写⽂件

读取⽂件

写⼊⽂件

With

每次读取⼀⾏⽅法

5. 导⼊本地、标准和第三⽅模块

导⼊本地脚本

2. 与⽤户输⼊交互

我们可以使⽤内置函数 获取⽤户的原始输⼊,该函数接受⼀个可选字符串参数,⽤于指定在要求⽤户输⼊时向⽤户显⽰的消息。

input

name = input("Enter your name: ")

print("Hello there, {}!".format(()))

这段代码提⽰⽤户输⼊姓名,然后在问候语中使⽤该输⼊。函数获取⽤户输⼊的任何内容并将其存储为字符串。如果你想将输⼊解析为字符

input

串之外的其他类型,例如整数(如以下⽰例所⽰),需要⽤新的类型封装结果并从字符串转换为该类型。

num = int(input("Enter an integer"))

print("hello" * num)

我们还可以使⽤内置函数 将⽤户输⼊解析为 Python 表达式。该函数会将字符串评估为⼀⾏ Python 代码。

eval

result = eval(input("Enter an expression: "))

print(result)

如果⽤户输⼊ ,输出为

2 * 36

练习:⽣成消息

假设你是⼀名⽼师,需要向每位学⽣发⼀条消息,提醒他们未交的作业和分数是多少。你知道每名学⽣的姓名,没交的作业份数和分数,这些数据

保存在了电⼦表格中,你只需将这些输⼊插⼊你想到的以下消息中即可:

写⼀个完成以下操作的脚本:

names = input("Enter names separated by commas: ").title().split(",")

assignments = input("Enter assignment counts separated by commas: ").split(",")

grades = input("Enter grades separated by commas: ").split(",")

message = "Hi {},nnThis is a reminder that you have {} assignments left to

submit before you can graduate. You're current grade is {} and can increase

trytrytry

:这是 语句中的唯⼀必需⼦句。该块中的代码是 Python 在 语句中⾸先运⾏的代码。

excepttryexcept

:如果 Python 在运⾏ 块时遇到异常,它将跳到处理该异常的 块。

elsetrytry

:如果 Python 在运⾏ 块时没有遇到异常,它将在运⾏ 块后运⾏该块中的代码。

finallytryfinally

:在 Python 离开此 语句之前,在任何情形下它都将运⾏此 块中的代码,即使要结束程序,例如:如果 Python 在运⾏

exceptelsefinally

块中的代码时遇到错误,在停⽌程序之前,依然会执⾏此 块。

为何在 Python 中需要 ⼦句?

finally

指定异常

我们实际上可以指定要在 块中处理哪个错误,如下所⽰:

except

try:

# some code

except ValueError:

# some code

现在它会捕获 异常,但是不会捕获其他异常。如果我们希望该处理程序处理多种异常,我们可以在 后⾯添加异常元组。

ValueErrorexcept

try:

# some code

except (ValueError, KeyboardInterrupt):

# some code

或者,如果我们希望根据异常执⾏不同的代码块,可以添加多个 块。

except

try:

# some code

except ValueError:

# some code

except KeyboardInterrupt:

# some code

访问错误消息

在处理异常时,依然可以如下所⽰地访问其错误消息:

ZeroDivisionError occurred: division by zero

因此依然可以访问错误消息,即使已经处理异常以防⽌程序崩溃!

如果没有要处理的具体错误,依然可以如下所⽰地访问消息:

try:

# some code

except Exception as e:

# some code

print("Exception occurred: {}".format(e))

Exception

是所有内置异常的基础类。你可以在此处详细了解 Python 的异常。

4.读写⽂件

读取⽂件

f = open('my_path/my_', 'r')

file_data = ()

()

1. ⾸先使⽤内置函数 打开⽂件。需要⽂件路径字符串。 函数会返回⽂件对象,它是⼀个 Python 对象,Python 通过该对象与⽂件

openopen

本⾝交互。在此⽰例中,我们将此对象赋值给变量

f

2. 可以在 open 函数中指定可选参数。参数之⼀是打开⽂件时采⽤的模式。在此⽰例中,我们使⽤ ,即只读模式。这实际上是模式参数的默认

r

值。

3. 使⽤ 访问⽂件对象的内容。该 ⽅法会接受⽂件中包含的⽂本并放⼊字符串中。在此⽰例中,我们将该⽅法返回的字符串赋值给变

readread

file_data

4. 当我们处理完⽂件后,使⽤ ⽅法释放该⽂件占⽤的系统资源。

close

With

Python 提供了⼀个特殊的语法,该语法会在你使⽤完⽂件后⾃动关闭该⽂件。

with open('my_path/my_', 'r') as f:

file_data = ()

关键字使你能够打开⽂件,对⽂件执⾏操作,并在缩进代码(在此⽰例中是读取⽂件)执⾏之后⾃动关闭⽂件。现在,我们不需要调

with

了!你只能在此缩进块中访问⽂件对象

()f

().read()

调⽤没有传⼊参数。它⾃动变成从当前位置读取⽂件的所有剩余内容,即整个⽂件。如果向 传⼊整型参数,它将读取长度是这么多

字符的内容,输出所有内容,并使 'window' 保持在该位置以准备继续读取。

with open() as song:

print((2))

print((8))

print(())

输出:

We

有⽤。如果你要导⼊的 Python 脚本与当前脚本位于同⼀个⽬录下,只需输⼊ ,然后是⽂件名,⽆需扩展名

import.py

import useful_functions

Importimportuseful_functions

语句写在 Python 脚本的顶部,每个导⼊语句各占⼀⾏。该语句会创建⼀个模块对象,叫做 。模块是包含定义和语

句的 Python ⽂件。要访问导⼊模块中的对象,需要使⽤点记法。

import useful_functions

useful__five([1, 2, 3, 4])

我们可以为导⼊模块添加别名,以使⽤不同的名称引⽤它。

import useful_functions as uf

_five([1, 2, 3, 4])

使⽤

if main

为了避免运⾏从其他脚本中作为模块导⼊的脚本中的可执⾏语句,将这些⾏包含在 块中。或者,将它们包含在函数

if __name__ == "__main__"

main()if main

中并在块中调⽤该函数。

每当我们运⾏此类脚本时,Python 实际上会为所有模块设置⼀个特殊的内置变量。当我们运⾏脚本时,Python 会将此模块识别为主

__name__

程序,并将此模块的变量设为字符串。对于该脚本中导⼊的任何模块,这个内置变量会设为该模块的名称。因

__name__"__main__"__name__

此,条件 会检查该模块是否为主程序。

if __name__ == "__main__"

标准块模块

Python 标准库包含⼤量模块!以下为部分推荐

datatime: 处理时间和⽇期

timeit: 显⽰代码的运⾏时间

csv:对于读取 csv ⽂件来说⾮常便利

collections:常见数据类型的实⽤扩展,包括

OrderedDictdefaultdictnamedtuple

random:⽣成假随机数字,随机打乱序列并选择随机项

string:关于字符串的更多函 数。此模块还包括实⽤的字母集合例如 (包含所有字符都是有效数字的字符串)。

re:通过正则表达式在字符串中进⾏模式匹配

math:⼀些标准数学函数

os:与操作系统交互

的⼦模块,⽤于操纵路径名称

os

sys:直接使⽤ Python 解释器

zipfile: 从 zip ⽂件中提取⽂件

json:适⽤于读写 json ⽂件(⾯向⽹络开发)

可以在 Python ⼀周模块博客中发现新的模块。

导⼊模块技巧

还有⼀些在不同情形下很有⽤的其他形式的 import 语句。

要从模块中导⼊单个函数或类:

模块、软件包和名称

为了更好地管理代码,Standard 标准库中的模块被拆分成了⼦模块并包含在软件包中。软件包是⼀个包含⼦模块的模块。⼦模块使⽤普通的点记

法指定。

⼦模块的指定⽅式是软件包名称、点,然后是⼦模块名称。你可以如下所⽰地导⼊⼦模块。

import package_ule_name

第三⽅库

独⽴开发者编写了成千上万的第三⽅库!你可以使⽤ pip 安装这些库。pip 是在 Python 3 中包含的软件包管理器,它是标准 Python 软件包管

理器,但并不是唯⼀的管理器。另⼀个热门的管理器是 Anaconda,该管理器专门针对数据科学。

要使⽤ pip 安装软件包,在命令⾏中输⼊“”,然后是软件包名称,如下所⽰:。该命令会下载并安装该软件

pip installpip install package_name

包,以便导⼊你的程序中。安装完毕后,你可以使⽤从标准库中导⼊模块时⽤到的相同语法导⼊第三⽅软件包。

使⽤ ⽂件

⼤型 Python 程序可能依赖于⼗⼏个第三⽅软件包。为了更轻松地分享这些程序,程序员经常会在叫做 的⽂件中列出项⽬的

Flask - ⼀个⼩型框架,⽤于构建⽹络应⽤和 API。

Django - ⼀个功能更丰富的⽹络应⽤构建框架。Django 尤其适合设计复杂、内容丰富的⽹络应⽤。

Beautiful Soup - ⽤于解析 HTML 并从中提取信息。适合⽹页数据抽取。

pytest - 扩展了 Python 的内置断⾔,并且是最具单元性的模块。

PyYAML - ⽤于读写 YAML ⽂件。

NumPy - ⽤于使⽤ Python 进⾏科学计算的最基本软件包。它包含⼀个强⼤的 N 维数组对象和实⽤的线性代数功能等。

pandas - 包含⾼性能、数据结构和数据分析⼯具的库。尤其是,pandas 提供 dataframe!

matplotlib - ⼆维绘制库,会⽣成达到发布标准的⾼品质图⽚,并且采⽤各种硬拷贝格式和交互式环境。

ggplot - 另⼀种⼆维绘制库,基于 R's ggplot2 库。

Pillow - Python 图⽚库可以向你的 Python 解释器添加图⽚处理功能。

pyglet - 专门⾯向游戏开发的跨平台应⽤框架。

Pygame - ⽤于编写游戏的⼀系列 Python 模块。

pytz - Python 的世界时区定义。

IPython

实际上有⼀个代替默认 python 交互式解释器的强⼤解释器 IPython,它具有很多其他功能。

Tab 键补充完整

?

:关于对象的详细信息

!

:执⾏系统 shell 命令

语法突出显⽰

你可以在此处查看更多其他功能!