题目和答案来源于互联网
1.python的特点和优点是什么?
python是一种变成的入门语言,具备一下优点:
解释性、动态特性、面向对象、语法简洁、开源、丰富的社区资源
延伸问题:
解释性如何理解:解释器不产生目标机器代码,而是产生中间代码,硬件看不懂中间代码。解释型代码是将源代码逐一解释成可执行的机器指令,因为效率低下;
Python 是怎么实现动态类型的呢?
答案就藏在具体存储的对象上。变量 a 仅仅只是一个符号(实际上是一个字符串对象),类型信息是存储在对象上的。在 Python 中,对象机制的核心是类型信息和引用计数(引用计数属于垃圾回收的部分)
2.pyc的作用?
一个 pyc 文件包含了三部分信息:Python 的 magic number、pyc 文件创建的时间信息,以及 PyCodeObject 对象。
magic number 是 Python 定义的一个整数值。一般来说,不同版本的 Python 实现都会定义不同的 magic number,这个值是用来保证 Python 兼容性的。比如要限制由低版本编译的 pyc 文件不能让高版本的 Python 程序来执行,只需要检查 magic number 不同就可以了。由于不同版本的 Python 定义的字节码指令可能会不同,如果不做检查,执行的时候就可能出错
3.深拷贝和浅拷贝对的区别是什么?
深拷贝是将对象本身复制给另外一个对象。这就意味这如果对对象的副本进行更改是不会影响愿对象,在Python中。我们使用deepcopy()函数进行神拷贝。
浅拷贝是将对象引用复制给另外一个对象,因此,如果我们在副本中进行修改,则会影响原对象。使用copy函数进行浅拷贝。
4.列表和元祖有什么不同?
区别:列表是可变的,元祖是不可变的
5.解释python中的三元表达式
[on true] if [expression]else [on false]
如果 [expression] 为真, 则 [on true] 部分被执行。如果表示为假则 [on false] 部分被执行
6.python中如何实现多线程?
线程某种意义上来说是轻量级的进程,多线程允许一次只想多个进程,python是一个多线程语言。
GIL(全局解释器锁)确保一次执行单个线程,一个线程保存GIL并在将其传递给下一个线程之前执行一些操作,这就产生了并行执行的错觉,但实际上,只是线程轮流在cpu上执行,当然,所有传递都会增加执行的开销。
7.解释继承
一个类继承自另一个类,也可以说是一个子类/派生类,继承自父类/基类/超类。同时获取所有的类成员、属性和方法。
继承使我们可以重用代码,并且还可以更方便的创建和维护代码,python支持以下类型的继承:
1.单继承-一个子类继承自单个基类
2.多重继承-一个子类继承自多个基类
3.多级继承:一个子类继承自一个基类,而基类继承自另一个基类
4.分层继承:多个子类继承自同一个基类
5.混合继承-两种或两种以上继承类型的组合
8.什么使Flask
falsk是一种使用python编写的轻量级web应用框架,使用bsd授权,其wsgi工具箱采用Werkzeug,模版引擎则使用jinja2,除了Werkzeug和jinja2以外几乎不依赖任何外部库。因此Flask被称为轻量级框架。
Flask的会话使用签名cookie来允许用户查看和修改会话内容,他会记录从一个请求到另一个请求的信息。但如果要修改会话的话。则必须有密钥Flask.secret_key。
9.如何在python中管理内存
python用一个私有堆内存空间来放置所有对象和数据结构,我们无法访问它,由解释器来管理她。不过使用一些核心api,我们可以访问一些python内存管理工具来控制内存分配。
10.解释python中的help()函数和dir()函数
help()函数返回帮助文档和参数说明
dir()函数返回对象中的所有成员(任何类型)
11.当退出python时是否释放所有的内存分配?
答案时否定的,那些具有对象循环引用或者全局命名空间引用的变量,在python退出时往往不会被释放,另外也不会释放C库保留的那部分内容
12.什么事python字典
拥有键值对,并且键是唯一的,字典是可变的。
13.解释 *args 和 **kwargs?
如果我们不知道将多少个参数传递给函数,比如当我们想传递一个列表或一个元组值时,就可以使用*args。
当我们不知道将会传入多少关键字参数时,使用**kwargs 会收集关键字参数。
14.什么是负索引?
与正索引不同,负索引是从右边开始检索的,同样也可以用于列表的切片。
15如何随机打乱列表中的元素,要求不引用额外的内存空间?
使用random包中的shuffler()函数来实现。
16.解释python中的join()和split()函数
join()函数可以将指定的字符添加到字符串中。
split()函数可以使用指定的字符分割字符串
17.python是否区分大小写?
区分
18.python中标识符的命名规则?
Python 中的标识符可以是任意长度,但必须遵循以下命名规则:
1. 只能以下划线或者 A-Z/a-z 中的字母开头。
2. 其余部分只能使用 A-Z/a-z/0-9。
3. Python 标识符区分大小写。
4. 关键字不能作为标识符。
19.如何删除字符串中的前置空格
lstrip()
20.字符串大小写转换
lower()函数:转换成小写
upper()函数:转换成大写
要检查字符串是否为全大写或全小写,使用 isupper() 和 islower() 函数
istitle() 可以检查字符串是否是标题格式。
21.python中的pass语句有什么作用?
空余句
22.python中的闭包
如果在一个内部函数里。对在外部作用域(但不是在全局作用域)的变量进行引用,那么内部函数就是一个闭包。
23.解释 Python 中的//,%和**运算符
//运算符执行地板除法,返回结果的整数部分 (向下取整)。
24.如何获取字典中的所有键?
使用 keys() 来获取字典中的所有键
25.问什么标识符不建议使用下划线开头?
因为在 Python 中以下划线开头的变量为私有变量,如果你不想让变量私有,就不要使用下划线开头。