面试---真题

5.可迭代对象,迭代器 

#可迭代对象只含有__iter__方法的数据是可迭代对象
#迭代器:含有__iter__方法,并且含有__next__方法的数据是迭代器

6.手写装饰器

def wrapper(func):
    def inner(*args,**kwargs):
        '''执行函数前进行的操作'''
        ret = func(*args,**kwargs)
        '''执行函数后进行的操作'''
        return ret
    return inner

8.python函数式编程是什么

#什么是函数式编程?

#函数式编程使用一系列的函数解决问题。
#函数仅接受输入并产生输出,不包含任何能影响产生输出的内部状态。任何情况下,使用相同的参数调用函数始终能产生同样的结果。

#在一个函数式的程序中,输入的数据“流过”一系列的函数,每一个函数根据它的输入产生输出。函数式风格避免编写有“边界效应”(side effects)的函数:修改内部状态,或者是其他无法反应在输出上的变化。完全没有边界效应的函数被称为“纯函数式的”(purely functional)。避免边界效应意味着不使用在程序运行时可变的数据结构,输出只依赖于输入。

#可以认为函数式编程刚好站在了面向对象编程的对立面。对象通常包含内部状态(字段),和许多能修改这些状态的函数,程序则由不断修改状态构成;函数式编程则极力避免状态改动,并通过在函数间传递数据流进行工作。但这并不是说无法同时使用函数式编程和面向对象编程,事实上,复杂的系统一般会采用面向对象技术建模,但混合使用函数式风格还能让你额外享受函数式风格的优点。

11.面向对象有哪些内置方法

__str__(self):

 __del__()析构法

__call__(self,*args,**kwargs)

__dict__ 返回属性和方法

__iter__()

__new__()构造法

类的实例属性是字典的时候,使用以下三个方法
__getitem__() :返回当前的实例属性的字典值
__setitem__():属性中的key和value重新赋值
__delitem__():删除实例属性中的某个字典key和value值

 

12.repr和str的区别

Python打印值的时候会保持该值在Python代码中的状态,不是用户所希望看到的状态。而使用print打印值则不一样,print打印出来的值是用户所希望看到的状态。 
例如:
>>> "Hello, world!"
'Hello, world!'   # Python打印出来的值是给python理解的,这里python理解为字符串,所以带着引号
>>> 1000L         # python理解为Long型的数字,所以它打印出来的时候也带着后缀L
1000L
>>> print "Hello, world!"    # 打印一个字符串,给用户看的,所以不带引号
Hello, world!
>>> print 1000L              # 用户看到的当然是一个数字1000,而不是字符串1000L
1000
str和repr实际就分别对应上述两种显示方式。
str
把值转换为合理形式的字符串,给用户看的。str实际上类似于int,long,是一种类型。
>>> print str("Hello,  world!")
Hello,  world!            
>>> print str(1000L)
1000                         
>>> str("Hello, world!")
'Hello, world!'               # 字符串转换之后仍然是字符串
>>> str(1000L)
'1000'
repr()
创建一个字符串,以合法python表达式的形式来表示值。repr()是一个函数。
>>> print repr("Hello,  world!")
'Hello,  world!'
>>> print repr(1000L)
1000L
>>> repr("Hello,  world!")
"'Hello,  world!'"
>>> repr(1000L)
'1000L'
总而言之,str出来的值是给人看的字符串,repr出来的值是给机器看的,括号中的任何内容出来后都是在它之上再加上一层引号  如果str和reor只能选择一个的时候要用repr,可以顶替str。

13.手写递归裴波那切数列

#递归函数---裴波那切
def fibo(n,a=0,b=1):#定义一个函数
    if n == 1:return b#如果n==1则返回b
    return fibo(n-1,b,a+b)#位置传参,覆盖默认参数的值
print(fibo(6))
#非递归函数---裴波那切数列
def fib_circle(n):#定义一个函数
    a=1#给a和b赋值
    b=1
    if n<=2:#如果n小于等于2则返回1
        return 1
    else:#否则
        for i in range(2,n):#循环2到n-1之间的所有的数
            c=a+b
            a=b
            b=c
        return c#返回一个c
print(fib_circle(6))#打印并调用函数

 14.递归两个准则是什么

#调用自身和结束条件

19.类属性和对象属性

#类属性和对象属性的作用域
#类属性:公有属性,私有属性,内置属性
#对象属性:公有属性,私有属性,内置属性,方法变量,全局变量
#类属性和对象属性定义
#Python一切皆对象(object),每个对象都可能有多个属性(attribute)。Python的属性有一套统一的管理方案。
#对象的属性可能来自于其类定义,叫做类属性(class attribute)。类属性可能来自类定义自身,也可能根据类定义继承来的。
#一个对象的属性还可能是该对象实例定义的,叫做对象属性(object attribute)。

 

转载于:https://www.cnblogs.com/chongdongxiaoyu/p/8583368.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值