写一写关于python开发面试的常遇到的问题以及解答吧,持续更新——看心情
Posted 人生苦短use,what?
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了写一写关于python开发面试的常遇到的问题以及解答吧,持续更新——看心情相关的知识,希望对你有一定的参考价值。
1,什么是python中的魔术方法?
魔术方法是重载运算符的昵称,形式是__init__类似这样的前后双下滑线组成的,常用的__init__,__new__,__call__,__str__,__getitem__……等一堆。(过一段时间我会在博客里面更新一下关于这些运算符具体使用方法。)
2,什么是闭包,和装饰器有什么关系?
在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包。
各位老铁们,是不是不懂啊,那就对了。接着往下看,看装饰器的写法(装饰器是闭包的最好体现)
那特么啥又是装饰器?,就是不改变原有代码的情况下给原有程序添加额外的功能,并减少重复代码的东东。
import time def deco(func): def wrapper(): startTime = time.time() func() endTime = time.time() msecs = (endTime - startTime)*1000 print("time is %d ms" %msecs) return wrapper @deco def func(): print("hello") time.sleep(1)
稍有基础的小朋友应该秒懂,就是在外面定一个函数,在原函数上加@装饰器名字嘛!
如果现在已经懵懂了,那就让你变得在懵懂些吧!
import time def register(active=True) def deco(func): def wrapper(): if active: startTime = time.time() func() endTime = time.time() msecs = (endTime - startTime)*1000 print("time is %d ms" %msecs) else: func() return wrapper return deco @deco(active=False) def func(): print("hello") time.sleep(1)
这个就是设了一个开关,判断,如果为真,就计算时间,否则,不算时间。
三,
l = [1,3.,5,7,9,0]
l = l.sort()
请问l现在是多少?
l = [1,3.,5,7,9,0] l = l.sort() print(l) >>>None
很多初学的小伙伴可能迷糊啊
这是因为直接调用sort是在原有基础上排序,没有返回值的!!
想有咋弄?
l = [1,3.,5,7,9,0] l = sorted(l) print(l) >>>[0, 1, 3.0, 5, 7, 9]
四,生成器和迭代器的区别?
生成器的本质就是迭代器,生成器本质就是函数里面有yield的关键字
yield和return的区别在于函数遇到yield,不会结束,只是hang住,但是return下就结束了
yield有个send()方法,可以给yield赋值
五,写一个裴波那契算法:
def fib(n): a, b = 0, 1 while a < n: print(a, end=‘ ‘) a, b = b, a+b print(a) fib(1000)
六,<‘.*‘>和<‘.*?‘>区别?
贪心匹配和非贪心匹配,前者匹配尽可能长,后者匹配尽可能短。
七,统计一篇英文文章内每个单词出现频率,并返回出现频率最高的前10个单词及其出现次数
1 from collections import Counter 2 import re 3 4 with open(‘a.txt‘, ‘r‘, encoding=‘utf-8‘) as f: 5 txt = f.read() 6 c = Counter(re.split(‘\W+‘,txt)) #取出每个单词出现的个数 7 print(c) 8 ret = c.most_common(10) #取出频率最高的前10个 9 print(ret)
八,洗洗睡了,困死了,回头更新
以上是关于写一写关于python开发面试的常遇到的问题以及解答吧,持续更新——看心情的主要内容,如果未能解决你的问题,请参考以下文章