码迷,mamicode.com
首页 > 编程语言 > 详细

写一写关于python开发面试的常遇到的问题以及解答吧,持续更新——看心情

时间:2018-06-04 11:26:23      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:style   span   func   IV   app   技术分享   sorted   取出   closed   

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开发面试的常遇到的问题以及解答吧,持续更新——看心情

标签:style   span   func   IV   app   技术分享   sorted   取出   closed   

原文地址:https://www.cnblogs.com/zhoulixiansen/p/9131491.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!