1、深拷贝与浅拷贝的区别:
深拷贝和浅拷贝之间的区别在于是否复制了子对象。
在深拷贝的时候两个对象是完全分离的,改变其中一个,不影响另一个对象;
浅拷贝的时候两个对象并未完全分离,改变顶级对象的内容,不会对另一个对象产生影响,但改变子对象的内容,则两个对象同时被改变。
这种差异的产生,取决于拷贝子对象时复制内存还是复制指针。
深拷贝为子对象重新分配了一段内存空间,并复制其中的内容;
2、简述sys.path的作用以及模块命名注意事项
sys.path是python搜索模块路径的默认路径集,可以通过sys.path.append为当前的python添加新的路径。
模块命令注意事项:1、不要与python默认模块名一致
2、不要使用连字符-
3、使用范围在数字字母下划线中选取。
3、 简述re模块中 match、search以及findall方法的特点
re模块中:
match是从字符串头开头匹配的
search是找出字符串中第一个匹配的,serarch后面配合group()使用
findall是找出字符串中所有相匹配的
4、代码实现:1*2+3*4+5*6+7*8...+99*100
第一种方法:
res=0 res_out=0 for i in range(0,101): if i%2!=0: res=i*(i+1) res_out=res_out+res print(res_out)
第二种方法:
import re def cheng(chengfa): if "*" in chengfa: n1,n2=chengfa.split("*") chengfa_filter=float(n1)*float(n2) return chengfa_filter def jia(jiafa): if len(jiafa)!=0: if "+" in jiafa: n3,n4=jiafa.split("+") jiafa_filter=float(n3)+float(n4) elif len(jiafa)==0: jiafa_filter=jiafa return jiafa_filter def jisuan(yunsuan_filter): try: result = re.search('d+.*d*[*]d+.*d*',yunsuan_filter).group() if len(result)!=0: chengfa_str=cheng(result) yunsuan_filter=yunsuan_filter.replace(result,str(chengfa_str)) except: try: result2=re.search('d+.*d*[+]d+.*d*',yunsuan_filter).group() jiafa_str=jia(result2) yunsuan_filter=yunsuan_filter.replace(result2,str(jiafa_str)) except: return yunsuan_filter return jisuan(yunsuan_filter) s="1*2+3*4+5*6+7*8+9*10" res=jisuan(s) print(res)
5、Python中两种序列化Json和Pickle的区别
JSON是一种轻量级的数据交换格式。所有语言都通用,可以与不同语言进行交互,但默认只是支持最简单的转换类型。JSON与XML相同,但比XML更为简洁方便。PICKLE与JSON用法大体一样,但是pickle支持python特有类型 和 python数据类型间的转换。
6、请用装饰器实现在不改变函数调用者的代码基础上,实现在函数执行前后分别打印"before" 和 "after"。
def f1(arg): return arg + 1 def f2(arg1, arg2): return arg1 + arg2
解:def bef_aft(func): def PRint(*arg,**kwarg): print("before".center(50,"-")) res=func(*arg,**kwarg) print(res) print("after".center(50,"-")) return res return PRint @bef_aft def f1(arg): return arg + 1 @bef_aft def f2(arg1, arg2): return arg1 + arg2 f1(2) f2(5,2)
7、创建6位的随机验证码(含数字和字母)
import random def creat(): res="" for i in range(0,6): Da=chr(random.randint(65,90)) Xiao=chr(random.randint(97,122)) Num=random.randint(0,9) result=random.choice([Da,Xiao,Num]) res = res+str(result) return res resul=creat() print("验证码为:%s"%resul)