通常程序设计的书籍都会以一堆关于基础知识的章节开始,最终逐步的构建一些有用的东西。让我们跳过所有的那些东西,来看一个完整的、可以直接运行的 Python 程序。可能刚开始你根本看不懂,但不要担心,因为你会去一行一行的仔细研究。但是首先还是要通读一遍,看看里面什么东西(如果有的话)是你可以看懂的。
1 SUFFIXES = {1000: ['KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], 2 1024: ['KiB', 'MiB', 'GiB', 'TiB', 'PiB', 'EiB', 'ZiB', 'YiB']} 3 4 def approximate_size(size, a_kilobyte_is_1024_bytes=True): 5 '''Convert a file size to human-readable form. 6 7 Keyword arguments: 8 size -- file size in bytes 9 a_kilobyte_is_1024_bytes -- if True (default), use multiples of 1024 10 if False, use multiples of 1000 11 12 Returns: string 13 14 ''' 15 if size < 0: 16 raise ValueError('number must be non-negative') 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('number too large') 25 26 if __name__ == '__main__': 27 print(approximate_size(1000000000000, False)) 28 print(approximate_size(1000000000000))
现在让我们从命令行来运行这个程序。在 Mac OS X 或者 Linux 上,类似这样:
you@localhost:~/diveintopython3/examples$ python3 humansize.py 1.0 TB 931.3 GiB
刚刚发生了什么?你执行了你的第一个 Python 程序。你从命令行调用了 Python 解释器,并且传递了一个你想 Python 去执行的脚本的名称。这个脚本定义了一个单一的函数,这个approximate_size()
函数把一个精确到字节的文件大小计算成一个有漂亮格式(大约计算的)的大小。(你可能已经在 Windows Explorer,或者 Mac OS X Finder,或者 Linux 上的 Nautilus 或 Dolphin 或 Thunar 看到过这个。如果你按照多列的列表来显示一个文件夹的文档,它就会显示一个包含文档图标、文档名称、大小、类型、最后修改日期等等信息的表格。如果这个文件夹包含一个 1093 字节大小名叫 TODO
的文件,你的文件管理器将不会显示成 TODO 1093 bytes
,而用 TODO 1 KB
的显示格式代替。那就是 approximate_size()
函数所做的事情。)
看看这个脚本的底部,你会看到对 print(approximate_size(arguments))
的两次调用。这些叫做函数调用 —— 第一个调用了 approximate_size()
函数并传递了一些参数,接着直接把返回值传递给了 print()
函数。这个 print()
函数是内置的,你将从不会看到它的一个显式的声明。你只管在需要的任何时候任何地方使用它就行。(有很多内置函数,更多的函数独立于各个 modules(模块)里面。保持耐心,你会逐步熟悉它们的。)
那么为什么每次在命令行运行脚本都会给你同样的输出结果呢?我们将讲解这个。首先,让我们来看一下 approximate_size()
函数。