1.下面哪个不是合法的Python标识符?
A.int23 B.45UTY C.self D.name
2.在Python3中,下列程序运行结果为:
strs = ['a', 'ab', 'abc', 'python']
y = filter(lambda s: len(s) > 2, strs)
tmp = list(map(lambda s: s.upper(), y))
print(tmp)
A.['ABC', 'PYTHON']
B.['abc', 'PYTHON']
C.['abc', 'python']
D.['a', 'ab']
3.Python函数如下,则输出结果为
def chanageList(nums):
nums.append('c')
print("nums", nums)
str1 = ['a', 'b']
# 调用函数
chanageList(str1)
print("str1", str1)
A.nums ['a', 'b', 'c'],str1 ['a', 'b', 'c']
B.nums ['a', 'b', 'c'],str1 ['a', 'b']
C.nums ['a', 'b'],str1 ['a', 'b']
D.nums ['a', 'b'],str1 ['a', 'b','c']
4.Python2 中,以下不能在list中添加新元素的方法是()
A.append()
B.add()
C.extend()
D.insert()
5.根据以下程序,下列选项中,说法正确的是()
class Foo():
def __init__(self):
pass
def __getitem__(self,pos):
return range(0,30,10)[pos]
foo = Foo()
A.foo对象表现得像个序列
B.可以使用len(foo)来查看对象foo的元素个数
C.可以使用for i in foo:print(i)来遍历foo的元素
D.不能使用foo[0]来访问对象foo的第一个元素
1.答案:B
解析:Python 中的标识符不能以数字开头
注意:self不是python中的关键字。类中参数self也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。
标识符:
- 第一个字符必须是字母表中字母或下划线 _ 。
- 标识符的其他的部分由字母、数字和下划线组成。
- 标识符对大小写敏感。
- 不可以是python中的关键字,如False、True、None、class等。
2.答案:A
解析: filter(lambda
s:
len(s) > 2, strs)即将指定列表strs中长度大于2的字符串过滤出来,即y=["abc","python"]
list(map(lambda s: s.upper(), y))即把y中所有字符串都改为大写,即tmp=['ABC', 'PYTHON']
3.答案:A
解析:Python参数传递采用的是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。如果函数收到的是一个可变对象(比如字典 或者列表)的引用,就能修改对象的原始值——相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(比如数字、字符或者元组)的引用,就不能 直接修改原始对象——相当于通过“传值”来传递对象。此题为列表,可变对象,即相互影响。
def chanageList(nums): # 创建一个带参,且初始参数为nums的函数chanageList
nums.append('c') # 为传入参数末尾添加字符串c
print("nums", nums) # 输出参数名称nums,同时输出参数nums的最终值
str1 = ['a', 'b'] # 创建列表str1,并将字符串a和字符串b添加进列表str1
chanageList(str1) # 调用函数chanageList
print("str1", str1) # 输出列表str1的名称,同时输列表str1的最终值
4.答案:B
解析:
append() 方法向列表的尾部添加一个新的元素。只接受一个参数。
extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表 中。
insert() 将一个元素插入到列表中,但其参数有两个(如insert(1,”g”)),第一个参数是 索引点,即插入的位置,第二个参数是插入的元素。
add()为字典中的添加。
5.答案:C
解析:
若要表现像个序列,必须满足序列的两个方法:__len__和__getitem__,由于Foo类中 没有实现__len__,因此不满足序列协议,foo对象不像序列,A错误;
foo对象没有定义__len__方法,不能使用它来查看对象个数,B错误;
对对象的迭代需要调用__iter__,如果没有定义该方法,python会调用 __getitem__(),让迭代和in运算符可用,因此foo是可迭代的,C正确;
根据索引访问对象元素,会调用__getitem__(),因此D错误。