串讲-Python基础练习

1.列举了接的编程语言及语言间的区别

  • Python 是一个解释型的脚本语言,运行速度慢,代码简洁,学习时间短,开发速度快

  • Java 编译型语言,运行速度适中,开发效率适中,目前最流行的语言

  • c/c++ 现存的编程语言的老祖,执行速度最快,代码复杂,开发难度大

  • go 编程界的小鲜肉,高并发能力最高,代码像Python一样简洁,运行速度和c一样快

  1. 列举Python2和Python3的区别

    • Python2:

      • 源码不统一,源码重复

      • input接受到的是数据本身

      • 整除返回的是整数(向下取整)

      • 打印range(10) 是一个列表,内容是[0-9]

      • 整形型,长整型

      • 默认编码是ascll,不支持中文名

    • Python3:

      • 源码统一,源码不重复

      • input接收到的是字符串

      • 整除返回的是浮点数(小数)

      • 打印range(10)就是本身

      • 全是整型

      • 默认编码是Unicode,支持中文

  2. 看代码写结果

    • 1

    • 0

  3. 比较下值有啥不同

    • v1和v2都是一个列表里面有3个元素

    • v3是一个列表里面有三个元租

  4. a,b=b,a

  5. 引号的区别

    • 单引号和双引号基本没什么区别,有时需要单引号里面套双引号或双引号套单引号

    • 三引号是多行注释,注释的代码不会执行

    • 三引号也可以是多行代码,会按照原始代码输出

  6. is和==的区别

    • is 表示判断对象的id是否相同

    • == 表示判断对象的值是否相同

  7. tuple和list的转化

    • tuple-->list list(tuple)

    • list -->tuple tuple(list)

  8. s=s[::-1]

  9. ..

    • 交集 s&s1

    • 并集 s|s1

    • 差集 s-s1

  10. x,y不是int数据类型

  11. Python中如何拷贝一个对象

    • 复制

    • 深浅拷贝

  12. 赋值,深浅拷贝的区别

    • 赋值,相当于给一个东西起了两个名字

    • 浅拷贝 只拷贝第一层元素,只修改第一层不可变数据的时候不进行改变,给可变数据类型添加数据的时候源数据会改变

    • 深拷贝 不可变数据类型共用,可变数据类型新开辟空间也共用

  13. pass的作用

    • 占位,让代码能继续执行下去

  14. 。。

    • b=[1,2,4,5,['b','c','d'],5]

    • c = [1,2,4,5,['b','c','d']]

    • d = [1,2,4,5,['b','c','d'],5]

  15. 99乘法表

    for i in range(10):
      for j in range(i):
          j = j+1
          print(f'{j}x{i}={j*i}',end=' ')
      print('')
  16. 斐波那契数列

    def fib_loop(n):
    a, b = 0, 1
    for i in range(n + 1):
      a, b = b, a + b
    return a
    for i in range(20):
    print(fib_loop(i), end=' ')
  17. 去除列表中的重复值

    a=[1,2,3,3,4,5,5]
    a=list(set(a))
    print(a)
  18. 读取大文件

    def read_line(path):
      with open(path, 'r', encoding='utf-8') as f:
          line = f.readline()
          while line:
              line = f.readline()
              print(line)
  19. a = dict(zip(("a","b","c","d","e"),(1,2,3,4,5))) a是什么

    {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
  20. lambda关键字的作用

    • 匿名函数,这个函数没有名字,不能在别的地方调用

  21. *args和**kwargs

    • *args 接收多余的位置参数转化为元祖

    • *kwargs 接收多余的关键字参会素转化为字典

  22. 如何在函数中声明一个全局变量

    • 在函数的内部,通过global声明,使在函数内部中设置一个全局变量,这个全局变量可以在任意的函数中进行调用

  23. filter,map,reduce的作用

    • filter 过滤函数 指定过滤的规则 要过滤的数据

    • map 映射函数 将可迭代对象中每一个元素都执行指定的函数

    • reduce (函数,可迭代对象)累计算

  24. 。。

    • 匿名函数也叫一行函数,就是没有名字的函数

    • lambda==def

    • 不能在别的地方调用

    • 省去定义的过程,代码简洁

  25. Python中递归的最大层数

    • windows中最大的998

  26. 。。

    • 迭代器:具有iter()和next()两个方法

    • 迭代对象:只要具有iter()方法

  27. 生成器

    • 生成器的本质就是迭代器

    • 生成器是程序员自己写的一个迭代器

    • 在函数体中出现yield就表明这是一个生成器

  28. 装饰器

    • 开放封闭原则

    • 在不修改原始代码和调用代码的前提下对待吗进行添加功能和装饰

  29. 反射

    • 通过字符串操作对象的属性个方法

  30. 普通装饰器

    def warp(func):
      def inner(*args,**kwargs):
          print('222')
          func()
          print('333')
      return inner


    @warp
    def foo():
      print('11111')
    foo()
  31. 有参装饰器

    def auth(hh):
      def warp(func):
          def inner(*args,**kwargs):
              if hh:
                  print('222')
                  func()
                  print('333')
              else:
                  print('heihei')
          return inner
      return warp


    @auth(0)
    def foo():
      print('11111')
    foo()
  32. ...

    • [6,6,6,6]

  33. def func(a,b=[]) 这种写法有什么坑?

    • 第一次执行的时候实例化了一个列表,第二次执行的时候用的还是第一次实例的列表,以此类推

  34. 。。

    • v1=[1]

    • v2 = [10,20,2]

    • v3 = [1,3]

  35. ..

    • v1=[1]

    • v2 = [10,20,2]

    • v3 = [1,3]

  36. ..

  37. .

  38. 5

  39. reduce (函数,可迭代对象)累计算

  40. .

    • match 从开头位置查找,找不到就返回none

    • search 任意位置开始查找,找到一个就停止,找不到返回none

猜你喜欢

转载自www.cnblogs.com/shiguanggege/p/12366018.html