Python全栈开发之基础语法

发布时间:2019-08-05 14:59:52编辑:auto阅读(1340)

    No.1 Python语言介绍

    详情见百度百科。。。

    No.2 Python是一门怎么样的语言

    详情在百度百科。。。

    No.3 Python能做什么

    网络应用、桌面应用、系统运维、机器学习、科学计算。。。

    • 网络应用 Django/Flask/Tornado
    • 桌面应用 PyQt/PySide/wxPython/PyGTK
    • 系统运维 psutil/IPy/dnspython/difflib
    • 机器学习 Scikit-Learn/Statsmodels/PyMC/Shogun
    • 科学计算 NumPy/SciPy/Matplotlib

      No.4 Python的优缺点

    • 简单,开发效率高,高级语言,跨平台。。。
    • 速度慢,代码不能加密,GIL锁。。。

      No.5 Python的安装

    • Windows 下载Anaconda,点点点。。。
    • Linux 下载Anaconda,解压,安装。。。

      No.6 注释

    • 单行注释 # 一行
    • 多行注释 """一堆""" OR '''一堆'''

      No.7 关键字

    • 具有特殊功能的标识符,这就是所谓的关键字
      import keyword
      print(keyword.kwlist)

      No.8 格式化

    格式符号 备注
    %c 字符
    %s 字符串
    %i 有符号十进制整数
    %d 无符号十进制整数
    %o 八进制整数
    %x 十六进制整数(小写字母)
    %X 十六进制整数(大写字母)
    %f 浮点数

    No.9 变量

    Python的变量就是一个便利贴

    • 变量名只能是字母、数字、下划线的组合
    • 变量的第一个字符不能是数字
    • 变量名不能和关键字重名

    No.10 运算符

    • 算术运算符

      运算符 备注
      +
      -
      *
      **
      /
      // 整除
      %
    • 赋值运算符

      运算符 实例
      = a = 1
      += a += 1 <=> a = a + 1
      -= a -= 1 <=> a = a -1
      *= a = 2 <=> a = a 2
      **= a = 2 <=> a = a 2
      /= a /= 2 <=> a = a / 2
      //= a //= 2 <=> a = a // 2
      %= a %= 2 <=> a = a % 2
    • 关系运算符

      运算符 备注
      == 等于
      != 不等于
      > 大于
      < 小于
      >= 大于等于
      <= 小于等于
    • 逻辑运算符

      运算符 备注
      and x和y均为真,返回真
      or x或者y为真,返回真
      not x为假,返回真
    • 位运算符

      运算符 备注
      & 按位与运算符,参与运算的两个值,如果相同位都为1,则结果为1
      | 按位或运算符,参与运算的两个值,只要相同位一个为1,则结果为1
      ^ 按位异或运算符,参与运算的两个值,当相同位不同时,则结果为1
      ~ 按位取反运算符,即1变0,0变1
      << 左移运算符,运算符的各二进制位向左移动若干位
      >> 右移运算符,运算符的各二进制位向右移动若干位
    • 成员运算符

      运算符 备注
      in 如果在序列中存在返回真
      not in 如果在序列中不存在返回真
    • 身份运算符

      运算符 备注
      is 判断两个标识符是不是引用自一个对象
      is not 判断两个标识符是不是不是引用自一个对象

    No.11常用数据类型转换

    • index(x[,base]) 将x转换为一个指定进制的整数,默认为十进制
    • long(x[,base]) 将x转换为一个指定进制的整数,默认为十进制
    • float(x) 将x转换为一个浮点数
    • str(x) 将x转换为一个字符串
    • repr(x) 将x转换为表达式字符串
    • eval(x) 用来计算字符串表达式并返回一个对象
    • tuple(x) 将x转换成一个元祖
    • list(x) 将x转换成一个列表
    • chr(x) 将x(整数)转换为字符形式
    • ord(x) 将x(字符)转换成整数形式
    • hex(x) 将x转换成十六进制
    • oct(x) 将x转换成八进制
    • bin(x) 将x转换成二进制

    No.12 判断语句

    • if-else
    if 条件:
        do something
    else:
        do something
    
    • elif
      if 条件:
      do something
      elif 条件:
      do something
    • if嵌套
      if 条件:
      if 条件:
          do something
      elif 条件:
          do something
      elif 条件
      if 条件:
          do something
      elif 条件:
          do something
      else:
      if 条件:
          do something
      elif 条件:
          do something

    No.13 循环语句

    • while
    while 条件:
        do something
    栗子:
    i = 0
    sum = 0
    while i < 100:
        sum += i 
        i += 1
    
    • while循环嵌套
    while 条件:
        do something
        while 条件:
            do something
    栗子:
    i = 1
    while i <= 9:
        j = 1
        while j <= i
            print("%d*%d=%-2d"%(j,i,i*j),end='')
            j += 1
        print('\n')
        i += 1
    • for循环

      在Python中for循环可以遍历任何序列

    for 临时变量 in 序列:
        do something
    else:
        do something
    栗子:
    name = 'kernel'
    for i in name:
        print(i)
    • break和continue
      break的作用是用来结束整个循环
      栗子:
      i = 0
      while i <= 100:
      i += 1
      if i == 5:
          break   

      continue的作用是用来结束本次循环,然后执行下一次循环

    栗子:
    i = 0
    while i <= 100:
        i += 1
        if i == 5:
            continue

    No.14 简述拷贝

    要理解深浅拷贝需要理解下面的概念
    变量->引用->对象->切片->拷贝
    变量是便利贴
    对象是被分配的一块内存,存储其代表的值
    引用是自动形成的从变量到对象的指针
    不变对象是指一旦创建就不可以改变的对象,例如字符串、数字、元组
    可变对象是指可以改变的对象,例如列表、字典

    • 不可变对象的赋值
    a = 1
    b = a
    print(a) # 1
    print(b) # 1
    b = 2
    print(a) # 1,并没有随着b的改变而改变
    print(b) # 2
    
    • 可变对象的赋值
    a = [1,2,3,4]
    b = a
    print(a) # [1,2,3,4]
    print(b) # [1,2,3,4]
    b[3] = 5
    print(a) # [1,2,3,5]
    print(b) # [1,2,3,5]
    • 深浅拷贝

      浅拷贝:只拷贝顶级的对象

      深拷贝:拷贝所有对象

    import copy
    l1 = [1,2,3,4,['a','b']]
    l2 = copy.copy(l1)
    print(l1) # [1,2,3,4,['a','b']]
    print(l2) # [1,2,3,4,['a','b']]
    l2[0] = 11
    l2[4][0] = 'aa'
    print(l1) # [11,2,3,4,['a','b']]
    print(l2) # [11,2,3,4,['aa','b']]
    import copy
    l1 = [1,2,3,4,['a','b']]
    l2 = copy.deepcopy(l1)
    print(l1) # [1,2,3,4,['a','b']]
    print(l2) # [1,2,3,4,['a','b']]
    l2[0] = 11
    l2[4][0] = 'aa'
    print(l1) # [11,2,3,4,['aa','b']]
    print(l2) # [11,2,3,4,['aa','b']]

    结论:
    深浅拷贝都是对源对象的复制,占用不同的内存空间
    如果源对象只有一级目录的话,源做任何改动,不影响深浅拷贝对象
    如果源对象不止一级目录的话,源做任何改动,都要影响浅拷贝,但不影响深拷贝
    序列对象的切片其实是浅拷贝,即只拷贝顶级的对象

关键字