第二模块:函数编程(学位课程):(第1章)函数装饰器迭代器内置方法

Posted foremostxl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了第二模块:函数编程(学位课程):(第1章)函数装饰器迭代器内置方法相关的知识,希望对你有一定的参考价值。

1、(单选题) 在函数定义时某个形参有值,我们称这个参数为()。

A位置参数
B关键字参数
C形参
D默认参数


D: 如果参数有值,我们称该参数为默认参数

关键参数,关键参数是实参,传参用的
正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定了参数名的参数就叫关键参数),

但记住一个要求就是,关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后

2、请问python中的变量查找作用域的顺序是什么___?

答案为LEGB

LEGB 代表名字查找顺序: locals -> enclosing function -> globals -> __builtins__ locals 是函数内的名字空间,包括局部变量和形参 enclosing 外部嵌套函数的名字空间 globals 全局变量,函数定义所在模块的名字空间 builtins 内置模块的名字空间

3、递归的概念

如果一个函数在内部调用自身本身,这个函数就是递归函数。

递归函数 数据结构为 栈 ----先进后出

1必须有一个明确的结束条件
2每次进入更深一层递归时,问题规模相比上次递归都应有所减少
3递归效率不高,递归层次过多会导致栈溢出(在计算机中,函数调用是通过栈(stack)这种数据结构实现的,
每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,
所以,递归调用的次数过多,会导致栈溢出)

--------------------------------------------------------

技术分享图片技术分享图片

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

4、请使用列表生成式将列表li = [1, 2, 3, 4, 5, 6, 7, 8, 9]中大于5的元素乘以2组成新的列表___。 

li = [1, 2, 3, 4, 5, 6, 7, 8, 9]
print([item*2 for item in li if item>5])

5、(单选题) 基于你对eval函数的了解,请从下面四个选项中选出你认为描述不正确的一项是():

A  eval函数用来执行一个字符串表达式,并返回表达式的值
B eval函数可以实现字符串、列表和元组的相互转换
C eval函数可以指定表达式中的参数的作用域
D eval函数不可以把字典形式的字符串当作参数
---------------------------------------

A和B都是eval函数最基本的用法,C选项考察的是对eval函数中的参数的理解,globals和 locals都可以指定作用域,D选项是很明显的错误。

6、eval函数表达式参数作用域的理解

eval(expression[, globals[, locals]])

expression -- 表达式。
globals -- 变量作用域,全局命名空间,如果被提供,则必须是一个字典对象。
locals -- 变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

功能1:可以把list,tuple,dict和string相互转化。

功能2:执行字符串表达式

看例题:

a = 10
b = 20
c = 30
g = {a: 6, b: 8}
t = {b:100, c: 10}
print(eval(a+b, g))     这个有设定了全局变量g
print(eval(a+b+c, g, t)) 这个设定了全局变量g 和局部变量l   b,c从t中取

---------------------------------------------------------
本题考察对eval函数表达式参数作用域的理解,

第一个位置参数是字符串表达式source,
第二 个位置参数是全局作用域globals,

第三个位置参数是局部作用域locals,locals优先于globals,

第一 次打印没有指定locals,所以a和b的值都从globals中去,故结果为14;

第二次打印指定了locals,所以 对于b就要从locals中取值,故相加结果为116,所以选D。

------------------------------------------------------------------------------------------------------------------------------------------

7、Python callable() 函数

callable() 函数用于检查一个对象是否是可调用的。如果返回True,object仍然可能调用失败;但如果返回False,调用对象ojbect绝对不会成功。
对于函数, 方法,
lambda 函式, 类, 以及实现了 __call__ 方法的类实例, 它都返回 True。

----------------------------------------

https://blog.csdn.net/baidu_35085676/article/details/79782284

以上是关于第二模块:函数编程(学位课程):(第1章)函数装饰器迭代器内置方法的主要内容,如果未能解决你的问题,请参考以下文章

第8章 装饰器模块和包

第12章 课程总结

第二模块第18章 函数递归

Python核心编程第二版 第十二章课后答案

第二次作业:二维数组

python第二章函数以及常用模块