python(面试题整理)

Python基础知识

1、python中is和==的区别

Python中对象包含的三个基本要素,分别是:id(身份标识)type(数据类型)和value()。
‘==’比较的是value值
‘is’比较的是id

2、简述read、readline、readlines的区别

read读取整个文件
readline读取下一行数据
readlines读取整个文件到一个迭代器以供我们遍历(读取 到一个list中,以供使用,比较方便)

3、举例说明创建字典的至少两种方法

1、传统的文字表达式:

>>> d={
   'name':'Allen','age':21,'gender':'male'}
>>> d
{
   'age': 21, 'name': 'Allen', 'gender': 'male'}
 

如果你可以事先拼出整个字典,这种方式是很方便的。

2、动态分配键值:

>>> d={
   }
>>> d['name']='Allen'
>>> d['age']=21
>>> d['gender']='male'
>>> d
{
   'age': 21, 'name': 'Allen', 'gender': 'male'}
 

如果你需要一次动态地建立一个字典的一个字段,那么这种方式比较合适。

字典与列表不同,不能通过偏移量进行复制,只能通过键来读取或赋值,所以也可以这样为字典赋值,当然访问不存在的键会报错:

>>> d[1]='abcd'
>>> d
{
   1: 'abcd', 'age': 21, 'name': 'Allen', 'gender': 'male'}
>>> d[2]
Traceback (most recent call last):
 File "<pyshell#9>", line 1, in <module>
  d[2]
KeyError: 2
 

3、字典键值表

>>> c = dict(name='Allen', age=14, gender='male')
>>> c
{
   'gender': 'male', 'name': 'Allen', 'age': 14}
 

因为这种形式语法简单,不易出错,所以非常流行。

这种形式所需的代码比常量少,但是键必须都是字符串才行,所以下列代码会报错:

>>> c = dict(name='Allen', age=14, gender='male', 1='abcd')
SyntaxError: keyword can't be an expression
 

4、字典键值元组表
 
>>> e=dict([('name','Allen'),('age',21),('gender','male')])
>>> e
{
   'age': 21, 'name': 'Allen', 'gender': 'male'}
 

如果你需要在程序运行时把键和值逐步建成序列,那么这种方式比较有用。

5、所有键的值都相同或者赋予初始值:
 
>>> f=dict.fromkeys(['height','weight'],'normal')
>>> f
{
   'weight': 'normal', 'height': 'normal'}
 

4、*args,**kwargs的作用是什么?如何使用?

*args和**kwargs通常使用在函数定义里,
*args允许函数传入不定量个数的非关键字参数,
**kwargs允许函数传入不定量个数的关键字参数

5、python中match()和search()的区别?

match() 函数只检测RE是不是在string的开始位置匹配,search() 会扫描整个string查找匹配, 也就是说match() 只有在0位置匹配成功的话才有返回,如果不是开始位置匹配成功的话,match() 就返回none

6、描述yield作用

保存当前运行状态(断点),然后暂停执行,即将函数挂起
将yield关键字后面表达式的值作为返回值返回,此时可以理解为起到了return的作用,当使用next()、send()函数让函数从断点处继续执行,即唤醒函数。

7、装饰器

装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能,装饰器的返回值也是一个函数对象。

功能:
	1.引入日志;
	2.函数执行时间统计;
    3.执行函数前预备处理;
    4.执行函数后清理功能;
    5.权限校验;
    6.缓存

8、你对多线程和多进程的理解。

进程是系统进行资源分配和调度的一个独立单位,线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源;
一个程序至少有一个进程,一个进程至少有一个线程;
线程的划分尺度小于进程(资源比进程少),使得多线程程序的并发性高;
进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率 ;
多线程不能够独立执行,必须依存在进程中;
优缺点:线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正相反。

9、线程中start方法和run方法的区别?

若调用start,则先执行主进程,后执行子进程;
若调用run,相当于正常的函数调用,将按照程序的顺序执行

10、python是怎么进行内存管理的?

引用计数:python内部使用引用计数,来保持追踪内存中的对象,Python内部记录了对象有多少个引用,即引用计数,当对象被创建时就创建了一个引用计数,当对象不再需要时,这个对象的引用计数为0时,它被垃圾回收。
引用计数加
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值