zoukankan      html  css  js  c++  java
  • Python面试常见习题

    1、逻辑运算常见习题举例:
    print(1 or 2 and 3 or 4)
    print(2 > 1 or 1 and 3 < 2)
    

     答案:

      2、编码知识

    1 1
    2 True
    View Code

    ASCII的作用:

    1 ASCII 是二进制与英文大小写字母,标点符号,特殊符号的对应表,共8位,最左边一位为0是预留位。
    View Code

     打印出列表里的所有元素:

    l1 = [1,2,3,'name',[2,3,'age'],7]
    for i in l1:
        if type(i) == list:
            for j in i:
                print(j)
        else:
            print(i)
    View Code

     3、a=1,b=2,用一行代码将a、b的值互换?

    #将a和b的值互换:
    a = 1
    b = 2
    a,b = b,a
    print(a,b)

    4、dict.fromkeys的用法

    #dict.fromkeys的用法
    #例子1
    dic = dict.fromkeys([1,2,3],[])
    print(dic)     #{1: [], 2: [], 3: []}
    dic[2].append('alex')   #{1: ['alex'], 2: ['alex'], 3: ['alex']}
    print(dic)
    #例子二
    dic1 = dict.fromkeys(['Q','w'],['a','b'])
    print(dic1)   #{'Q': ['a', 'b'], 'w': ['a', 'b']}
    dic1['w'].append('d')
    print(dic1)   #{'Q': ['a', 'b', 'd'], 'w': ['a', 'b', 'd']}
    

    5、浅copy和深copy

    浅copy的引入:

    引入浅copy
    #只是第一层的列表变化
    l1 = [1,2,3]
    l2 = l1[:]
    l1.append(123)
    print(l1)    #[1, 2, 3, 123]
    print(l2)    #[1, 2, 3]
    #第二层列表改变
    l3 = [1,[2,3],4]
    l4 = l3[:]    #实质上是浅copy
    l3[1].append(666)
    print(l3)    #[1, [2, 3, 666], 4]
    print(l4)    #[1, [2, 3, 666], 4]
    

     浅copy:

    #浅copy
    #对于浅copy来说,第一层都是独立的内存地址,从第二层开始都是指向同一个内存地址,一变全都变。
    l5 = [9,8,[7,6],5]
    l6 = l5.copy()
    l5[2].append(888)
    print(l5,id(l5),id(l5[2]))  #[9, 8, [7, 6, 888], 5] 31820816 31820856
    print(l6,id(l6),id(l6[2])) #[9, 8, [7, 6, 888], 5] 31819336 31820856
    

     深copy:#深copy

    #对于深copy来说,无论多少层,在内存中,都是两个独立的内存地址。
    import copy
    l7 = [9,8,[7,6],5]
    l8 = copy.deepcopy(l7)
    l7[2].append(888)
    print(l7,id(l7),id(l7[2])) #[9, 8, [7, 6, 888], 5] 41955896 41955816
    print(l8,id(l8),id(l8[2])) #[9, 8, [7, 6], 5] 41957976 41957936
     

     6、列表去除重复元素:

     可以用两种方法实现,用算法去做,也可以先将列表转换成字典在转换回来。利用字典的元素是不重复的特性。

     list = [1,2,3,4,4,5,6,6,6,7]

    set1 = set(list)

    list = list(set1)

    print(list)

     7、三元运算法则

    #三元运算法则
    def max(x,y):
        z = x if x > y else y
        return z
    ret = max(100,200)
    print(ret)      #200
    

     8、globals和locals

    globals返回的是当前模块的全局变量

    locals返回的是局部变量,locals返回的是当前所在最小命名空间的局部变量的“拷贝”,返回的变量都是原有变量的拷贝。

     9、形式参数的动态参数

    #当默认参数是可变数据类型时,
    #第一次调用函数和第二次调用函数用的是同一个l1列表
    def func(name,l1 = [ ]):
        l1.append(name)
        print(l1,id(l1))
        return(l1,id(l1))
    print(func('小明'))
    print(func('小芳'))
    

      答案:

    形式参数动态参数

     10、闭包

    怎样判断闭包和闭包的好处。

    闭包函数:内部函数包含对外部作用域而非全剧作用域变量的引用,该内部函数称为闭包函数,函数内部定义的函数称为内部函数。

    def func():
        name = 'eva'
        def inner():
            print(name)
        return inner
    f = func()
    f()
    

     闭包函数的用处:Python内部有一个机制,当遇到闭包函数时,他会在内存中开启一个内存空间,不会关闭。

    怎样判断闭包函数:判断闭包函数的方法__closure__

    #怎样判断闭包函数:
    def wrapper():
        def inner():
            name = '小明'
            print(name)
        print(inner.__closure__)  # 打印出来的值是None,就不是闭包函数
        inner()
    wrapper()
    

      

    
    
  • 相关阅读:
    MySQL 使用 ON UPDATE CURRENT_TIMESTAMP 自动更新 timestamp (转)
    MySQL数据类型:UNSIGNED注意事项(转)
    MySQL慢查询参数
    elasticsearch中mapping的_source和store的笔记(转)
    python 使用 elasticsearch 常用方法(聚合)
    python 使用 elasticsearch 常用方法(检索)
    python 使用 elasticsearch 常用方法(索引)
    ElasticSearch集群状态查看命令大全(转)
    用C#实现修改网页数据
    基于jQuery可悬停控制图片轮播代码
  • 原文地址:https://www.cnblogs.com/Ming-Hui/p/8328535.html
Copyright © 2011-2022 走看看