Python入门之模块——第2关:内置模块中的内置函数

Posted YLeee

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python入门之模块——第2关:内置模块中的内置函数相关的知识,希望对你有一定的参考价值。

任务描述

我们在安装好了Python配置文件后,也将Python本身带有的库也安装好了,Python自带的库也叫做Python的内置模块。Python的内置模块是Python编程的重要组织形式,内置模块中的内置函数也极大方便了编程过程中对函数等功能的使用。

本关的目标是让读者了解并掌握Python内置模块和内置函数的相关知识。

相关知识

内置模块

Python中常见的内置模块如下:

  1. os模块:(文件和目录)用于提供系统级别的操作。
  2. sys模块:用于提供对解释器相关的操作。
  3. json模块:处理JSON字符串。
  4. logging: 用于便捷记录日志且线程安全的模块。
  5. time&datetime模块:时间相关的操作,时间有三种表示方式。
  6. hashlib模块:用于加密相关操作,代替了md5模块,主要是提供SHA1SHA224SHA256SHA384SHA512MD5算法。
  7. random模块:提供随机数。

内置模块中的内置函数

Python的内置模块中也有很多使用十分方便的内置函数。

dir()函数

dir()函数是一个排好序的字符串列表,包含的内容是一个模块里定义过的名字,包含在一个模块里定义的所有模块,变量和函数。例如:

# 导入内置math模块
import math

#调用math模块中的dir()函数
content = dir(math)

#输出math模块中所有模块、函数和变量的名字
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文件的代码,实现相应的功能。具体要求如下:

  • 输入两个正整数ab。要求判断是否存在两个整数,它们的和为a,积为b
  • 如果存在,则输出Yes,若不存在,则输出No

测试说明

本关的测试文件是src/step2/built-module.py,测试过程如下:

  1. 平台自动编译生成built-module.exe;
  2. 平台运行built-module.exe,并以标准输入方式提供测试输入;
  3. 平台获取built-module.exe输出,并将其输出与预期输出对比。如果一致则测试通过,否则测试失败。

以下是平台对src/step2/built-module.py的样例测试集:

测试输入:
9
15
预期输出:
No

测试输入:
9
20
预期输出:
Yes

测试输入:
20
36
预期输出:
Yes

测试输入:
18
40
预期输出:
No

开始你的任务吧,祝你成功!

人类所有优点都要变成习惯才有价值,即使爱这样一个永恒的主题,你也必须通过不断的修炼,变成你的习惯,才真正会化为你的行动。

如果你觉得这一关的内容对你有帮助,请你在下面点赞。

 

参考答案

①方法1

#coding=utf-8

#导入math模块
import math

#输入两个整数a和b
a = int(input())
b = int(input())

# 请在此添加代码,要求判断是否存在两个整数,它们的和为a,积为b;
#********** Begin *********#
def isExist(x, y):    
    c1 = x + math.sqrt(pow(x, 2) - 4 * y) > 0 and (x + math.sqrt(pow(x, 2) - 4 * y)) % 2 == 0
    c2 = x - math.sqrt(pow(x, 2) - 4 * y) > 0 and (x - math.sqrt(pow(x, 2) - 4 * y)) % 2 == 0
    if c1 and c2:
        return "Yes"
    else:
        return "No"

print(isExist(a, b))  

#********** End **********#

②方法2

#coding=utf-8

#导入math模块
import math

#输入两个整数a和b
a = int(input())
b = int(input())

# 请在此添加代码,要求判断是否存在两个整数,它们的和为a,积为b;
#********** Begin *********#

x1 = int(float(a+math.sqrt(a**2-4*b))/2)
x2 = int(float(a-math.sqrt(a**2-4*b))/2)
if x1+x2 == a and x1*x2 == b:
    print('Yes')
else:
    print('No')

#********** End **********#

 

以上是关于Python入门之模块——第2关:内置模块中的内置函数的主要内容,如果未能解决你的问题,请参考以下文章

Python 入门之 内置模块 -- 序列化模块(json模块pickle模块)

Python入门之函数调用——第1关:内置函数 - 让你偷懒的工具

Python 入门之 内置模块 -- re模块

Python3入门系列之-----内置的文件操作模块OS

Python3入门(十三)——常用内置模块之时间日期模块datatime

Python入门之模块——第1关:模块的定义