Python面试题(二)

这把我C 2020-12-03 10:37:31 6949
什么是切片?使用场景是什么?

使用[startIndex:endIndex]来获取list或trulp的部分元素
使用场景是,不需要遍历,就可以取得list或tuple中的连续多个元素
由于tuple的不变性,切片后依然是tuple类型,切片后都不会影响原有的数据,是新的数据,也可以用于复制list或tuple

A=[1,2,3,4,5,6,7]
B=(2,3,4,5,6,7,8)
print(A[2:5])
print(A[:3])
print(A[:])
print(A[-2:])
print(B[3:5])
print(A)
print(B)
for in 可以用于哪些数据类型?

for...in 可以遍历list、tuple、dict、set、str等多种可迭代的类型,
我们可以使用collectionsIterable类型来判断,改对象是否是可迭代对象。

from collections import Iterable
isinstance('abc', Iterable) # True str是可迭代

在for...in中可以同时引用二个变量

 for x, y in [(1, 1), (2, 4), (3, 9)]:
  print(x, y)
介绍一下生成器,语法,优点,以及使用场景

Python中内置了列表生成器,使用range()函数,要生成1到10 的一个数组可以使用list(range(1,11)),也可以这样用
[x*x for x in range(1,11)] 得到数组 [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

列表元素使用某种算法推算得出,这种生成列表的方式叫做生成器。

g = (x * x for x in range(10))

这种使用生成器生成的数组,不能直接打印,因为类型为generator, 必须使用next(g)
或者遍历的方式。

说一下map,reduce,filter,sorted 这几个函数

map()函数接受两个参数,第一个是函数,第二个是Iterable,map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回,简单理解就是,可以将一个数组转化为另一个数组, 将内部元素通过一个函数处理成新的元素。

def c(x):
  return x*x

b = map(c, [1,2,3,4,5])
print(list(b))

reduce()函数也是接受两个参数,一个是函数,另一个是数组或Iterator
长常用于数组的元素叠加,
如将数组[1,2,3,4,5]的元素求和,使用reduce必须要先从库中引入

from functools import reduce
def add(x, y):
    return x + y
print(reduce((add), [1,2,3,4,5]))

filter()函数用于筛选,过滤一些符合条件的元素.

def is_odd(n):
    return n % 2 == 1

list(filter(is_odd, [1, 2, 4, 5, 6, 9, 10, 15]))

sorted()函数可用于数组排序

sorted([36, 5, -12, 9, -21])
编写一个模块,自运行一个函数,并在外部调用一个内部函数

创建模块cc

def getName():
  print(123)

if __name__=='__main__':
  getName()

模块index

import cc
cc.getName()

if __name__=='__main__': 这句代码表示,如果当前运行的是cc模块,那就会运行getName()这个函数,命令行运行cc模块是,Python解释器把一个特殊变量__name__置为__main__

说一下模块的作用域

模块中的函数与变量,它们如果要变成私有的,只在内部进行访问,只需要在变量或者函数名前加上___

def _setName(name):
  print(name)

函数_setName对外界是访问不到的,只能在模块内部使用

创建一个Animal类,并接受三个初始参数
class Animal(object):

  def __init__(self, name, score, age):
    self.name = name
    self.score = score
    self.age = age

  def print_name(self):
    print('Name:'+self.name)

dog = Animal('fugui', 90, 12)
dog.print_name()
类的私有属性与方法如何设置?

如果要让内部属性不被外部访问,可以把属性的名称前加上两个下划线__,在Python中,实例的变量名如果以__开头,就变成了一个私有变量(private),只有内部可以访问,外部不能访问。

说一下继承与多态

子类集成集成父类,只需要在定义类时将父类传入即可,不需要使用关键字

class childeClass(parentClass):
  pass

子类会集成父类的属性和方法,但也可以在子类中重新定义同名的属性和方法来覆盖父类的。这叫做多态。
在继承关系中,如果一个实例的数据类型是某个子类,那它的数据类型也可以被看做是父类。但是,反过来就不行

有哪些方法识别数据类型?
  • type() 判断基本数据类型 它返回对应的Class类型
  • isinstance() 优先使用这种 判断class的类型
  • dir() 要获得一个对象的所有属性和方法 可以使用dir()函数
说一下类的属性与实例的属性有什么区别

Python是动态语言,根据类创建的实例可以任意绑定属性。直接在class中定义属性,这种属性是类属性,归类所有。
当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 95 20 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
这把我C
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区