Python面试题(二)
什么是切片?使用场景是什么?
使用[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
等多种可迭代的类型,
我们可以使用collections
的Iterable
类型来判断,改对象是否是可迭代对象。
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中定义属性,这种属性是类属性,归类所有。
当我们定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到
- 分享
- 举报
-
浏览量:7281次2020-12-02 10:58:43
-
浏览量:3788次2020-08-19 16:34:45
-
浏览量:2602次2018-01-22 15:32:07
-
浏览量:7250次2020-12-06 16:44:26
-
浏览量:578次2023-09-07 09:51:17
-
浏览量:6226次2021-01-17 16:24:32
-
浏览量:7640次2020-12-06 00:56:08
-
2020-12-14 22:33:31
-
浏览量:2185次2022-05-13 09:55:32
-
浏览量:3955次2021-04-05 12:09:13
-
浏览量:3454次2019-09-18 22:22:32
-
浏览量:10577次2020-12-14 13:26:01
-
浏览量:7984次2020-12-08 14:09:20
-
浏览量:1054次2023-12-16 22:32:09
-
浏览量:4367次2021-01-29 10:33:19
-
浏览量:4727次2021-08-09 16:10:30
-
浏览量:1019次2023-05-08 14:24:53
-
浏览量:1162次2024-03-04 14:48:01
-
浏览量:673次2023-12-18 18:31:22
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
这把我C
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明