注意:只有必答题部分计算分值,补充题不计算分值。
简述列举了解的编程语言及语言间的区别?
编译型:只翻译一次(代表语言C)
优点:执行速度快
缺点:开发速度慢
解释型:逐行翻译(代表语言python)
优点:开发速度快
缺点:执行速度慢
列举Python2和Python3的区别?
1.python解释器默认编码(python2与python3的区别一)
python2 解释器默认编码:ascii
python3 解释器默认编码:utf-8
2.输入(python2与python3的区别二)
python2:name=raw_input('请输入姓名')
python3:name=input('请输入你的姓名')
3.输出(python2与python3的区别三)
python2:print "你好"
python3:print("你好")
字符串不同
py2中有两种数据类型:unicode str
py3中有两种数据类型:str bytes
py2中的str,就是py3中的bytes
py2中的unicode,就是py3中str
例如:
py2:
val = u"changxinzuoxia" => unicode
val = "changxinzuoxia" => str
py3:
val = "chanxin" => str
val = b"chanxin" => bytes
range:
py2: range xrange
py3: range
类型:
py2:
int long
p3:
int
字典:
v = {"k1":1,"k2":2}
py2,立即将数据放到内存。
v.keys(),得到列表
v.values(),得到列表
v.items(),得到列表
py3:
v.keys(),迭代器
v.values(),迭代器
v.items(),迭代器
map、filter
py2: 立即得到结果
py3: 迭代器
类:
py2: 经典类、新式类(直接或间接继承object)
py3: 新式类
看代码写结果
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,)]
v1 是普通列表,元素为int
v2 是列表里面加了小括号,和v1一样,int类型
v3 列表嵌套元祖,元组的元素为int
用一行代码实现数值交换。
a = 1
b = 2
a,b = b,a
Python中单引号、双引号、三引号的区别?
python单引号,双引号,三引号都是字符串且可以进行转义,唯一的差别就是三引号 可以显示多行。
is和==的区别?
is是判断内存地址是否一致
==是两者的值是否一样
python里如何实现tuple和list的转化?
tuple(list) # 列表转元组
list(tuple) # 元组转列表
如何实现字符串 name=‘老男孩‘
的反转?
name = "老男孩"
name = name[::-1]
两个set如何获取交集、并集、差集?
# 交集
set(a)&set(b)
# 并集
set(a)|set(b)
# 差集
set(a)-set(b)
那些情况下, y != x - (x-y)会成立?
x,y是两个不相等的非空集合
Python中如何拷贝一个对象?
# copy模块
[:]
copy.copy() # 浅拷贝
copy.deepcopy() # 深拷贝
简述 赋值、浅拷贝、深拷贝的区别?
在Python中拷贝的目的就是要再创建一份,拷贝都是针对可变类型而言。
例如:
data = [1,2,[11,22]]
浅拷贝, 只拷贝第一层.
new_data = copy.copy(data)
相当于:[1拷贝一份,2拷贝一份,[11,22]用原来的内存地址] 理论
相当于:[1,2,[11,22]用原来的内存地址] 实际
深拷贝,所有层都拷贝。
new_data = copy.deepcopy(data)
相当于:[1,2,[11,22]重新拷贝一份]
总结:Python中所有的拷贝都是针对可变类型而言,浅拷贝就是指拷贝数据的第一层,遇到可变类型只能拷贝他的内存地址,数据不会重新创建。 而对于深拷贝,会将所有的可变类型数据都拷贝一份。
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)
# [1,2,4,5,['b','c','d'],5]
print(c)
# [1,2,4,5,['b','c','d']]
print(a)
# [1,2,4,5,['b','c','d'],5]
用Python实现9 * 9 乘法表。
result = "\n".join([" ".join([ "%s*%s=%s " %(i,j,i*j) for j in range(1,i+1)]) for i in range(1,10)])
用Python显示一个斐波那契数列。
# 1 1 2 3 5 8 13 21 ...
def fib(num):
if num in [1,2]:
return 1
return fib(num-1) + fib(num-2)
def fib(num):
if num in [1,2]:
return 1
first = 1
second = 1
for i in range(3,num+1):
first,second =second,first + second
return second
如何删除列表中重复的值?
list(set(list))
一个大小为100G的文件etl_log.txt, 要读取文件中的内容, 写出具体过程代码?
with open(r'etl_log.txt','r',enconding='utf-8') as f:
for i in f:
info = f.readlines()
print(info)
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
a是字典,
a = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
lambda关键字的作用?
定义匿名函数,自带for循环
*arg
和**kwarg
作用?
*args 接收多余的位置参数
**kwargs 接收多余的关键字参数
如何在函数中设置一个全局变量 ?
global 全局变量
filter、map、reduce的作用?
filter 过滤
map 映射
reduce 累计算
什么是匿名函数?匿名函数有什么作用?
lambda函数就是匿名函数
作用:简化代码
Python递归的最大层数?
官方:1000
实测:995-998
什么是迭代器?什么是可迭代对象?
迭代器:内部具有 __next__方法,获取下一个值,只能前进不能倒退。
可迭代对象:内部具有 __iter__ 方法且返回一个迭代器。
class Foo:
def __iter__(self,*args,**kwargs):
return iter([11,22,33])
obj = Foo()
for item in obj:
print(item)
什么是生成器?
具有yield的关键字就是生成器,生成器的本质是迭代器
装饰器的本质是闭包,在不修改源代码及其调用方式的前提下,外增加功能
什么是装饰器及应用场景?
登录,类
什么是反射及应用场景?
通过字符串操作对象的方法和属性
判断用户的输入
写一个普通的装饰器。
def warpper(func):
def inner():
print("111")
func()
print("222")
return inner
@warpper
def func():
print("被装饰的函数")
写一个带参数的装饰器。
def func_z(func):
def inner(*args,**kwargs):
print("我是装饰器,装饰你了啊")
ret = func(*args,**kwargs)
return ret
return inner
@func_z
def func_b(*args,**kwargs):
print("我是被装饰的函数,来啊,你过来啊")
求结果
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)
"""
[1,3]
[10,20,2]
[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 os
os.listdir()
求结果
import math
print (math.floor(5.5))
#5
是否使用过functools中的函数?其作用是什么?
from functools import reduce
reduce 累计算
re的match和search区别?
match: 从开头进行查找,查找到就停止,找不到返回None
search: 查找全文,找到就停止,找不到就返回None
用Python匹配HTML tag的时候,<.>和<.?>有什么区别?
.* 贪婪匹配 匹配多个任意字符
.*? 非贪婪 只匹配一次
如何生成一个随机数?
import random
random.random()
super的作用?
按照mro的顺序进行继承
双下划线和单下划线的区别?
双线划线:__ 是Python中强制定义为私有
单下划线:_ 是程序员约定的私有方法
@staticmethod和@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类下添加代码完成该类的实现
原文:https://www.cnblogs.com/hejialong/p/12366096.html