简述列举了解的编程语言及语言间的区别?
编程语言分为:解释型语言和编译型语言
解释型语言:程序不需要编译,程序在运行时才编译成程序语言,每执行一次都需要翻译一次
编译型语言:程序执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新编译,直接使用编译的结果
列举python2和pythoon3的区别?
1.python2中的print为class,在打印内容时不需要加括号,而python3中的print为函数,打印内容时需要加上括号。
2.python3中input得到的为str型,python2中input得到的为int型,raw_input才得到的为str型。
3.python3中/表示真除,%表示取余,//结果取整;python2中带上小数点/表示真除,%表示取余,//结果取整。
4.python3中使用range,和python2中的xrange,用法都相同,但是返回类型不同,xrange生成的是一个生成器,range只是一个列表。
看代码写结果?
v1 = 1 or 2 # True
v2 = 3 and 7 or 9 and 0 # False
比较一下值有什么不同?
v1 = [1,2,3] # 单纯的只是一个列表
v2 = [(1),(2),(3)] # 该数据类型也只是一个列表
v3 = [(1,),(2,),(3,)] # v3是一个列表中套着元组的的数据类型
用一行代码事项数值交换。
a = 1
b = 2
# 交换
a,b = b,a
Python中单引号、双引号、三引号的区别?
# 单引号、双引号、三引号都表示字符串,但是三引号可以表示多行的内容,而但单、双引号都不可以,三引号中可以使用双、单引号,双引号中可以使用单引号。
is和==区别?
# is: 判断的是两个变量之间的地址是否相同
# ==: 判断的是两个变量的值是否相同
python里如何实现tuple和list的转化?
# 通过使用tuple()和list()关键字即可,需要将转化的数据类型使用tuple()和list()进行转化即可。
如何实现字符串name=‘老男孩‘的反转?
print(name[::-1])
s = list(name)
s.reverse()
from functools import reduce
reduce(lambda x,y:y+x, name)
两个set如何获取交集、并集、差集?
# 交集 set3 = set1 | set2, 使用 |
# 并集 set3 = set1 & set2, 使用 &
# 差集 set3 = set1 - set2, 使用 -
那些情况下,y != x - (x-y)会成立?
Python中如何拷贝一个对象?
# 可以使用深拷贝和浅拷贝
s1 = 'web'
import copy
s = copy.deepcopy(s1)
?
? ```
简述赋值、浅拷贝、深拷贝的区别?
# 赋值:是对对象的引用,也可以理解为为对象去一个别名
# 浅拷贝:对于可变数据类型而言,是创建一个具有相同类型和值但id不同的对象
# 深拷贝:不可变数据类型内存地址共用,可变数据类型新开辟一个空间
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)
#[1,2,4,5,['b','c'], 5]
#[1,2,4,5,['b','c']]
#[1,2,4,5,['b','c']]
用python实现9*9乘法表。
for i in range(1,10)
for j in range(1,i+1)
print(f'{j}*{i}={j*(i+1)} ')
print('\n')
用Python显示一个斐波那契数列。
def fib2(imax):
t,a,b=0,0,1
while t<imax:
yield b
a,b=b,a+b
t+=1
for i in fib2(10):
print(i)
如何删除列表中重复的值?
#使用set集合去掉重复值
一个大小为100G的文件etl_log.txt,要读取文件中的内容,写出具体过程代码?
a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) 请问a是什么?
{'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
lambda关键字的作用?
# 创建匿名函数的关键字
*args和**kwarg作用?
用来接收不确定个数的参数,*args通常用来接收不确定个数的非关键字参数,而**kwargs通常用来接收不确定个数的关键字参数
如何在函数中设置一个全局变量?
# 在函数中使用global关键字定义变量
filter、map、reduce的作用?
# filter() 相当于过滤器的作用
s=[1,2,3,5,6,8,9,10,25,12,30]
# 筛选出3的倍数
# 第一个参数为一个返回True或者False的函数,第二个参数为可迭代对象
# 该函数把可迭代对象依次传入第一个函数,如果为True,则筛选
d=filter(lambda x:True if x % 3 == 0 else False,s)
print(list(d))
# map()函数,
# 第一个参数为函数,依次将后面的参数传给第一个函数,并执行函数
# 如果有多个参数则,依次将后面的对应传给参数
s=map(lambda x,y:x+y,range(10),range(10))
print(list(s))
ss=map(lambda x:x*x,range(10))
print(list(ss))
# reduce()函数
from functools import reduce
# 开始的时候将可迭代对象的第一个数和第二个数当成x和y
# 然后将第一次函数的执行结果当成x,然后再传入一个数当成y
# 再执行函数
s=reduce(lambda x,y:x+y,range(101))
print(s) # 相当于0+1+2+……+99+100
什么是匿名函数?匿名函数有什么作用?
# 匿名函数也是函数的一种缩写形式。
# lambda x:x 该语句就是匿名函数
```
python递归的最大层数?
# 1000左右
什么是迭代器?什么是可迭代对象?
# 迭代器实现了iter()和next()方法,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束
# 迭代器对象实现了iter()方法
什么是生成器?
# 生成器是迭代器的一种,一个函数调用时返回一个迭代器,这个函数就叫生成器。通常带有yield
什么是装饰器及应用场景?
# 装饰器是一个以函数作为参数,并返回一个替换函数的可执行函数,是闭包的一种应用。通常用来给一个函数添加功能
什么是反射及应用场景?
写一个普通的装饰器?
from functools import wraps
def dec(func):
@wraps(func)
def inner(*args,**kwargs):
result=[func(*args,**kwargs) for i in range(5)]
return result
return inner
@dec
def add(x,y):
return x+y
print(add(1,2))
写一个带参数的装饰器。
def auth(argv):
def wrapper(func):
def inner():
if argv:
print("加上了新的功能")
func()
else:
func()
return inner
return wrapper
@auth(True)
def foo():
print("被装饰函数")
foo()
求结果:
def num():
return [lambda x:i*x for i in range(4)]
print([m(2) for m in num()])
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=[2,20]
v3=[3,20]
看代码写结果
def func(a,b=[]):
b.append(a)
return b
v1 = func(1)
print(v1)
v2 = func(2,[10,20])
print(v2)
v3 = func(3)
print(v3)
v1=[1]
v2=[10,20,2]
v3=[3]
请编写一个函数实现将IP地址转换成一个整数。
如 10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果:00001010 00000011 00001001 00001100 = ?
def ip2int(ip):
nums=ip.split('.')
# zfill()函数是补0
to_bin=[bin(int(i))[2:].zfill(8) for i in nums]
return int(''.join(to_bin),2)
i=ip2int('127.0.0.1')
print(i)
请查找一个目录下的所有文件(可能存在文件嵌套)。
求结果
import math
print (math.floor(5.5))
5
是否使用过个functools中的函数?其作用是什么?
functools.wraps()
在装饰器中用过,如果不使用wraps,则原始函数的__name__和__doc__的值就会丢失
functools.reduce()
re的match和search区别?
# match()函数是在string的开始位置匹配,如果不匹配,则返回None
# search()会扫描整个string查找匹配;也就是说match()只有在0位置匹配成功的话才有返回,
用python匹配HTMLtag的时候,<.>和<.?>有什么区别?
第一个是贪婪模式,匹配尖括号内点后所有的。
第二个是非贪婪模式,只匹配尖括号内点后满足条件的
如何生成一个随机数?
import random
print(random.int)
super的作用?
当子类中的方法与父类中的方法重名时,子类中的方法会覆盖父类中的方法,那么,如果我们想实现同时调用父类和子类中的同名方法,就需要使用到super()这个函数,用法为super().函数名()
双下划线和单下划线的区别?
"单下划线" 开始的成员变量叫做保护变量,意思是只有类对象和子类对象自己能访问到这些变量;
"双下划线" 开始的是私有成员,意思是只有类对象自己能访问,连子类对象也不能访问到这个数据。
@staticmethod和@classmethod的去区别?
实现一个单例模式(加锁)。
import time
import threading
class Singleton(object):
_instance_lock = threading.Lock()
def __init__(self):
time.sleep(1)
@classmethod
def instance(cls, *args, **kwargs):
with Singleton._instance_lock:
if not hasattr(Singleton, "_instance"):
Singleton._instance = Singleton(*args, **kwargs)
return Singleton._instance
def task(arg):
obj = Singleton.instance()
print(obj)
for i in range(10):
t = threading.Thread(target=task,args=[i,])
t.start()
time.sleep(20)
obj = Singleton.instance()
print(obj)
栈和队列的区别?
栈是先进后出,队列是先进先出
以下代码输出是什么?请给出答案并解释。
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
1,1,1
1,2,1
3,2,1
参考下面代码片段
python
class Context:
pass
with Content() as ctx:
ctx.do_something()
请在Context类下添加代码完成该类的实现
class Context:
def do.something():
print('ok')
with Content() as ctx:
ctx.do_something()
原文:https://www.cnblogs.com/shuiguoyuan/p/12366215.html