写一写关于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)
View Code

这个就是设了一个开关,判断,如果为真,就计算时间,否则,不算时间。

三,

l = [1,3.,5,7,9,0]
l = l.sort()

请问l现在是多少?

技术分享图片
l = [1,3.,5,7,9,0]
l = l.sort()
print(l)



>>>None
View Code

很多初学的小伙伴可能迷糊啊

这是因为直接调用sort是在原有基础上排序,没有返回值的!!

想有咋弄?

技术分享图片
l = [1,3.,5,7,9,0]
l = sorted(l)
print(l)


>>>[0, 1, 3.0, 5, 7, 9]
View Code

四,生成器和迭代器的区别?

生成器的本质就是迭代器,生成器本质就是函数里面有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)
View Code

 

八,洗洗睡了,困死了,回头更新

 

以上是关于写一写关于python开发面试的常遇到的问题以及解答吧,持续更新——看心情的主要内容,如果未能解决你的问题,请参考以下文章

分享TCP协议的常见面试题,你会回答吗?

字节跳动技术训练营—后端开发专场 机试题解

java面试java中Spring开发框架的常见面试题

面试题

随便写一点最近开发遇到的问题和解决方法 大部分关于laravel和php

前端开发过程中遇到过啥困难?