Python基础考试及答案⼀. 选择题(每题1分,共20分)
1. 下列哪个语句在Python中是⾮法的? ( B )
A. x = y = z = 1
B. x = (y = z + 1)
C. x, y = y, x
dubbo3D. x += y
2.关于Python内存管理,下列说法错误的是 ( B )
A. 变量不必事先声明
B. 变量⽆须先创建和赋值⽽直接使⽤
C. 变量⽆须指定类型
D. 可以使⽤del释放资源
3. 在Python3中执⾏如下语句后得到的结果是? ( D )
>>> world="world"
>>> print "hello"+ world
A. helloworld
B. "hello"world
C. hello world
D. 语法错误
4. 下⾯哪个不是Python合法的标识符( B )
A. int32
B. 40XL
C. self
D. name
5. 下列哪种说法是错误的( AD )
A. 除字典类型外,所有标准对象均可以⽤于布尔测试
B. 空字符串的布尔值是False
C. 空列表对象的布尔值是False
D. 值为0的任何数字对象的布尔值是False
6. 下列表达式的值为True的是 ( A )
A. 5+4j > 2-3j
B. 3>2>2
C. (3,2)< (‘a’,‘b’)
D. ‘abc’>‘xyz’
7. Python不⽀持的数据类型是 ( A )
A. char
B. int
C. float
D. list
8. type(1+2L*3.14)结果是: ( C )
A. <type ‘int’>
B. <type ‘long’>
C. <type ‘float’>
D. <type ‘str’>
9. 关于字符串下列说法错误的是 ( B )
A. 字符应该视为长度为1的字符串
B. 字符串以\0标志字符串的结束
C. 既可以⽤单引号,也可以⽤双引号创建字符串
D. 在三引号字符串中可以包含换⾏回车等特殊字符
10. 以下不能创建⼀个字典的语句是 ( C )
A. dict1 = {}
B. dict2 = { 3 : 5 }
C. dict3 = dict( [2 , 5] ,[ 3 , 4 ] )
D. dict4 = dict( ( [1,2],[3,4] ) )
11. 下⾯不能创建⼀个集合的语句是 ( C )
A. s1 = set ()
B. s2 = set (“abcd”)
C. s3 = (1, 2, 3, 4)
D. s4 = frozenset( (3,2,1) )
12. 下列Python语句正确的是 ( D )
A. min = x if x < y else y
B. max = x > y ? x : y
C. if (x > y) print x
D. while True : pass
C. if (x > y) print x
D. while True : pass
13. 以下哪个为创建分配内存的⽅法 ( AB )
A. new ()
B. init()
C. del()
D. 没有正确答案
14. 以下哪个对象不属于Itarable 的 ( D )
A. list
B. tuple
C. dict
D. float
15. 关于创建进程的⽅式,说法错误的是 (D )
A. fork
B. Process
C. Process的⼦类
D. 都不对
16. 关于类型转换,说法错误的有(多选) ( C )
A. int <-> float
B. tuple <-> list
C. list<-> dict
D. str <-> list
17. 以下哪个类型不可以进⾏切⽚操作 ( D )
A. str
B. list
C. tuple
D. dict
18. 以下哪个属于可变对象 ( B )
A. 数值类型(int,float)
B. list
C. tuple
D. str
19. 实现以下哪个⽅法可以让对象像函数⼀样被调⽤ ( C )
A. str()
B. iter()
C. call()
D. next()
外企pipeline是什么意思啊20. 以下哪个不属于⾯向对象的特征 ( D )
A. 封装
B. 继承
C. 多态
D. 复合
⼆. 简答题(每题5分,共40分)
**
1. 请简述你对⾯向对象的理解
**
⾯向对象的编程—object oriented programming,简称:OOP,是⼀种编程的思想。OOP把对象当成
⼀个程序的基本单元,⼀个对象包含了数据和操作数据的函数。⾯向对象的出现极⼤的提⾼了编程的效率,使其编程的重⽤性增⾼。
python⾯向对象的重要术语:
1.多态(polymorphism):⼀个函数有多种表现形式,调⽤⼀个⽅法有多种形式,但是表现出的⽅法是不⼀样的。
2.继承(inheritance)⼦项继承⽗项的某些功能,在程序中表现某种联系
3.封装(encapsulation)把需要重⽤的函数或者功能封装,⽅便其他程序直接调⽤
4.类:对具有相同数据或者⽅法的⼀组对象的集合
5.对象:对象是⼀个类的具体事例
**
2. 简述什么是深拷贝和浅拷贝
**
浅拷贝:
对内存地址的复制,让⽬标对象指针和源对象指向同⼀⽚内存空间。注意:当内存销毁的时候,指向对象的指针,必须重新定义,才能够使⽤
深拷贝:深拷贝是指,拷贝对象的具体内容,⼆内存地址是⾃主分配的,拷贝结束之后俩个对象虽然存的值是⼀样的,但是内存地址不⼀样,俩个对象页互相不影响,互不⼲涉
**
3. 请简述Python中的内存管理机制
**
Python使⽤gc模块处理python对象以及python垃圾回收器的⼯作
gc.disable()——不可⾃动进⾏垃圾回收;
gc.set_threshold()——设置python垃圾回收的阈值;
gc.set_debug()——设置垃圾回收的调试标记,调试信息会被写⼊;
<_objects()——返回收集器跟踪的所有对象的列表,不包括返回的列表。
Python的内存管理机制主要包括三个⽅⾯:引⽤计数机制、垃圾回收机制、内存池机制
**
4. 请写出创建⽣成器的⽅式(最好⽤代码)
**
⽅式⼀: 将列表⽣成式的中括号改成⼩括号
列表⽣成式 a = [x*2 for x in range(100000000000)]
⽣成器 a = (x*2 for x in range(100000000000))
调⽤的时候 next(a)
def creatnum():
a,b =0,1
for i in range(5):
yield b
a,b = b,a+b
**
5. 请简述dict的特性
**
字典中key的值不可改变,value的值可以改变;
获取网站源码工具由于字典保存数据使⽤的是Hash存储⽅式 故字典⽆法使⽤切⽚⽅式
**
6. 请简述4G的内存如何做到可以读取5G的数据
**
#1 使⽤python的⽣成器,⼀⼩段⼀⼩段数据读取
# ⽣成器:具有yield的函数就是⽣成器,是⼀个可以返回迭代器的函数
# 迭代器:知道遍历位置的对象,有iter()和next()⽅法
# 代码举例:
def get_lines():# ⽣成器
with open('file5G.py','r')as f:
while True:
data = f.readlines(100)
if data:
yield data
else:
break
f = get_lines()# 迭代器对象
print(next(f))
print(next(f))
print(next(f))
#2 Linux的split命令
# 可以把⽂件拆成⼀个个⼩⽂件进⾏操作
# 作⽤:split将⼀个⽂件分割成⼀个个指定⼤⼩的⽂件
# 使⽤语法: split [–help][–version][-<⾏数>][-b <;字节>][-C <;字节>][-l <⾏数>][要切割的⽂件][输出⽂件名]
# 常⽤的选项是-b按照字节切割,-l按照⾏数切割
# 在⿊窗⼝中输⼊命令,使⽤举例:
python@ubuntu:~/Desktop$ split -l re.txt
# 意思:按照两⾏切割⽂件,切割后的⽂件名叫re.txt。
# 回车后会⽣成好多re⽂件,⾥⾯都是两⾏代码
**
7. 简述read. readline. readlines的区别
**
read:读取整个⽂件
read([size])⽅法从⽂件当前位置起读取size个字节,若⽆参数size,则表⽰读取⾄⽂件结束为⽌,它范围为字符串对象
f =open("a.txt")
lines = f.read()
print(lines)
print(type(lines))
f.close()
输出结果:
Hello
Welcome
What is
<type 'str'>#字符串类型
readline:读取下⼀⾏,使⽤⽣成器⽅法。**
从字⾯意思可以看出,该⽅法每次读出⼀⾏内容,所以,读取时占⽤内存⼩,⽐较适合⼤⽂件,该⽅法返回⼀个字符串对象。
def pyReadLine(filename):
file_object1 =open('a.txt','r')
try:
while True:
line = adline()
if line:
navicat16破解print("line=",line)
else:
break
finally:
file_object1.close()
输出结果:
<type'str'>
python基础知识测试Hello
Welcome
What is
readlines:读取整个⽂件到⼀个迭代器以供我们遍历
readlines()⽅法读取整个⽂件所有⾏,保存在⼀个列表(list)变量中,每⾏作为⼀个元素,但读取⼤⽂件会⽐较占内存。
f =open("a.txt")
lines = f.readlines()
print(type(lines))
网页设计模板for line in lines:
print(line)
f.close()
输出结果:
<type 'list'>
Hello
Welcome
What is
**
8. 简述实例属性与类属性的区别以及实例⽅法与类⽅法,静态⽅法的区别
**
类属性和实例属性的区别
在Python中⼀切皆对象,类是⼀个特殊的对象即类对象,描述类的属性称为类属性,它属于类。类属性在内存中只有⼀份,所有实例对象公⽤,在__init__外部定义。
实例属性:⽤来描述类创建出来的实例对象,需要通过对象来访问,在各⾃对象的内存中都保存⼀份,在__init__⽅法内部定义
实例⽅法、类⽅法、静态⽅法的区别
这三种⽅法都是保存在类的内存中,调⽤者不同。
实例⽅法由对象调⽤,⾄少⼀个self参数,self代表对象的引⽤。
类⽅法由类调⽤,⾄少⼀个cls参数,并且需要装饰器@classmethod修饰
静态⽅法由类调⽤,不需要参数,需要装饰器@staticmethod修饰
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论