第二模块:函数编程(学位课程):(第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

原文地址:https://www.cnblogs.com/foremostxl/p/9860549.html

时间: 2024-07-30 12:05:29

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

五、python函数、装饰器、内置函数、json及模块

一.递归调用 1.一个函数自己调用自己就是递归调用,最多一个函数递归调用自己999次,超过就会出错2.递归必须有一个明确的结束条件3.每次进入更深一层递归时,问题规模相比上次递归都应有所减少4.递归效率不高,少用递归 eg:def test1(): num = int(input('please enter a number:')) if num%2==0:#判断输入的数字是不是偶数 return True #如果是偶数的话,程序就退出了,返回true print('不是偶数请重新输入!') r

第二模块·函数编程-第1章 函数、装饰器、迭代器、内置方法

01-鸡汤之人丑就要多读书 02-三元运算 03-文件处理 04-文件处理-二进制模式 05-文件处理-智能检测编码的工具 06-文件处理-写模式操作文件 07-文件处理-追加模式操作文件 08-文件处理-混合操作文件 09-文件操作其他功能 10-文件处理-文件修改功能 11-函数-基本介绍 12-函数-默认参数 13-函数-关键参数 14-函数-非固定参数 15-函数-非固定参数2 16-函数-返回值 17-函数-局部变量 18-函数-在函数里修改全局变量 19-函数-在函数里修改列表数据

Python模块导入和常用内置方法

模块导入和常见内置方法 __file__: os.path.dirname(__file__)和os.path.join(dirname, filename),通过sys.path.append()可以把模块添加到Python的环境变量目录中 __name__: 直接执行py文件时__name__返回"__main__", 通过import调用时__name__返回的是(包名.模块名) __doc__: 返回.py文件中"""xxx""

Python之路(第二十六篇) 面向对象进阶:内置方法

一.__getattribute__ object.__getattribute__(self, name) 无条件被调用,通过实例访问属性.如果class中定义了__getattr__(),则__getattr__()不会被调用(除非显示调用或引发AttributeError异常) class Foo: ? def __init__(self,x): self.x = x ? def __getattr__(self, item): print("执行__getattr__") ?

流畅的python学习笔记第七章:装饰器

装饰器就如名字一样,对某样事物进行装饰过后然后返回一个新的事物.就好比一个毛坯房,经过装修后,变成了精装房,但是房子还是同样的房子,但是模样变了. 我们首先来看一个函数.加入我要求出函数的运行时间.一般来说代码写成如下.但是我有很多个函数都要计算运行时间.每个函数里面都要写一个计时的过程是一件很麻烦的事. def target():     start=time.time()     print 'running target()'     end=time.time()     print e

内置方法及模块初识

析构方法__del__ 构造方法 申请一个空间 析构方法 释放一个空间之前执行 某对象借用了操作系统的资源,还要通过析构方法归还回去 : 文件资源 网络资源 垃圾回收机制 class A: def __del__(self): # 析构方法 del A的对象 会自动触发这个方法 print('执行我了') a = A() del a # 对象的删除 del print(a) class File(): # 处理文件的 def __init__(self,file_path): self.f =

Python之路(第二十七篇) 面向对象进阶:内置方法、描述符

一.__call__ 对象后面加括号,触发执行类下面的__call__方法. 创建对象时,对象 = 类名() :而对于 __call__ 方法的执行是由对象后加括号触发的,即:对象() 或者 类()() class Foo: ? def __call__(self, *args, **kwargs): print("我执行啦") ? f = Foo() f() #对象加括号调用执行类下的__call__方法 #输出结果 我执行啦 二.__next__和__iter__实现迭代器协议 迭

内置方法 常用模块

__new__ 在init 之前 , 实例化对象的第一步是__new__创建一个空间 class Foo: def __init__(self): # 初始化方法 print('执行了init') def __new__(cls, *args, **kwargs): # 构造方法 # object.__new__(cls) print('执行了new') return object.__new__(cls) #如果这个return不写,init方法永远不会执行 obj = Foo() 执行了ne

第七章 python基础之函数,递归,内置函数

五 局部变量和全局变量 name='cyj' #在程序的一开始定义的变量称为全局变量. def change_name(): global name #global 定义修改全局变量. name="lxq" # 在子程序中定义的变量称为局部变量. print("name:",name) change_name(); print("全局变量名称:"+name) #全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序. #当全局变量与局部变量