Python面试真题(1)

【Python面试真题】- 怎么解释继承 ?

一个类继承自另一个类,也可以说是一个孩子类/派生类/子类,继承自父类/基类/超类,同时获取所有的类成员(属性和方法)。

继承使我们可以重用代码,并且还可以更方便地创建和维护代码。Python 支持以下类型的继承:

  1. 单继承- 一个子类类继承自单个基类

  2. 多重继承- 一个子类继承自多个基类

  3. 多级继承- 一个子类继承自一个基类,而基类继承自另一个基类

  4. 分层继承- 多个子类继承自同一个基类

  5. 混合继承- 两种或两种以上继承类型的组合

【Python面试真题】- 介绍一下Python中webbrowser的用法 ?

webbrowser模块提供了一个高级接口来显示基于Web的文档,大部分情况下只需要简单的调用open()方法。
webbrowser定义了如下的异常:
exception webbrowser.Error, 当浏览器控件发生错误是会抛出这个异常
webbrowser有以下方法:
webbrowser.open(url[, new=0[, autoraise=1]])
这个方法是在默认的浏览器中显示url, 如果new = 0, 那么url会在同一个浏览器窗口下打开,如果new = 1, 会打开一个新的窗口,如果new = 2, 会打开一个新的tab, 如果autoraise = true, 窗口会自动增长。
webbrowser.open_new(url)
在默认浏览器中打开一个新的窗口来显示url, 否则,在仅有的浏览器窗口中打开url
webbrowser.open_new_tab(url)
在默认浏览器中当开一个新的tab来显示url, 否则跟open_new()一样
webbrowser.get([name]) 根据name返回一个浏览器对象,如果name为空,则返回默认的浏览器
webbrowser.register(name, construtor[, instance])
注册一个名字为name的浏览器,如果这个浏览器类型被注册就可以用get()方法来获取。

【Python面试真题】- 如何用Python输出一个Fibonacci数列 ?

1 a,b = 0, 1
2 while b<100:
3 print (b),
4 a, b = b, a+b

【Python面试真题】- Python里面如何生成随机数?

import random
random.random()
它会返回一个随机的0和1之间的浮点数

21.如何用Python来发送邮件?

python实现发送和接收邮件功能主要用到poplib和smtplib模块。

poplib用于接收邮件,而smtplib负责发送邮件。

代码如下:

复制代码
1 #! /usr/bin/env python
2 #coding=utf-8
3 import sys
4 import time
5 import poplib
6 import smtplib
7 #邮件发送函数
8 def send_mail():
9 try:
10 handle = smtplib.SMTP(‘smtp.126.com’,25)
11 handle.login(‘XXXX@126.com’,‘’)
12 msg = ‘To: XXXX@qq.com\r\nFrom:XXXX@126.com\r\nSubject:hello\r\n’
13 handle.sendmail(‘XXXX@126.com’,‘XXXX@qq.com’,msg)
14 handle.close()
15 return 1
16 except:
17 return 0
18 #邮件接收函数
19 def accpet_mail():
20 try:
21 p=poplib.POP3(‘pop.126.com’)
22 p.user(‘pythontab@126.com’)
23 p.pass_('
’)
24 ret = p.stat() #返回一个元组:(邮件数,邮件尺寸)
25 #p.retr(‘邮件号码’)方法返回一个元组:(状态信息,邮件,邮件尺寸)
26 except poplib.error_proto,e:
27 print “Login failed:”,e
28 sys.exit(1)
29
30 #运行当前文件时,执行sendmail和accpet_mail函数
31 if name == “main”:
32 send_mail()
33 accpet_mail()

【Python面试真题】- 什么是猴子补丁?
在运行期间动态修改一个类或模块。

class A:
def func(self):
print(“Hi”)

def monkey(self):
print “Hi, monkey”

m.A.func = monkey
a = m.A()
a.func()

运行结果为:
Hi, Monkey

【Python面试真题】- 当退出Python时,是否释放全部内存?
答案是No。循环引用其它对象或引用自全局命名空间的对象的模块,在Python退出时并非完全释放。
另外,也不会释放C库保留的内存部分。

【Python面试真题】- 解释Python中的help()和dir()函数

Help()函数是一个内置函数,用于查看函数或模块用途的详细说明:

import copy
help(copy.copy)

运行结果为:
Help on function copy in module copy:
copy(x)

Shallow copy operation on arbitrary Python objects.

See the module’s doc string for more info.

Dir()函数也是Python内置函数,dir() 函数不带参数时,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属性、方法列表。
以下实例展示了 dir 的使用方法:

dir(copy.copy)

运行结果为:
[‘annotations’, ‘call’, ‘class’, ‘closure’, ‘code’, ‘defaults’, ‘delattr’, ‘dict’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘get’, ‘getattribute’, ‘globals’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘kwdefaults’, ‘le’, ‘lt’, ‘module’, ‘name’, ‘ne’, ‘new’, ‘qualname’, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘setattr’, ‘sizeof’, ‘str’, ‘subclasshook’]

【Python面试真题】- 在Python中是如何管理内存的?

Python有一个私有堆空间来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释器在管理它。但是有了核心API后,我们可以访问一些工具。Python内存管理器控制内存分配。
另外,内置垃圾回收器会回收使用所有的未使用内存,所以使其适用于堆空间。

【Python面试真题】- 什么是Flask?
什么是Flask?
Flask是Python编写的一款轻量级Web应用框架。其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。Flask使用 BSD 授权。其中两个环境依赖是Werkzeug和jinja2,这意味着它不需要依赖外部库。正因如此,我们将其称为轻量级框架。
Flask会话使用签名cookie让用户查看和修改会话内容。它会记录从一个请求到另一个请求的信息。不过,要想修改会话,用户必须有密钥Flask.secret_key。

【Python面试真题】- 在Python中如何实现多线程?
答:一个线程就是一个轻量级进程,多线程能让我们一次执行多个线程。我们都知道,Python是多线程语言,其内置有多线程工具包。
Python中的GIL(全局解释器锁)确保一次执行单个线程。一个线程保存GIL并在将其传递给下个线程之前执行一些操作,这会让我们产生并行运行的错觉。但实际上,只是线程在CPU上轮流运行。当然,所有的传递会增加程序执行的内存压力。

【Python面试真题】- 解释一下Python中的三元运算子?
不像C++,我们在Python中没有?:,但我们有这个:
[on true] if [expression] else [on false]

如果表达式为True,就执行[on true]中的语句。否则,就执行[on false]中的语句。
下面是使用它的方法:

a,b=2,3
min=a if a<b else b
min

运行结果:
2

print(“Hi”) if a<b else print(“Bye”)

运行结果:
Hi

【Python面试真题】- 列表和元组之间的区别是?
答:二者的主要区别是列表是可变的,而元组是不可变的。举个例子,如下所示:

mylist=[1,3,3]
mylist[1]=2
mytuple=(1,3,3)
mytuple[1]=2
Traceback (most recent call last):
File “<pyshell#97>”, line 1, in
mytuple[1]=2

会出现以下报错:
TypeError: ‘tuple’ object does not support item assignment

【Python面试真题】- 深拷贝和浅拷贝之间的区别是什么?

深拷贝就是将一个对象拷贝到另一个对象中,这意味着如果你对一个对象的拷贝做出改变时,不会影响原对象。在Python中,我们使用函数deepcopy()执行深拷贝,导入模块copy,如下所示:

import copy
b=copy.deepcopy(a)

而浅拷贝则是将一个对象的引用拷贝到另一个对象上,所以如果我们在拷贝中改动,会影响到原对象。我们使用函数function()执行浅拷贝,使用如下所示:

b=copy.copy(a)

【Python面试真题】- Python有哪些特点和优点?

可解释
具有动态特性
面向对象
简明简单
开源
具有强大的社区支持
当然,实际上Python的优点远不止如此

【Python面试真题】- 如何分片赋值 ?

name = list(‘Perl’)
name
[‘P’, ‘e’, ‘r’, ‘l’]

name[2:] = list(‘ar’)
name
[‘P’, ‘e’, ‘a’, ‘r’]

【Python面试真题】- 装饰器的作用和功能是什么?

引入日志

函数执行时间统计

执行函数前预备处理

执行函数后的清理功能

权限校验等场景

缓存

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值