• 面试题2.19


    1.python 中定义函数时如何写可变参数与关键字参数
    可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。这些可变参数在函数调用时自动组装为一个tuple
    而关键字参数允许你传入0个或任意个含参数名的参数,这些关键字参数在函数内部自动组装为一个dict
    def calc(*args):
        a = sum(args)
        print(args)
        return a
    li = [1,6,8]
    print(*li)
    s = calc(*li)
    print(s)
    
    
    
    def d(**kwargs):
        print(kwargs)
    dic = {'name':'ldq','age':18}
    d(**dic,have='qq')
    2.什么是lambda表达式
    本质是匿名函数,通常是在需要一个函数,但这个函数又不经常使用,但是又不想费神去命名一个函数的场合下使用
    3.re模块的match()和search()有什么区别?
    match()函数只检测RE是不是在string的开始位置匹配,
    search()会扫描整个string查找匹配;
    也就是说match()只有在0位置匹配成功的话才有返回,
    如果不是开始位置匹配成功的话,match()就返回none。
    
    例如:
    print(re.match(‘super’, ‘superstition’).span())   会返回(0, 5)
    而print(re.match(‘super’, ‘insuperable’))   则返回None
    
    search()会扫描整个字符串并返回第一个成功的匹配
    例如:print(re.search(‘super’, ‘superstition’).span())返回(0, 5)
    print(re.search(‘super’, ‘insuperable’).span())返回(2, 7)
    4.1 or 21 and 2 输出分别是什么?为什么?
    1 or 2输出的是:11 and 22
    1是Ture 当使用or时,判断第一个为Ture时 就打印第一个数,不去考虑后面的数
    and 是从左到右计算表达式,若值都为Ture时,则取最右边的的值
    5.1 < (2 == 2) 和 1 < 2 == 2结果分别是什么?为什么?
    Flase:即1<True
    true: 即True == 2
    6.[i % 2 for i in range(10)] 和 (i % 2 for i in range(10)) 输出结果分别是什么
    一个是列表对象,一个是生成器对象
    7.python2 与 python3 有哪些显著地区别
        统一了字符编码的支持
        增加一些新语法:print 改为函数
        python3中没有经典类,只有新式类
        xrange 重命名为range
        python2的默认编码是asscii,python3默认用utf-8编码
        字符串是最大的变化之一,这个变化使得编码问题降到了最低可能。在 Python2 中,字符串有两个类型,一个是 unicode,一个是 str,前者表示文本字符串,后者表示字节序列,不过两者并没有明显的界限,开发者也感觉很混乱,不明白编码错误的原因,不过在 Python3 中两者做了严格区分,分别用 str 表示字符串,byte 表示字节序列,任何需要写入文本或者网络传输的数据都只接收字节序列,这就从源头上阻止了编码错误的问题。
    8.描述 Unicode utf-8 gbk 等编码之间的关系?
    Unicode 可以通过 编码 转化为bytes类型
    bytes可以通过相同方式的解码转化为Unicode
    9.请描述with的用法?如果自己的类需要支持with语句,应该怎样书写?
    用法 with 通过对象的__entry__()方法进入,无论执行过程中是否有异常,最后通过__exit__()结束
    只要保证自己的类中有__entry__()与__exit__()方法即可使用with
    class Open:
        def __init__(self,filepath,mode='r',encoding='utf-8'):
            self.filepath=filepath
            self.mode=mode
            self.encoding=encoding
    
        def __enter__(self):
            # print('enter')
            self.f=open(self.filepath,mode=self.mode,encoding=self.encoding)
            return self.f
    
        def __exit__(self, exc_type, exc_val, exc_tb):
            # print('exit')
            self.f.close()
            return True
        def __getattr__(self, item):
            return getattr(self.f,item)
    
    with Open('a.txt','w') as f:
        print(f)
        f.write('aaaaaa')
        f.wasdf #抛出异常,交给__exit__处理
    10.python中如何判断一个对象是否可调用对象?哪些对象可以是可调用对象?如何定义一个类,使对象本身就是可调用对象?
    判断是否有call方法
  • 相关阅读:
    除了Web和Node,JavaScript还能做什么
    从Hybrid到React-Native: JS在移动端的南征北战史
    当React开发者初次走进React-Native的世界
    【React-Native】React-Native组件样式合集
    【github】论怎么去写一个高大上的ReadMe
    https://github.com/sindresorhus/awesome-nodejs 清单
    https://github.com/akullpp/awesome-java 清单
    https://github.com/ChristosChristofidis/awesome-deep-learning 清单
    https://github.com/josephmisiti/awesome-machine-learning 清单
    SpringBoot 为什么能够自动的注入一些常用的Bean ?详细分析SpringBoot 自动配置的实现
  • 原文地址:https://www.cnblogs.com/ldq1996/p/8454247.html
Copyright © 2020-2023  润新知