python初级⾯试问题及答案_附带答案的15道经典python基础
⾯试题
1、 闭包
定义:闭包是由函数及其相关的引⽤环境组合⽽成的实体(即:闭包=函数+引⽤环境)(想想Erlang的外层函数传⼊⼀个参数a, 内层函数依旧传⼊⼀个参数b, 内层函数使⽤a和b, 最后返回内层函数)
代码def ExFunc(n):
sum=n
def InsFunc():
return sum+1
return InsFunc
2、装饰器def debug(func):
def wrapper():
print "[DEBUG]: enter {}()".format(func.name)
return func()
return wrapper
@debug
def say_hello():
print "hello!"
3、迭代器
1、可以直接作⽤于for循环的数据类型
第⼀类:集合数据类型,如list、tuple、dict、set、str等;
第⼆类:generator,包括集合定义generator和带yield的generator(也就是generator function)。
以上这些可以直接作⽤于for循环的对象统称为可迭代对象:Iterable。
可以使⽤isinstance()判断⼀个对象是否是Iterable对象:
generator不但可以作⽤于for循环,还可以被next()函数不断调⽤并返回下⼀个值,直到最后抛出StopIteration错误表⽰⽆法继续返回下⼀个值了。那么定义来了,可以被next()调⽤并不断返回下⼀个值得对象称为迭代器(Iterator)
把list、dict、str等Iterable变成Iterator可以使⽤iter()函数
4、⽣成器
为什么使⽤⽣成式:
更容易使⽤,代码量较⼩内存使⽤更加⾼效
5、描述器
描述器的表现
⽤到三个魔术⽅法。get() set() delete()
⽅法签名如下:
<(self,instance,owner)
object.set(self,instance,value)
object.delete(self,instance)
Self指指代当前实例,调⽤者。
Instance是owner的实例。
column公式Owner是属性所属的类。
典型的描述器:@Property
作⽤:访问类和实例的属性
6、内置模块
re(正则)、math(数学)、os(系统)、datetime、sys、json
sys:
sys.argv
功能:在外部向程序内部传递参数
功能:执⾏到主程序末尾,解释器⾃动退出,但是如果需要中途退出程序,可以调⽤it函数,带有⼀个可选的整数参数返回给调⽤它的程序,表⽰你可以在主程序中捕获对it的调⽤。(0是正常退出,其他为异常)
sys.path
功能:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确到。
功能:dules是⼀个全局字典,该字典是python启动后就加载在内存中。每当程序员导⼊新的模块,dules将⾃动记录该模块。当第⼆次再导⼊该模块时,python会直接到字典中查,从⽽加快了程序运⾏的速度。它拥有字典所拥有的⼀切⽅法。
7、列表的⽤法
函数⽤法:
cmp :⽐较两个列表的元素
len :列表元素个数
max :返回列表元素最⼤值
min :返回列表元素最⼩值
list :将元组转化为列表
⽅法:List.append() 在列表末尾添加新对象
List.index() 从列表中出某个值第⼀个匹配项的索引位置
List.insert() 将对象插⼊列表
List.pop() 移除列表中的⼀个元素(默认最后⼀个元素),并且返回该元素的值
List.sort() 对原列表进⾏排序 reverse=False(默认升序)
join() 将列表转化为字符串
8、字符串⽤法
帝国网站管理系统 支付接口内建函数:Capitalize() 字符串第⼀个⼤写
Center() 返回⼀个原字符串居中,并使⽤空格填充⾄长度 width 的新字符串
Count(str,beg=0,end=len(string)) 返回 str 在 string ⾥⾯出现的次数,如果 beg 或者 end 指定则返回指定范围内str
出现的次数
decode(encoding=’utf-8’) 以 encoding 指定的编码格式解码 string,如果出错默认报⼀个 ValueError 的 异 常 , 除⾮
errors 指 定 的 是 'ignore' 或 者'replace'
encode(encoding=’utf-8’) 以 encoding 指定的编码格式编码 string,如果出错默认报⼀个ValueError 的异常,除⾮errors
指定的是'ignore'或者'replace'
endswith(obj,beg=0,end=len(string)) 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,
如果是,返回 True,否则返回 False.
expandtabs(tabsize=8) 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8。
Format() 格式化字符串
Index() 跟find()⽅法⼀样,只不过如果str不在 string中会报⼀个异常
Isalnum() 如果 string ⾄少有⼀个字符并且所有字符都是字母或数字则返回 True,否则返回 False
Isalpha() 如果 string ⾄少有⼀个字符并且所有字符都是字母则返回 True,否则返回 False
Isdigit() 如果 string 只包含数字则返回 True 否则返回 False.
Lstrip() 截掉 string 左边的空格
Replace(str1,str2,unt(str1) 把 string 中的 str1 替换成 str2,如果 num 指定,则替换不超过 num 次
Rstrip() 删除 string 字符串末尾的空格.
python基础代码实例Split(str=’’,unt(str)) 以 str 为分隔符切⽚ string,如果 num 有指定值,则仅分隔 num+ 个⼦字符串
Strip() 在 string 上执⾏ lstrip()和 rstrip()
9、HTTP/HTTPS协议
HTTP:是互联⽹上应⽤最为⼴泛的⼀种⽹络协议,是⼀个客户端和服务器端请求和应答的标准(TCP),
⽤于从WWW服务器传输超⽂本到本地浏览器的传输协议,它可以使浏览器更加⾼效,使⽹络传输减少。
HTTPS:是以安全为⽬标的HTTP通道,简单讲是HTTP的安全版,即HTTP下加⼊SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。
HTTPS协议的主要作⽤可以分为两种:⼀种是建⽴⼀个信息安全通道,来保证数据传输的安全;另⼀种就是确认⽹站的真实性。
区别
1、https协议需要到ca申请证书,⼀般免费证书较少,因⽽需要⼀定费⽤。
2、http是超⽂本传输协议,信息是明⽂传输,https则是具有安全性的ssl加密传输协议。
3、http和https使⽤的是完全不同的连接⽅式,⽤的端⼝也不⼀样,前者是80,后者是443。
4、http的连接很简单,是⽆状态的;HTTPS协议是由SSL+HTTP协议构建的可进⾏加密传输、⾝份认证的⽹络协议,⽐http协议安全。
10、⾼阶函数
Map()、filter()、zip()、reduce()、sorted()、lambda函数
11、深/浅拷贝
浅拷贝:拷贝表⾯层,更深的层次引⽤原来地址的
深拷贝:拷贝所有,内存中开辟新地址
12、⾯向对象编程(OOP)
类是描述具有相同属性和⽅法的对象的集合,Python中定义类使⽤class关键字,类的实例叫做对象,类中定义的函数叫做⽅法。
sqlite图形化13、元类
所有类的⽗类,定义的新类可以看成元类的实例
14、正则
功能函数:compile() 编译正则表达式模式,返回⼀个对象的模式
match() 只匹配字符串的开始,如果开始不匹配,函数返回None
js匹配正则表达式search() 在整个字符串中寻,到返回,匹配不成功返回None
findall() 遍历匹配,可以获取字符串中所有匹配的字符串,返回⼀个列表
finditer() 搜索string,返回⼀个顺序访问每⼀个匹配结果(Match对象)的迭代器。到 RE 匹配的所有⼦串,并把它们作为⼀个迭
代器返回
贪婪匹配和费贪婪匹配
前⾯的*,+,?等都是贪婪匹配,也就是尽可能匹配,后⾯加?号使其变成惰性匹配
逃离塔科夫配置数据加载中\d 数字:[0-9]
\D ⾮数字:[^\d]
\s 匹配任何空⽩字符:[\t\r\n\f\v]
\S ⾮空⽩字符:[^\s]
\w 匹配包括下划线在内的任何字字符:[A-Za-z0-9_]
\W 匹配⾮字母字符,即匹配特殊字符
\A 仅匹配字符串开头,同^
\Z 仅匹配字符串结尾,同$
\b 匹配\w和\W之间,即匹配单词边界匹配⼀个单词边界,也就是指单词和空格间的位置。例如, 'er\b' 可以匹配"never" 中
的 'er',但不能匹配 "verb" 中的'er'。
\B [^\b]
. 匹配任意除换⾏符"\n"外的字符(在DOTALL模式中也能匹配换⾏符
\ 转义字符,使后⼀个字符改变原来的意思
l 匹配前⼀个字符0或多次
+ 匹配前⼀个字符1次或⽆限次
匹配⼀个字符0次或1次
15、内存管理
1、 Python引⼊了⼀个机制:引⽤计数
2、 垃圾回收机制:当引⽤计数为0时,调⽤del⽅法
注意:
1、垃圾回收时,Python不能进⾏其它的任务,频繁的垃圾回收将⼤⼤降低Python的⼯作效率;
2、Python只会在特定条件下,⾃动启动垃圾回收(垃圾对象少就没必要回收)
3、当Python运⾏时,会记录其中分配对象(object allocation)和取消分配对象(object deallocation)的次数。当两者的差值⾼于某个阈值时,垃圾回收才会启动。
3、内存池机制
Python中有分为⼤内存和⼩内存:(256K为界限分⼤⼩内存)
1、⼤内存使⽤malloc进⾏分配
2、⼩内存使⽤内存池进⾏分配
3、Python的内存池(⾦字塔)
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论