python 面试题知识回顾

一、 python 函数 的参数传递html

a = 1
def fun(a):
    a = 2
fun(a)
print a  # 1


a = []
def fun(a):
    a.append(1)
fun(a)
print a  # [1]

  

主要有两总结 :1变量是对实际内存对象的一个引用,变量的值和类型取决于实际被引用的对象。python

                              二、python函数的参数,若是是一个外部变量,会复制一个对同一个对象的引用,这个局部变量的引用是和外部的引用没有任何关系的,express

                                   若是只是对外部变量进行引用,那就是引用的同一个对象。若是发生了赋值,这个引用就指向了另外的对象。若是是操做,对引用对象的值发生改变,编程

                                  要看引用对象是可变类型仍是不可变类型,若是是可变的,仍是引用的同一个对象,只是对象的值发生改变了,若是是字符串、元组、数字等不可变数据类型,闭包

                                 发生修改,其实是会产生一个新的内存对象。app

                                           

 二、python 的metaclass 要看一下函数式编程

 

 

三、关于python类变量一个实例的解释函数

class Person:
    name="aaa"

p1=Person()
p2=Person()
p1.name="bbb"
print p1.name  # bbb
print p2.name  # aaa
print Person.name  # aaa

  

咱们一直在强调引用,确实没错,可是对于上面这问题,咱们看,他是否是已经该变量类变量name的引用呢,其实整个过程是这样的,他如今本身实例空间中声明一个name,而后根据这个去查找,类中有没有相同的变脸,若是有就复制一份这个引用,给我本身声明的name,若是没有就报错 , 这个时候是能够给本身空间的这个name变量,从新附一个值,也就是产生了一个新的对象引用。因此,这个是不会改变类变量中的name的引用的。spa

 

五、python自省 :指的是python的代码在执行过程当中,能够知道对象的类型,例如 ,type()方法 ,isintance() 方法。htm

 

六、字段推导式 {expression(k) :expression(v) for  k , v in dict.items()  conditon },老是字典推导式是和列表推导式的用法是一致的。

 

 七、generator 

八、iterator&nbsp

 

九、什么是AOP ,就是动态的将代码切入到,类的指定方法中的编程思想,叫作切面编程。AOP。 直白一点就是在类的方法上装一个decorator

 

10.函数重载,python不支持函数重载

函数重载是用来作什么的?

一、同一个函数,不一样的参数的类型(同一段函数代码),可能产生的结果是不同的。这样须要函数重载

二、同一个函数,不一样的参数个数。           

基于以上两点,咱们用python来分析一下,第一python是动态性语言,就是python的变量引用对象的数据类型,是在代码执行过程当中确认的,因此说,函数中的参数是能够接受任意的数据类型的,而咱们说过函数重载是具备相同的代码,那么对于python来说,就是没有意义了。彻底不须要写两个同名函数。

第二点,同一个函数,不一样的参数个数,python是有不固定参数的,也就是*args,**kwargs。这个两个不固定长度参数,能够解决此问题。

                 

十一、python 变量的查找范围,分别是内部做用域 -》函数闭包-》全局做用域-》内建做用域

 

十二、关于函数式编程

这个在python中是有引用的,

第一,python的decorator的实现过程就是用到了函数式编程中的定义,就是函数也是对象,函数名是对整个函数体的一个引用,函数名能够作为其余函数的参数和返回值

第二,是是关于三个内置函数,一个reduce ,map,还有一个filter。 

filter 和map的函数形式相同 ,哪map举例 map(fucntion , sequence),第一个参数是一个函数 , 第二个参数是一个可迭代对象。以下:

关于reduce,这个函数,和前面两个稍有不一样, reduce(function , iterable)  ,就是reduce中的函数中必需要有两个参数,会先去,后面iterable中的前两个元素,如今函数中作计算,而后,在用第三个元素,和前两个元素计算出来的值进行计算

以下:

 

 1三、关于容器类对象的deepcopy和浅copy

相关文章
相关标签/搜索