python基础题
-
ptyhon:解释型语言,相对简单易学
c:编译型语言 底层语言
java:混合型语言
-
列举Python2和Python3的区别?
Python2:源码不统一,有重复的功能代码
Python3:源码统一,没有重复的功能代码
-
看代码写结果
v1 = 1 or 2 1
v2 = 3 and 7 or 9 and 0 7
-
比较以下值有什么不同?
v1 = [1,2,3] 列表
v2 = [(1),(2),(3)] 列表
v3 = [(1,),(2,)(3,)] 列表套元组
-
用一行代码实现数值交换。
a = 1
b = 2 a,b = b,a
-
Python中单引号、双引号、三引号的区别?
单双引号可以互相包含,避免转义
三引号注释 -
is和==的区别?
is判断ID值是否相同
==比较像个对象的值是否相等 -
python里是如何实现tuple和list的转化?
列表转元组:
lst = [1,2,3,4]
tu = tuple(lst)
元组转列表:
tu = (1,2,3,4)
lst = list(tu)
-
如何实现字符串name = '老男孩'的反转?
name = '老男孩'
name1 = name[::-1]
print(reversed(name))
-
两个set如何获取交集、并集、和差集?
交集 —— &
并集 —— |
差集 —— -
-
那些情况下,y!=x-(x-y)会成立?
x,y是步行等的非空集合
-
Python中如何拷贝一个对象?
copy.copy()
copy.deepcopy()
-
简述赋值、浅拷贝、深拷贝的区别?
赋值:多个变量名指向同一个内存地址就是赋值
浅拷贝:只拷贝第一层元素
深拷贝:不可变数据类型共用,可变数据类型开辟新空间
-
pass的作用?
pass:占位
-
阅读代码写结果。
import copy
a = [1,2,4,5,['b','c']]
b = a
c = copy.copy(a)
d = copy.deepcopy(a)
a.append(5)
a[4].append('d')
print(b)
print(c)
print(a)
'''
a = [1,2,4,5,['b','c','d'],5]
b = [1,2,4,5,['b','c']]
c = [1,2,4,5,['b','c'],5]
'''
-
用Python实现9*9乘法表。
j = 1
while j < 10:
i = 1
while i <= j:
if i == j:
print(i, '*', j, '=', j * i)
else:
print(i, '*', j, '=', j * i, end=' ')
i += 1
j += 1
for i in range(1, 10):
for j in range(1, i+1):
print("%s*%s=%s" % (j, i, i*j), end=' ')
print('')
-
用Python显示一个斐波那契数列。
def foo(n):
if n == 1:
return 1
elif n == 2:
return 1
else:
return foo(n-1) + foo(n-2) -
如何删除列表中重复的值?
lst = [1,1,2,2,3,3]
print(set(lst))
-
一个大小为100G的文件etl_long.txt,要读取文件中的内容,写出具体过程代码。
f = open('etl_log.txt',mode = 'r', encoding = 'utf-8')
print(f.read())
with open('etl_log.txt', 'r', encoding = 'utf-8')as f:
print(f.read())
-
a = dict(zip(('a', 'b', 'c', 'd', 'e'), (1, 2, 3, 4, 5)))请问a是什么?
a = {'a':1, 'b':2, 'c':3, 'd':4, 'e':5}
-
lambda关键字的作用?
lambda是定义匿名函数的关键字,相当于普通函数的def
-
*args和**kwargs作用?
*args:接受动态位置参数
**kwargs:接受动态默认参数
-
如何在函数中设置一个全局变量?
global a
-
filter、map、reduce的作用?
filter:筛选过滤
map:映射
reduce:累计算 -
什么是匿名函数?匿名函数有什么作用?
用lambda能够创建一个匿名函数,匿名函数省略了用def声明函数的标准步骤
作用:作为自定义函数和内置函数的参数传递 -
Python递归的最大层数?
官方:1000
实际:998 -
什么是迭代器?什么是可迭代对象?
具有--iter() 和 --next() 两个方法,可以被next()函数调用并不断返回下一个值得对象成为迭代器
具有--iter()方法就是一个可迭代对象 -
什么是生成器?
生成器的本质是迭代器,生成器是程序员自己写的一种迭代器,且具有send方法和yield关键字 -
什么是装饰器及应用场景?
装饰器本质上是一个Python函数,它可以在不改变源代码的情况下增加额外的功能。
使用场景:
权限的校验,在函数外层套上校验的代码,实现权限校验
实现缓存处理
计算函数的运行次数
作为函数的运行日志 -
什么是反射及应用场景?
可以通过字符串的形式来操作对象的属性 -
写一个普通的装饰器。
def foo(f):
def index(*args, **kwargs):
ret = f(*args, **kwargs)
return ret
return index -
写一个带参装饰器。
def func(f):
def foo(auth):
def index(*args, **kwargs):
ret = auth()
return ret
return index
return foo -
求结果
def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
'''
[6,6,6,6]
'''
-
def(a, b=[])这种写法有什么陷阱?
-
看代码写结果
def func(a,b=[]):
b.append(a)
return b
v1 = func(1)
v2 = func(2,[10,20])
v3 = func(3)
print(v1,v2,v3)
'''
v1=[1]
v2=[10,20,2]
v3=[1,3]
'''
-
看代码写结果
def func(a,b=[]):
b.append(a)
return b
v1 = func(1)
print(v1) [1]
v2 = func(2,[10,20])
print(v2) [10,20,2]
v3 = func(3)
print(v3) [1,3]
-
请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果00001010 00000011 00001001 00001100 = ?
-
请查找一个目录下所有的文件(文件存在嵌套)。
-
求结果
import math
print (math.floor(5.5))
-
是否使用过functools中的函数?其作用是什么?
reduce 累计算
-
re的march和search区别?
march:从头开始匹配,匹配一个就停止
search:从任意位置开始匹配,匹配一个就停止 -
用Python匹配HTML tag的时候,<>和 <?> 有什么区别?
.:贪婪匹配,匹配任意多个字符
.?:非贪婪匹配,只匹配一次 -
random.random() -
super的作用?
-
双下划綫和单下划线的区别?
-
@staticmenthod和@classmethod的区别?
-
实现一个单例模式(加锁)。
-
栈和队列的区别?
-
以下代码输出的是什么?请给出答案并解释。
class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass
print Parent.x, Child1.x, Child2.x
Child1.x = 2
print Parent.x, Child1.x, Child2.x
Parent.x = 3
print Parent.x, Child1.x, Child2.x
-
参考下面代码片段
class Context:
pass
with Content() as ctx:
ctx.do_something()
请在Context类下添加代码完成该类的实现
浙公网安备 33010602011771号