模块之标准模块,,


  标准模块

  我们已经知道了如何创建和使用模块,是不是总是必须编写我们自己的模块?并不是这样!这正是Python的妙处之一。

  Python提供了大量标准模块,可以用来完成很多工作,比如查找文件、报时(或计时)、生成随机数,以及很多其他功能,有时人们说Python“配有电池”,指的是Python的所有标准模块,这称为Python标准库。

  为什么这些内容必须放在单独的模块中呢?嗯,不是非得这样,不过设计Python的人认为这样会更高效,否则,每个Python程序都必须包含所有可能用到的函数,通过建立单独的模块,就只需包含你真正需要的那些函数。

  当然,有些内容(如print、for和if—else)是Python的基本命令,所以这些基本命令不需要一个单独的模块,它们都是在Python的主要部分中。

  如果Python没有提供合适的模块来完成你想做的工作(如建立一个图形游戏),可以下载另外一些插件模块,它们通常都是免费的!

  下面来看几个标准模块

  time

  与孩子一起学编程-python教程

  利用time模块,能够获取你的计算机时钟的信息,如日期和时间,还可以利用它为程序增加延迟。(有时计算机动作太快,你必须让它慢下来)

  time模块中的sleep()函数可以用来增加一个延迟,也就是说,可以让程序等待一段时间,什么也不做。这就像让你的程序睡眠,正是这个原因,这个函数名叫sleep(),可以告诉它你要它睡多长时间。(多少秒)

  代码清单15-3中的程序展示了sleep()函数如何工作。键入这个程序,保存并运行,看看会发生什么。

  与孩子一起学编程-python教程

  要注意,调用sleep()函数时,必须在前面加上time,这是因为,尽管我们已经用import导入了time,但并没有让它成为主程序命名空间的一部分,所以每次想要使用sleep()函数时,都必须调用time.sleep()。

  如果试图这样做:import time sleep(5)

  这是不行的,因为sleep并不在我们的命名空间中,我们会得到这样的一条错误消息:与孩子一起学编程-python教程

  

  不过如果这样导入:与孩子一起学编程-python教程

  就会告诉Python,在time模块中寻找名为sleep的变量(或者函数或对象),把它包含到我的命名空间中,现在就可以直接使用sleep函数,而不需要再在前面加上time了:

  与孩子一起学编程-python教程

  如果想要得到这种将名字导入局部命名空间带来的方便(这样就无需每次都指定模块名),但是又不知道需要模块中的哪些名字,就可以使用星号(*)把所有名字都导入到我们的命名空间里:from time import *

  *表示“全部”,这样就会从模块导入所有可用的名字,使用这个命令必须特别当心,如果在我们的程序中创建了一个名字,而它与time模块中的一个名字相同,就会出现冲突。用*导入所有名字不是最佳做法,最好只导入你真正需要的部分。

  还记得第8章代码清单8-6中的倒计是程序吗?现在你应该知道那个程序中time.sleep(1)的作用了吧。

  随机数

  random模块用于生成随机数,这在游戏和仿真中非常有用。

  下面试着在交互模式中使用random模块:

  与孩子一起学编程-python教程

  每次使用random.randint()时,会得到一个新的随机整数,由于我们为它传递的参数是0和100,所以得到的整数会介于0到100之间,我们在第1章的猜数程序中就是使用random.randint()来创建秘密数。

  如果你想得到一个随机的小数,可以使用random.randint(),不用在括号里放任何参数,因为random.randint()

  总是会提供一个介于0到1之间的数。

  与孩子一起学编程-python教程

  如果你想到其他范围内的一个随机数,比如说0到10之间,只需要将结果乘以10:

  与孩子一起学编程-python教程

  你学到了什么

  在这一章,你学到了以下内容。

  什么是模块

  如何创建模块

  如何在另一个程序中使用模块

  什么是命名空间

  局部和全局命名空间和变量的什么意思

  如何把其他模块中的名字包含到你的命名空间中。

  另外你还了解了几个Python标准模块的例子。

  测试题

  1、使用模块有哪些好处?

  2、如何创建模块?

  3、使用模块时所用的Python关键字是什么?

  4、导入模块等同于导入一个______。

  5、要导入time模块从而能访问这个模块中的所有名字(也就是所有变量、函数和对象),有哪两种方法?

  动手试一试

  1、编写一个模块,包含第13章“动手试一试”中的“用大写字母打印名字”函数。然后编写一个程序导入这个模块,并调用这个函数。

  2、修改代码清单15-2中的代码,把c_to_f()包含到主程序的命名空间里。也就是说,修改这个代码,从而可以写:fahrenheit=c_to_f(celsius)而不是fahrenheit=my_module.c_to_f(celsius)

  3、编写一个小程序,生成1到20之间的5个随机整数的列表,并打印出来

  4、编写一个小程序,要求它工作30秒,每3秒打印一个随机小数

评论关闭