1、当一个嵌套函数在其外部区域引用了一个值时,该嵌套函数就是一个闭包,以下代码输出值为:16
def adder(x):            def wrapper(y):           # 第二步return (x + y)        # 第五步return (wrapper)          # 第三步# adder5是对wrapper的引用   此时x等于5adder5 = adder(5)   #返回了 wrapper ,且x=5;  第一步
print(adder5(adder5(6)))       # 第四步闭包:如果一个函数内部又定义了一个函数,就把外部的函数称为外函数,内部的函数称为内函数。如果内函数引用了外函数的变量,而外函数返回内函数(引用),就把这种形式称之为 闭包。并且当外函数结束时会将变量绑定给内函数。adder(5) = wrapper(x=5, y)
adder5 = wrapper(x=5, y)
adder5(6) = wrapper(x=5, 6) = 5 + 6 = 11
adder5(adder5(6)) = adder(11) = wrapper (x =5, 11) = 5 + 11 = 16# 外部函数确定了x的值为5,内部函数的值为6,所以第一次计算结果为11,第二次计算,还是在x为5的前提下,需要在11的基础上再加5
那什么是闭包呢,一言以蔽之:一个持有外部环境变量的函数就是闭包。因为wrapper是闭包 所以adder5返回的是wrapper函数 接下来adder5(6) 返回的是11=5+6 同理 再调用一次就是16 = 11+5
2、如下程序会打印多少个数:
# python2:9个
# python3:10个k = 1000
sum = 0
while k > 1:sum += 1print(k)k = k/2
print(sum)python2 整数除法/时,会取整的,所以应该是9个。
python3 除法/,结果是浮点的,所以是10个
# 1000
# 500.0
# 250.0
# 125.0
# 62.5
# 31.25
# 15.625
# 7.8125
# 3.90625
# 1.953125# 10
# 代码运行应该是10个,python是不会自动取整的
3、What gets printed?   6
kvps = { '1' : 1, '2' : 2 }
theCopy = kvps.copy()
kvps['1'] = 5
sum = kvps['1'] + theCopy['1']
print sum# object.copy()和copy.copy(object)一样是浅拷贝,深拷贝只有copy.deepcopy(object)# 在 Python2 和 Python3 中,copy() 方法的意义相同,均为返回一个浅复制的 dict 对象,而浅复制是指只拷贝父对象,不会拷贝对象的内部的子对象,即两个 dict 父对象 kvps 与 theCopy 相互独立,但对它们内部子对象的引用却是共享的,所以 kvps['1'] 的改变不影响 theCopy['1'] 的值(因为改变的是父对象的值)。顺便一提,深复制是指完全拷贝父对象与子对象,即都相互独立。注意,这里的子对象不是子类的对象,而是在父对象中的二级对象。


4、What gets printed?   4  counter = 1
def doLotsOfStuff():global counterfor i in (1, 2, 3):counter += 1
doLotsOfStuff()
print(counter)# 当内部作用域想修改外部变量时,需要使用global声明。
# 考察 global 的意义,即在局部作用域 doLotsOfStuff() 函数中,声明对全局作用域中的 counter 变量的引用。
在变量前加global代表修改的是全局变量, 原counter=1,三次循环+1故=4, 函数执行完,全局变量被修改=4
5、有如下函数定义,执行结果正确的是?   foo(3)=18;foo(2)=12def dec(f):n = 3def wrapper(*args,**kw):return f(*args,**kw) * nreturn wrapper@dec                # 先执行dec,将 @dec 下面的 函数 作为dec()的参数
def foo(n):return n * 2
foo(2)解析:
装饰器(Decorator)本身是一个函数,目的是在不改变待装饰函数代码的情况下,增加额外的功能,装饰器的返回值是已装饰的函数对象。以foo(2)语句为例,上述代码等价于:
def dec(f):n = 3def wrapper(*args,**kw):return f(*args,**kw) * nreturn wrapperdef foo(n):return n * 2foo=dec(foo)
foo(2)由此可见,@dec的作用是把原foo函数(待装饰函数)赋值给dec函数(装饰器),然后将返回值wrapper函数(已装饰函数)重新赋值给foo函数。因此,foo(2)语句实际执行情况是:
def wrapper (2):return foo(2) * 3
注:以上代码是为了方便理解,直接将实参n=2代入函数定义中,语法上并无实际意义。
显然,用数学符号表示的话,函数执行结果为foo(2)= wrapper(2)= foo(2)*3= 2*2*3=12,其中前面的foo函数是已装饰函数,后面的foo函数是原来的待装饰函数。By the way,函数参数中的*args代表可变参数,**kw代表关键字参数。@dec 装饰器,先执行dec(), 并将 @dec 下面的 函数 作为dec()的参数。 (装饰器的作用:为已经存在的对象添加额外的功能)
foo(n) = n * 2 * 3foo(2) == (2*2)*3 == 12
foo(3) == (3*2)*3 == 18
6、下列Python语句正确的是:DA、min = x  if  x < y   = y
B、max = x > y ? x : y
C、if (x > y)        print x
D、while True : passA、三元运算符的使用。基本语法为:a if condition else b
上述语句当 condition 为真时等于 a,为假时等于 b。因此 A 选项改为下列语句则正确:min = x if x<y else yB、还是三元运算符的使用,只不过 B 选项的用法在 C、Java 等语言中成立,在 Python 中没有此用法,正确用法参见选项 A。C、if 语句缺少冒号,并且正确用法如下:if (x>y): print x
D、while 语句与 pass 语句的使用。pass语句为空语句,意义只是为了保持程序结构的完整性。该选项写法正确,故选 D。
7、下列表达式的值为True的是:CA、5+4j > 2-3j
B、3>2>2
C、(3,2)< ('a','b')
D、’abc’ > ‘xyz’选项 A:Python2 与 Python3 均不支持复数比较大小;
ASCII码中小写字母>大写字母>数字
字母:
A-Z:65-90
a-z:97-1221、复数是不可以比较大小的。
2、元组是可以比较大小的。tuple 的比较是从两者的第一个元素的 ASCII 码开始,直至两个元素不相等为止,若前面元素都相等,则元素个数多的 tuple 较大。
3、字符串是可以比较大小的。字符串的比较是从两者的第一个字符的ASCII码开始,直至两个元素不相等为止,若前面字符都相等,则字符个数多的字符串较大。
字母与数字的ASCII 码大小范围是 "a-z" > "A-Z" > "0-9"
8、有一段python的编码程序如下:urllib.quote(line.decode("gbk").encode("utf-16")),请问经过该编码的字符串的解码顺序是(D)
A、gbk        utf16      url解码
B、gbk        url解码     utf16
C、url解码     gbk        utf16
D、url解码     utf16      gbk解析:
字符串编译的过程:gbk==>unicode==>utf16==>url解码
字符串解码顺序为:url解码==>utf16==>unicode==>gbk
9、Python中函数是对象,描述正确的是? (ABCD)
A、函数可以赋值给一个变量
B、函数可以作为元素添加到集合对象中
C、函数可以作为参数值传递给其它函数
D、函数可以当做函数的返回值解析:在 Python 中万物皆为对象,函数也不例外,函数作为对象可以赋值给一个变量、可以作为元素添加到集合对象中、可作为参数值传递给其它函数,还可以当做函数的返回值,这些特性就是第一类对象所特有的。
10、Python中单下划线_foo与双下划线__foo与__foo__的成员,下列说法正确的是?(ABC)A、_foo 不能直接用于’from module import *’
B、__foo解析器用_classname__foo来代替这个名字,以区别和其他类相同的命名
C、__foo__代表python里特殊方法专用的标识
D、__foo 可以直接用于’from module import *’_xxx 不能用’from module import *’导入  (相当于protected)
__xxx__ 系统定义名字   (系统内置的,比如关键字)
__xxx 类中的私有变量名  (privated),所以更加不能使用from module import进行导入了链接:https://www.nowcoder.com/questionTerminal/1c4b55a530ee499c986efe82c173b645
来源:牛客网python中主要存在四种命名方式:
1、object #公用方法
2、_object #半保护#被看作是“protect”,意思是只有类对象和子类对象自己能访问到这些变量,在模块或类外不可以使用,不能用’from module import *’导入。#__object 是为了避免与子类的方法名称冲突, 对于该标识符描述的方法,父类的方法不能轻易地被子类的方法覆盖,他们的名字实际上是_classname__methodname。
3、_ _ object    #全私有,全保护#私有成员“private”,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据,不能用’from module import *’导入。
4、_ _ object_ _     #内建方法,用户不要这样定义

Python刷题-5相关推荐

  1. python刷题软件代码_Python使用docx模块实现刷题功能代码

    起由: 前一阵子想要刷一刷国二Python的题库,千方百计找到题库之后,打开一个个word文档,发现一题一题阅读很麻烦,而且答案就在题目的下面,阅读题目的时候想自己做出题目却又总能不经意看到答案,甚烦 ...

  2. Python 刷题常用语法与数据结构汇总-2022.01.30

    [笔试]python刷题笔记(基础)! https://blog.csdn.net/a_123456598/article/details/105420802 python语法刷题 https://b ...

  3. python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等

    NOI题库 python题解-2022.01.07整理(1.1-1.3) NOI题库 python题解-2022.01.07整理(1.1-1.3)_dllglvzhenfeng的博客-CSDN博客 N ...

  4. 【Python刷题篇】Python从0到入门3|循环、条件复习、元组入门、字典入门

    Python从0到入门3目录 前言 Q1:团队分组 Q2:禁止重复注册 Q3:元组-牛客运动会 Q4:字典-遍历字典 Q5:字典-毕业生就业调查 Q6:姓名与学号 总结 前言 - 本期是Python从 ...

  5. 【Python刷题篇】Python从0到入门4|字典复习、函数入门、综合实践

    Python从0到入门3目录 前言 Q1:字典复习-首都 Q2:函数入门-求差 Q3:函数入门-牛牛的朋友 Q4:综合案例:自动售卖饮料机 Q5:综合案例-被8整除的数字 Q6:综合案例-披萨店的订单 ...

  6. python画图、python小游戏、python刷题、python算法、python编程与数学

    python画图系列整理 python画图系列整理-CSDN博客 python游戏入门书籍推荐 python游戏入门书籍推荐_pygame书籍推荐_dllglvzhenfeng的博客-CSDN博客 p ...

  7. Python刷题记录(81-90)

    Python刷题记录(81-90) 题目来源PTA平台 PAT (Basic Level) Practice (中文) @TOC 1081 检查密码 本题要求你帮助某网站的用户注册模块写一个密码合法性 ...

  8. [python刷题模板] 珂朵莉树 ODT (基于支持随机访问的跳表

    [python刷题模板] 珂朵莉树 ODT (基于支持随机访问的跳表) 一. 算法&数据结构 1. 描述 2. 复杂度分析 3. 常见应用 4. 常用优化 二. 模板代码 0. 区间推平(lg ...

  9. [python刷题模板] 珂朵莉树 ODT(20220928弃用,请看新文)

    [python刷题模板] 珂朵莉树 ODT (基于SortedList 20220928弃用,请看新文) 一. 算法&数据结构 1. 描述 2. 复杂度分析 3. 常见应用 4. 常用优化 二 ...

  10. 二级python 刷题就能过吗_Python 刷题笔记:这很不python,官方大大能改下吗?

    惊讶:数值相等的整数或浮点数作为dict 字典的键将指向同一项?! 1.刷题遇到知识盲区 今天继续在 xue.cn 刷题,意外发现:整数和浮点数先后设为字典的键,会有奇怪的现象! 题目如下: What ...

最新文章

  1. WPF - Group分组对ListBox等列表样式的约束
  2. 最小生成树(prim算法)
  3. Oracle Minus关键字 不包含 取差集
  4. JAVA中,目录C:\\TEMP等效于C:\TEMP
  5. WinForm开发(36)——WinForm开发微软官方最全综合详解指南(包括bug出现的可能原因分析及解决方法)
  6. 解决esp8266无法连接手机和电脑热点的问题
  7. vue获取列表中的数量_vue.js中列表里面的子元素怎么获取列表的索引index值
  8. AMD XILINX宣布2023年产品涨价8%
  9. qos cbs_如何取消CBS所有访问订阅
  10. Word文档删除最后一页空白页的超强方法(亲测有效)
  11. JOIN连接:LEFT OUTER JOIN
  12. 混合精度训练、分布式训练等训练加速方法
  13. oracle单实例通过dataguard迁移到RAC 转
  14. tcl c语言笔试题,TCL2014校园招聘笔试真题及答案
  15. 计算机毕业设计java+ssm鲜花销售商城信息网站(源码+系统+mysql数据库+Lw文档)
  16. 圆柱体的投影特点_环形屏幕投影技术的特点和优势
  17. 批量发运确认API wsh_deliveries_pub.delivery_action
  18. moviepy中视频帧大小crop
  19. 初学者的Kubernetes圣经
  20. 【数模美赛】2021-2023年数模“论文手”经验分享

热门文章

  1. 北大OJ(POJ 3237)鸡兔同笼
  2. SQL必知必会-更新和删除数据
  3. php 修改input内容,JS简单获取并修改input文本框内容的方法示例
  4. openmv 神经网络 超出内存_【openmv】openmv各种bug问题记录
  5. MLOG_CHECKPOINT缺失下紧急数据恢复
  6. 相约金陵丨7月9日,云和恩墨大讲堂 · 南京站邀您共论数字化转型实践
  7. 圆你国产数据库DBA之梦,达梦DCA培训考试券免费拿
  8. MySQL 每秒 570000 的写入,如何实现?
  9. CANN AICPU算子耗时分析及优化探索
  10. 云小课 | 不了解EIP带宽计费规则?看这里!