#错题知识点解析笔记
1、__name__是python的一个内置类属性,它存储模块的名称。
python的模块既可以被调用,也可以独立运行。而被调用时__name__存储的是py文件名(模块名称),独立运行时存储的是"main"。
那么它的作用主要就是用来区分,当前模块是独立运行还是被调用。
通常的应用场景为:自己需要测试的时候会print一些东西,在print上加上一句 if name ==‘main’:就可以避免别人在调用的时候打印出自己的测试内容。
2、在 Python 中,pass 是一个空语句,为了保持程序结构的完整性。一般情况下,pass 不做任何事情,被用作占位符。
它的作用如下:
- 空语句 do nothing
- 保证格式完整
- 保证语义完整
pass语法格式:pass
如果写了一个循环或者函数,尚未实现(暂未想好如何实现或者交付给其他人),但是会在将来的某个时候实现。这时,如果循环体或者函数体为空,解释器就会报错。此时,可以使用 pass 语句构造一个不做任何事情的主体。
pass 和注释之间的区别在于:解释器会完全忽略注释,但不会忽略 pass。然而,执行 pass 时什么都不会发生,导致无操作(NOP)。
python中跳出循环的关键词为 break
3、nums = set([1,2,2,3,3,3,4])
print len(nums)
set方法是移除重复数据 也就是去重 去重之后 就是[1,2,3,4] len也就是等于4
4、class Rect:
def init(self,width,height):
self.width = width
self.height = height
@property
def area(self):
return self.height* self.width
rect = Rect(10,20)
rect.area()
B
a = 0
def fun():
a += 1
print(a)
fun()
C
class Animal:
def init(self,color=“白色”):
Animal.color = color
def get_color(self):
print(“Animal的颜色为”,Animal.color)
class Cat(Animal):
def init(self):
pass
cat = Cat()
cat.get_color()
D
class Cat:
def init(self,color=“白色”):
self.__color = color
cat = Cat(“绿色”)
print(cat._Cat__color)
正确答案:D
你的答案:B
官方解析:
A选项,使用property会将方法转为属性,因此rect.area()应该改为rect.area。B选项,当给作用域中的一个变量赋值时,Python 会自动的把它当做是当前作用域的局部变量,从而会隐藏外部作用域中的同名变量,因此a += 1会报错。C选项,子类若有定义__init__()函数时,将不会自动继承父类的构造函数,因此在调用父类的get_color()函数时,会出现Animal找不到属性color,修改时只需在子类的__init__()函数中添加语句:super().init()。D选项,尽管color属性为私有属性,但是在类外部使用时,仍可以通过实例名._类名__xxx来访问。
2023.6.24
5、题目:
strs = [‘a’, ‘ab’, ‘abc’, ‘python’]
y = filter(lambda s: len(s) > 2, strs)
tmp = list(map(lambda s: s.upper(), y))
print(tmp)
其中filter方法为过滤序列中符合条件的元素
map函数为它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。
上述y为选取strs中单词长度超过2的,得到的结果是[ ‘abc’, 'python]。
upper函数为将字母小写变大写
所以答案是[‘ABC’, ‘PYTHON’]
6、题目
执行下列程序,输出结果为()
def fun(a,*,b):
print(b)
fun(1,2,3,4)
官方解析:
当函数的的形参单独为*时,它并不属于未匹配的位置参数,而是表示后面的参数必须使用关键字参数进行匹配,所以这里会抛出异常。
7、list = [‘1’, ‘2’, ‘3’, ‘4’, ‘5’]
print list[10:]
解析:关于切片 而在step<0时,参数1一定大于参数2(右边的下标一定大于左边),否则就会得到空列表。
比如,t[0:3:2]和t[3:0:-2]都是合法的,而t[3:0:2]和t[0:3:-2]都是非法的,会输出空列表。所以此题结果是空列表
8、链接:https://www.nowcoder.com/questionTerminal/5ba163c0f27a42f5a20224e673252a34?orderByHotValue=0&mutiTagIds=573_572&page=7
来源:牛客网
b 二进制模式
r 只读,指针将会放在文件的开头
rb 二进制只读,指针将会放在文件的开头
r+ 读写,指针将会放在文件的开头
rb+ 二进制读写,指针将会放在文件的开头
w 写入, 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
wb 二进制写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等
w+ 读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 二进制读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等
a 追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
ab 二进制追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
a+ 读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 二进制读写,如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。