Logo
Section 1 / 11

深入探究

运行第一个 Python 程序并理解文件大小转换函数的作用

导入

深入探究

运行第一个 Python 程序并理解文件大小转换函数的作用

按照惯例,我本应向你介绍编程的基础知识,然后逐步带你构建一些有用的东西。但让我们跳过这些内容。下面是一个完整的、可运行的 Python 程序。它对你来说可能完全毫无意义。别担心,接下来我们会逐行拆解它。不过请先通读一遍,看看能否理解其中的任何部分。

1SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 2 1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']} 3 4def approximate_size(size, a_kilobyte_is_1024_bytes=True): 5 '''将文件大小转换为易于阅读的形式。 6 7 关键字参数: 8 size -- 文件大小,单位为字节 9 a_kilobyte_is_1024_bytes -- 如果为 True(默认值),使用 1024 的倍数 10 如果为 False,使用 1000 的倍数 11 12 返回:字符串 13 14 ''' 15 if size < 0: 16 raise ValueError('数字必须是非负的') 17 18 multiple = 1024 if a_kilobyte_is_1024_bytes else 1000 19 for suffix in SUFFIXES[multiple]: 20 size /= multiple 21 if size < multiple: 22 return '{0:.1f} {1}'.format(size, suffix) 23 24 raise ValueError('数字过大') 25 26if __name__ == '__main__': 27 print(approximate_size(1000000000000, False)) 28 print(approximate_size(1000000000000))

现在让我们运行这个程序。输出结果大致如下:

11.0 TB 2931.3 GiB

刚才发生了什么?你执行了你的第一个 Python 程序。Python 解释器运行了你编写的脚本。该脚本定义了一个函数 approximate_size(),它接收一个以字节为单位的精确文件大小,并计算出一个“美观”(但近似)的表示形式。(你可能在 Windows 资源管理器、Mac OS X 的 Finder,或 Linux 上的 Nautilus、Dolphin 或 Thunar 中见过这种显示方式。当你以多列列表形式查看文件夹中的文档时,会看到包含文档图标、名称、大小、类型、最后修改时间等信息的表格。如果某个文件是 1093 字节,名为 TODO,你的文件管理器不会显示 TODO 1093 字节,而是显示类似 TODO 1 KB 的内容。这正是 approximate_size() 函数所做的事情。)

查看脚本底部,你会看到两次对 print(approximate_size(arguments)) 的调用。这是函数调用——先是调用 approximate_size() 函数并传入参数,然后将返回值直接传递给 print() 函数。print() 是内置函数,你永远不会看到它的显式声明。你可以随时、随地直接使用它。(还有很多内置函数,以及分布在不同模块中的更多函数。耐心点,小家伙。)

那么为什么在命令行上运行脚本总是得到相同的输出?我们稍后再解释。首先,让我们来看看这个 approximate_size() 函数。

声明函数