实训平台4-4 Python入门之模块第2关:内置模块中的内置函数
任务描述
我们在安装好了 Python 配置文件后,也将 Python 本身带有的库也安装好了, Python 自带的库也叫做 Python 的内置模块。 Python 的内置模块是 Python 编程的重要组织形式,内置模块中的内置函数也极大方便了编程过程中对函数等功能的使用。
本关的目标是让读者了解并掌握 Python 内置模块和内置函数的相关知识。
相关知识
内置模块
Python 中常见的内置模块如下:
- os 模块:(文件和目录)用于提供系统级别的操作;
- sys 模块:用于提供对解释器相关的操作;
- json 模块:处理 JSON 字符串;
- logging : 用于便捷记录日志且线程安全的模块;
- time&datetime 模块:时间相关的操作,时间有三种表示方式;
- hashlib 模块:用于加密相关操作,代替了 md5 模块,主要是提供 SHA1 , SHA224 , SHA256 , SHA384 , SHA512 , MD5 算法;
- random 模块:提供随机数。
内置模块中的内置函数
Python 的内置模块中也有很多使用十分方便的内置函数。
dir() 函数
dir() 函数是一个排好序的字符串列表,包含的内容是一个模块里定义过的名字,包含在一个模块里定义的所有模块,变量和函数。例如:
1.# 导入内置math模块
2.import math
3.
4.# 调用math模块中的dir()函数
5.content = dir(math)
6.
7.# 输出math模块中所有模块、函数和变量的名字
8.print(content)
输出结果:
[‘doc’, ‘loader’, ‘name’, ‘package’, ‘spec’, ‘acos’, ‘acosh’, ‘asin’, ‘asinh’, ‘atan’, ‘atan2’, ‘atanh’, ‘ceil’, ‘copysign’, ‘cos’, ‘cosh’, ‘degrees’, ‘e’, ‘erf’, ‘erfc’, ‘exp’, ‘expm1’, ‘fabs’,‘factorial’, ‘floor’, ‘fmod’, ‘frexp’, ‘fsum’, ‘gamma’, ‘gcd’, ‘hypot’, ‘inf’, ‘isclose’, ‘isfinite’, ‘isinf’, ‘isnan’, ‘ldexp’, ‘lgamma’, ‘log’, ‘log10’, ‘log1p’, ‘log2’, ‘modf’, ‘nan’, ‘pi’, ‘pow’, ‘radians’, ‘sin’,‘sinh’, ‘sqrt’, ‘tan’, ‘tanh’, ‘tau’, ‘trunc’]
程序输出了 math 模块中所有模块、函数和变量的名字。特殊字符串变量 name 是指向模块的名字,变量 file 是指向该模块的导入文件名。
globals() 和 locals() 函数
globals() 和 locals() 函数可被用来返回全局和局部命名空间里的名字。如果在函数内部调用的是 globals() 函数,那么返回的是所有在该函数里能够访问的全局名字。如果在函数内部调用的 locals() 函数,返回的是能够在该函数里访问的局部命名。 globals() 函数和 locals() 函数的返回类型都是字典。所以名字们能用 keys() 函数摘取。
reload() 函数
当一个模块被导入到一个脚本中后,程序只会将模块顶层部分的代码执行一次。因此,如果我们想再次执行模块顶层部分的代码,可以用 reload() 函数。该函数便会重新将之前导入过的模块导入。格式如下:
reload(module_name)
在这里, module_name 要直接放模块名,而不能是一个字符串形式。例如我们想重载 hello 模块:
reload(hello)
小结: Python 中的内置模块和内置函数可以帮助程序员快速完成编程功能,不必重复开发已存在的常用代码,极大提高了办事效率和代码质量。
Python 中的内置模块和内置函数应用广泛,希望读者在接下来的学习生活中有更加深刻的体会。
编程要求
本关的编程任务是补全 src/step2/built-module.py 文件的代码,实现相应的功能。具体要求如下:
•输入两个正整数 a , b 。要求判断是否存在两个整数,它们的和为 a ,积为 b ;
•如果存在,则输出 Yes ,若不存在,则输出 No 。
本关涉及的代码文件 src/step2/built-module.py 的代码框架如下:
#coding=utf-8
2.
3.# 导入math模块
4.import math
5.
6.# 输入两个整数a和b
7.a = int(input())
8.b = int(input())
9.
10.# 请在此添加代码,要求判断是否存在两个整数,它们的和为a,积为b
11.#********** Begin *********#
12.x1 = int(float(a+math.sqrt(a**2-4*b))/2)
13.x2 = int(float(a-math.sqrt(a**2-4*b))/2)
14.if x1+x2 == a and x1*x2 == b:
15. print('Yes')
16.else:
17. print('No')
18.#********** End **********#