Python面试题—Python函数、类与模块(一)

Python面试题—Python函数、类与模块(一)

1. 请用一句话解释什么样的程序语言可以使用装饰器。

​ 函数可以当作参数传递的程序语言。

2. Python的__init__是什么?

​ 建立类很重要的一个工作是初始化整个类,所谓的初始化类是在类内建立一个初始化方法(method),这是一个特殊方法。当在程序内宣告这个类的对象时将自动执行这个方法。初始化方法有一个固定名称是__init__(),init也就是initialization的缩写。

3. Python的类内的关键词self是什么?

​ 在__init__()初始化函数中,self是必须的,它放在所有参数的最前面(相当于最左边),Python在初始化时会自动传入这个参数self,代表的是类本身的对象,未来在类内想要参照各属性函数执行运算皆要使用self。

4. 说明封装(encapsulation)。

​ 面向对象程序设计时,外部直接引用也代表可以直接修改类内的属性值,这将造成类数据不安全。Python提供了一个私有属性方法的概念,使类外无法直接更改类内的私有属性,类外也无法直接调用私有方法,这个概念又称为封装(encapsulation)。

5. 说明super()

​ 在面向对象的程序设计里,也可以使用Python的super()方法取得基类的属性。

6. 说明多态(polymorphism)。

​ 基类与衍生类有相同方法名称的实例,就是多态,但是在多态的概念中是不局限在必须有父子关系的类。

7. 说明__iter__()方法和__next__()方法。

​ 建立类的时候也可以将类定义成一个迭代对象,类似list或tuple,供for…in循环内使用,这时类需设计next()方法,取得下一个值,直到达到结束条件,可以使用raise StopIteration终止继续。

8. 说明map()函数用法。

​ 内建函数map(),语法格式为map(func,iterable)。上述函数将依次把iterable(可重复执行的字符串string、列表list或元组tuple等)的元素(item)放入func()中,然后将func()函数执行结果回传,上述参数func常常使用lambda表达式。

list1 = [1,2,3]
list2 = list(map(lambda x:x**2,list1))# [1,4,9]

9. 说明filter()函数用法。

​ 内建函数filter()只要用于筛选序列,语法格式为filter(func,iterable)。上述函数将依次把iterable(可重复执行的字符串string、列表list或元组tuple等)的元素(item)放入func()中,然后将func()函数执行结果是True的元素组成新的筛选对象(filter object)回传,上述参数func常常使用lambda表达式。

list1 = [1,2,3,4,5]
list2 = list(filter(lambda x:(x%2==1),list1)) #[1,3,5]

10. 说明reduce()函数用法。

​ 内建函数reduce()的语法格式为reduce(func,iterable)。它会先对可迭代对象的第1和第2个元素操作,得到结果再和第3个元素操作,直到最后一个元素。假设iterable有4个元素,可用下列方式解说:reduce(f,[a,b,c,d])=f(f(f(a,b),c),d)

​ 早期reduce()是内建函数,现在被移至functools模块中。

"""下为字符串转整数的函数"""
from functools import reduce
def strToInt(s):
    def charToNums(s):
        return {'0':0,'1':1,'2':2,'3':3,'4':4,'5':5,'6':6,'7':7,'8':8,'9':9}[s]
    return reduce(lambda x,y:10*x+y,map(charToNums,s))

string = '123'
x = strToInt(string) #123
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值