Python 练习题 2019-5-14AM
第一题:解释下列代码运行过程。
a = map(lambda x: x**3, [1, 2, 3])
list(a)
分析:
本题答案为: 1,8,27
map()接收两个参数,一个是功能函数f,
一个list,并将f依次作用在list的每个元素上,
并返回一个新的list,a**b是求a的b次方的意思。
第二题:python中的 == 与 is区别?
分析:
==比较内容是否相等,id不必相等。
is比较id是否相等。
第三题:简介一下,python中的小整数对象池。
分析:
为了优化速度,python把【-5,256】数据,
提前存放在小整数对象池中。
程序如果恰巧使用这些数据,
每次使用系统都会从池中拿数据,
可以节省创建对象的时间耗费。
第四题:python2与python3的range()返回值区别?
分析:
区别在于python2返回值是列表,
python3返回值是可迭代对象。
要想得到列表,
可以使用list()函数把可迭代对象转为列表。
第五题:分析以下函数执行过程: bar(2)(3) == 8
def bar(multiple):
def foo(n):
return multiple ** n
return foo
print bar(2)(3)
分析:
调用一个函数是加一个括号。
如果看见括号后还有一个括号,
说明第一个bar函数返回了一个函数。
bar(2)执行未完成,返回foo函数,
传入参数3,即foo(3)。于是2**2 -> 8
第六题:python赋值表达式返回值是什么?
分析:
python赋值表达式没有返回值,
若在C/C++中,赋值表达式将返回所赋的值。
第七题:python中的set与list区别?
分析:
list是列表,里面元素可重复,
set是集合,里面元素不会重复。
将列表转集合,可以简单使用set(list)。
第八题:python中的%与%%区别?
分析:
% 单列出来就是取模运算符,
%%没有特殊含义仅在输出语句中起到输出一个百分号作用。
第九题:为什么使用%%而不是%来对%进行转义,谈谈你的理解。
分析:
为了使用习惯,这是C语言的使用习惯问题,
因为在C的格式化输出语句中,%后面通常都要接指令,
如%d,如果使用\%格式化输出,会显得比较突兀,
而使用%%会较美观些。
第十题:已有全局变量aa,在函数内部有局部变量aa,
若局部变量使用global修饰,会导致哪些方面不同?
分析:
使用global修饰后aa将变成全局变量。
补充:不适用global,函数内也可以访问全局变量而不去修改它。
第十题:python中的tuple是什么?如何定义?
分析:
tuple中文译为元组,使用括号( )可以用来创建tuple。
tuple与list一样都是有序列表,tuple与list不一样,
tuple一旦初始化就不能再修改。
补充:tuple 中只含一个元素时,需要在元素后加上逗号。
这是为了区别数学公式中的小括号。
第十一题:分析以下函数执行过程:
class Person:
def init(self):
pass
def getAge(self):
print name
p = Person()
p.getAge()
分析:
正确的输出应该为:__main__
1、__name__这个系统变量显示了当前模块执行过程中的名称,
如果当前程序运行在这个模块中,
__name__ 的名称就是__main__
如果不是,则为这个模块的名称。
2、__main__一般作为函数的入口,类似于C语言,
尤其在大型工程中,常常有if __name__ == "__main__":
来表明整个工程开始运行的入口。
第十二题:python中 分片 是什么?如何使用分片?
分析:
序列可以进行分片,分片即从一个大序列中取出一个小序列。
在分片规则里list、tuple、str(字符串)都可以称为序列,
都可以按规则进行切片操作。
简单用法说明:序列[a:b:c],a处填开头,b填结尾,c填步进。
若a、b出现负数,如-2,表示倒数第二个元素。