python高级面试宝典

三范式

    1.一个数据一个字段

    2. 只要有主键的

    3. 减少重复

GIL

    叫什么:全局解释器锁cpython

    有什么用:单核的情况下实现多任务NB

    怎么解决:

        换解释器锁jpython

        进程加协程(个人建议)

        线程用其他语言实现,python调用


深拷贝与浅拷贝

    深拷贝

            递归拷贝每一层的数据


浅拷贝

    拷贝第一层的数据


跟引用的区别

    引用:多个变量指向同一个内存地址

    拷贝:产生一个新地址(不可变类型不会产生,int,字符串,元组)

python基本上如果提供了copy方法都是浅copy

私有化

        _x:单前置下划线,私有化属性或方法,from somemodule import * 禁止导入,类对象和子类可以访问

  __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)

__xx__:双前后下划线,用户名字空间的魔法对象或属性。例如:__init__ , __ 不要自己发明这样的名字

        xx_:单后置下划线,用于避免与Python关键词的冲突

模块搜索路径

        sys.path

模块更新

        from imp import reload

导入两种模块方式的区别

        import  **** 这个可以当做是引用

        from **** import *** 这个可以当做深拷贝


闭包

        闭包:两个函数的嵌套,外部函数返回内部函数的引用,外部函数一定有参数

        有什么用:在执行函数的时候可以在外部函数中保留参数在内存中

        写法:两个函数的嵌套,外部函数返回内部函数的引用,外部函数必须有参数

        def 外部函数(参数):

                def 内部函数():

                        pass

                return 内部函数

        闭包跟函数之间的区别:

             1.格式两个函数嵌套

             2.闭包外部函数的参数可以在内存中保持

nonlocal这个就是修改外部参数的值

装饰器

        装饰器是什么:闭包上加@xxx


        1. 先写一个万能装饰器

        def set_fun(func):

                def call_fun(*args,**kwargs):

                     return func(*args,**kwargs)

                return call_fun

        2. 在要装饰的函数上写一个@xxx

        @set_fun

        def test():

            print("test")

装饰器有结论

        1.装饰前的test函数是由func指向的

        2.装饰后的test其实就是call_fun

        3.道德上装饰不会去更改原先函数的返回值及调用方式

        4.func,装饰前的test,call_fun三个参数必须一致

两个装饰器装饰一个函数

        能够说出执行的结果,(秋裤大法跟电梯)


秋裤大法
电梯大法

一个装饰器一个函数(了解)


二个装饰器装饰器一个函数内存图(了解)


装饰器传参

   概述:三个函数的嵌套,第三层函数返回闭包的外层的引用,第三层必须有参数。

   在闭包外层再套一层,返回闭包的引用

     def set_args(args):

          def set_fun(func):

               def call_fun(*args,**kwargs):

                     return func(*args,**kwargs)

               return call_fun

         return set_fun

     @set_args("xx")  

        def test():

           print("test")

   @set_args("xx")这个要分两步执行,第一步执行 set_args("xx")函数得到一个闭包的最外层的引用,第二步去@闭包的最外层引用去执行原先的装饰器过程

多态

        python有多态,但是不是一个严谨的多态,因为Python是一个动态语言,没有强制类型

封装

        一个函数一个功能,一个类是多个相关函数的集合

继承

      子类中相同的方法会放到父类中,减少代码重复性

mro 及多继承

      mro类初始化顺序表,保持我们的类只初始化一次

      super()从mro顺序表中找到自已的位置,从mro顺序表中调用下一个类

实例与类之间的调用关系

      实例可以调用三种类型的方法(静态,类,实例),可以调用类的属性及自我的属性

      类可以调用三种类型的方法(静态,类,实例),但是不能调用实例上的属性


property(常量)

    1. 完成常量,常量是能得到到数据,但是不能修改数据,一般常量都是大写

    2. 代码实现

         1.这个常量一般在init中创建一个私有的属性

         2.提供一个得到这个私有属性的方法,但是我们为了让常量更直观,在方法上加入装饰器@property

         3.调用就可以使用(类名.方法名)


魔法属性与方法

    __dict__:查看属性

    __class__:查看谁创建了我

    __init__:初始化

    __new__:创建时,一般单例

    __call__:实例()调用

上下文管理器

    只要实现了__init__ ,__enter__,__exit__这三个方法就可以说实现了上下文管理器

    1.简化了代码

    2.程序退出时自动关闭

    3.操作时出现异常也会自动关闭

    with myopen() as f:

            pass

    myopen()这个调用__init__方法

    as 后面的f由__enter__这个方法返回

程序执行完后退出我们会执行exit,一般用来关闭资源

logging日志模块

开发过程中出现bug是必不可免的,你会怎样debug?从第1行代码开始看么?还是有个文件里面记录着哪里错了更方便呢!!!log日志

1. 日志级别

    日志一共分成5个等级,从低到高分别是:

    1.DEBUG

    2.INFO

    3.WARNING

    4.ERROR

    5.CRITICAL

    说明:

    DEBUG:详细的信息,通常只出现在诊断问题上

    INFO:确认一切按预期运行

    WARNING:一个迹象表明,一些意想不到的事情发生了,或表明一些问题在不久的将来(例          如。磁盘空间低”)。这个软件还能按预期工作。

    ERROR:更严重的问题,软件没能执行一些功能

    CRITICAL:一个严重的错误,这表明程序本身可能无法继续运行

这5个等级,也分别对应5种打日志的方法: debug 、info 、warning 、error 、critical。默认的是WARNING,当在WARNING或之上时才被跟踪。

2. 日志输出

    有两种方式记录跟踪,一种输出控制台,另一种是记录到文件中,如日志文件。


说明

    1.通过logging.basicConfig函数对日志的输出格式及方式做相关配置,上面代码设置日志的输出等级是WARNING级别,意思是WARNING级别以上的日志才会输出。另外还制定了日志输出的格式。

    2. 注意,只要用过一次log功能再次设置格式时将失效,实际开发中格式肯定不会经常变化,所以刚开始时需要设定好格式。


3、日志格式说明

logging.basicConfig函数中,可以指定日志的输出格式format,这个参数可以输出很多有用的信息,如下:

%(levelno)s: 打印日志级别的数值

%(levelname)s: 打印日志级别名称

%(pathname)s: 打印当前执行程序的路径,其实就是sys.argv[0]

%(filename)s: 打印当前执行程序名

%(funcName)s: 打印日志的当前函数

%(lineno)d: 打印日志的当前行号

%(asctime)s: 打印日志的时间

%(thread)d: 打印线程ID

%(threadName)s: 打印线程名称

%(process)d: 打印进程ID

%(message)s: 打印日志信息

在工作中给的常用格式如下:

format='%(asctime)s - %(filename)s[line:%(lineno)d] - %(levelname)s: %(message)s'

这个格式可以输出日志的打印时间,是哪个模块输出的,输出的日志级别是什么,以及输入的日志内容。

元类(Django)了解

    元类的格式

        类名 = type(类名,(父类...),{属性名:属性值})

        可以修改类的属性

        在类中使用metaclass=处理的对象


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,597评论 18 139
  • Python史上最全开发总结(转自静熙老师哈哈哈) 两本不错的书: 《Python参考手册》:对Python各个标...
    春风在抱阅读 754评论 1 4
  • 两本不错的书: 《Python参考手册》:对Python各个标准模块,特性介绍的比较详细。 《Python核心编程...
    静熙老师哈哈哈阅读 3,356评论 0 80
  • 两年前,我去一个古旧村子,参与拍抗战题材的电影,当时年轻气盛,心血来潮,不嫌辛苦,过了一把当群众演员的瘾。 ...
    新阁阅读 200评论 2 1
  • 写过一些东西,但没有完全针对孝这个主题,深夜睡不着,挺适合说一说想法。 关于孝,对于“孝”的认知很重要,这...
    丢了鱼的猫阅读 456评论 0 0