Django-1.概论和python语法

  • Django使用Python创建的,Youtube、Instagram;
  • 可以作为Web、APP、小程序等各种程序的后端;
  • 项目运行瓶颈:数据库查询、网络带宽/延迟、硬盘读写速度等;
  • 计算密集型的模块使用可以用C/C++实现,然后编译成动态链接库再import进来;
  • 计算密集型的微服务可以通过thift等工具对接,微服务的Server端代码可以用C/C++语言实现;
  • 数据库(服务器端)
    • disk:本地、云盘
    • mysql:代码文本等;
    • Redis:属于内存数据库,用来存储数据(内存中的map)
  • 数据库(客户端)

    • web storage
    • disk内存
  • 深拷贝和浅拷贝

    • 浅拷贝:【1‘43’22】b=a[:],把a的第一层复制过去;之后改变b,a不会发生改变

    • 深拷贝:递归深度遍历复制,无论b如何改变a都不会改变

    • 示例:

      • 浅拷贝

        image-20211101102326919

        c[3][0] = 9; c[1]=0;

        image-20211101102429643

        可以看到,浅拷贝可以改变的元素只有第1层;

      • 深拷贝 import copy

        image-20211101102651638

        c[3][3][0] = 100;

        image-20211101102750906

  • 解放数组*,解放dict:**

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def g(a,b,c,d):
    print(a,b,c,d)
    return

    a = [1,2,3,4]
    g(*a) # 1 2 3 4

    b = {'a':2, 'b':3, 'c':4, 'd':5}
    g(**b) # 2 3 4 5
  • lambda表达式

    1
    2
    3
    4
    5
    6
    7
    def f(x,y):
    return x + y

    g = lambda x, y: x + y

    f(3, 4) #7
    g(3, 4) #7
  • 元组在定义的时候可以省略小括号

    1
    2
    a = (1, 2, 3)
    b = 1, 2, 3
  • 对应元素zip

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    a = [1, 2, 3]
    b = ['a', 'b', 'c']
    for i in range(len(a)):
    print(a[i], b[i])

    for x, y in zip(a, b):
    print(x, y)

    # 1 a
    # 2 b
    # 3 c
  • with可以增加文件操作的鲁棒性;

  • static静态变量:所有对象公用该变量;

  • 所有的成员函数都需要self;

相关网址