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)

 

posted on 2017-07-20 15:32  苏默守  阅读(266)  评论(0编辑  收藏  举报