Bootstrap

python基础语法

  1. Python 解释交互(IDLE)型面向对象语言,简单
  2. Python 应用范围:爬虫、数据分析、机器学习、app开发、web开发、自动化运维测试、游戏开发
    • 爬虫:批量自动获取海量数据信息
    • 数据分析:营销手段
    • 机器学习:人工智能,谷歌阿尔法狗,监督、半监督、深度学习(英语、高等数学要求高)
    • 自动化运维:持续交付业务需求,开源运维工具大多是python写的,可以定制化需求
    • 网站开发:框架库
  3. Python 环境:
    • 解释器:将python语言翻译成计算机可执行的二进制语言
    • 运行环境:PyCharm、vscode、jupyter
    • 运行:doc python xxx.py ;pycharm:要运行的文件右键运行
    • 检查python
  4. 常见的python 错误类型:
    • 缩进:IndentationError: unexpected indent(单独运行print函数前面不能有空格或缩进)
    • 函数拼写错误:NameError: name ‘print1’ is not defined. Did you mean: ‘print’? || SyntaxError: invalid syntax
    • 标点符号错误:SyntaxError: invalid character ‘”’(编程语言英文符号)
    • debug:代码执行顺序+变量变化 端点方式同java
  5. 注释:三个单引号或者三对双引号
  6. print函数:
    • print (*objects, sep=’ ‘, end=’ In’, file=sys. stdout, flush=False)
    • 默认多个参数空格隔开换行结尾 print(“hello world”,“0”,“1”)
    • 可以使用end来自定义结尾 print(“hello world”,“0”,“1”,end=“end”)
  7. 变量 a=10 变量名称 a 、变量存储的数据 10 、变量地址 地址 、变量数据类型 int
    • 首次使用变量会在内存中划分空间,并初始化值
    • 再次使用变量不再划分空间,修改原空间中的值(要分可变对象和不可变对象,不可变对象重新分空间)
    • 标识符 作为对象名称,比变量名大一些,有特殊规则
    • 只能由数字、字母、下划线组成
    • 不能以数字、关键字开头
    • 区分大小写
    关键字 [‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
  8. 变量命名规则:
    • 大驼峰
    • 小驼峰
    • 下划线(推荐)
  9. 数值类型
    • int 整数
    • float 小数
    • bool 逻辑值 True(1) False(0)
    • complex 复数 1+2j
  10. 字符串 三引号用来定义多行字符串
    • 转义字符:\
    • s1+s2 字符串连接
    • s1*n 重复输出n次s1
    • tmp in st1 是否包含
    • not in
    • r\R 原样输出R print(r’\n’) 结果为\n
    • .title()首字母大写
    • .upper()全部大写
    • .lower()全部小写
    • .rstrip()删除开头和结尾处空行,删除后需要重新赋值给变量,否则删除无效
  11. 格式化输出 定义模板,输出按照模板方式输出,常用的:
    • %s 字符串
    • %c 字符
    • %d 有符号十进制整数
    • %f 浮点数 %.2f 保留两位小数
    • print(%s,%d %(“”,))
    • format() {}代替%
    • print(‘{},{},{}’.format(1,2,3))
    • print(‘{index_0} {index_1} {index_0}’.format(0,1)) 根据索引格式化
    • print(‘{name} {age}’.format(name=‘’,age=1)) 根据变量格式化
    • f’{},{}’ print(f’名字{name},年纪{age}')
  12. 转义字符 \
    • \n 换行
    • \t 制表符
  13. 运算符 ** 幂 最高优先级; \除法整数部分
  14. 类型转换
    • 数值类型 int float bool complex
    • 数据结构类型 str list dict tuple
  15. 输入函数 input
    • name = input(“”)
  16. 条件判断
    if 要判断的条件:
    条件成立时,要做的事
    elif 再次判断的条件:
    else
    条件不成立时,要做的事
  17. 循环
    • while 条件:
      条件满足时事件
    • for 临时变量 in 待处理数据集:
      print(‘’)
    • range(index1,index2)
  18. 函数
    • def 函数名():
      函数体
      return 返回值
    • none==false
    • 注释在方法体内,双引号多行注释
    • global 定义全局变量
    • 函数与方法的区别在于方法存在类中,函数不存存在
  19. 数据容器 用来存储多个元素的数据类型
    • list(列表) tuple(元组) str(字符串) set(集合) dict(字典)
    • list(列表)
    • 格式 [1,2,3,4]
    • 存储数据可以为任意类型 包括list
    • 取值 list[1] list[2] list[3] 或 list[-1] list[-2] list[-3] (倒序)
    • list[[1,2,3,4],[5,6,7,8]] 6=list[1][1]
    • 常用方法:
    • 查询列表中某元素的正向索引:列表.index(“要查找的元素”)
    • 修改:列表[索引]=新值
    • 指定位置插入元素:列表.insert(要插入的位置,元素)
    • 尾部插入元素:列表.append(“元素”)
    • 批量追加元素到列表尾部:列表1.extend(列表2)
    • 删除:del 列表[下标] 或 列表.pop(下标) (pop会返回要删除的元素)
    • 删除指定元素:列表.remove(要删除的元素) (只会删除一个)
    • 清空列表:列表.clear()
    • 统计列表中有多少指定元素:列表.count()
    • 计算列表元素总数量:len(列表)
    • 特点:有序、可重复、无数据类型限制、可修改、最多2**63-1
      • 循环: while 自定义初始化为0的变量<len(要遍历的列表)
      • for element in 列表
      • 元组(不可修改)
      • 格式 (1,2,3,4) 当存储单个字符串时,后面需要加上逗号,不然会判定类型为字符串(“hello”,)
      • 元组中嵌套list,list值是可以修改的
      • 元组特点:
      • 可以容纳多个数据
      • 数据可以是不同类型
      • 除list类型外,其他数据不可以修改
      • 允许重复数据
      • 支持for循环
  20. 字符串
    • 下标取值 字符串[index]
    • 替换 字符串.replace(被替换字符串1,替换成字符串2) 返回一个新字符串,老字符串不允许修改
    • 字符串分割 字符串.split(分隔符字符串) 字符串本身不变,只是得到一个新的列表
    • 规整操作 字符串.strip(“前后要去除的指定字符”) 默认去除字符串前后空格、回车、换行符
    • 统计字符串中某字符中的出现次数,字符串.count()
    • 统计字符串中某字符中的长度,len(字符串)
    • 字符串特点
      • 只支持存储字符类型
      • 不可修改
      • 长度任意
      • 支持下标索引
      • 允许重复字符
      • 支持for循环
  21. 序列:内容连续,有序,有索引,列表、元组、字符串都是序列
    • 切片:从序列中取出一个子序列
    • 语法:序列[起始下标,结束下标,步长]
    • 切片会新生成一个序列,原序列并不影响
    • 起始省略默认从头开始,结尾省略默认到尾,步长省略默认为1,负数为倒序
  22. 集合 set()或者{} 不可重复
    • 列表可修改、支持重复元素且有序;元组、字符串不可修改、支持重复元素且有序
    • 添加:add() 重复自动去重
    • 移除:remove()
    • 随机取出:pop()
    • 清空:clear()
    • 求两个集合差集 集合1有,集合2没有 集合1.difference(集合2)
    • 消除差集,把集合1中删除集合2相同元素 集合1.difference_update(集合2)
    • 合并2集合:集合1.union()
    • 统计集合元素数量 len()
    • 循环 for循环,集合没有索引,所以不支持while
    • 特点:
      • 可存储不同数据类型
      • 没有索引,所以无序
      • 不可重复
      • 可以修改
  23. 字典 key-value 形式
    • 语法 {key:value,key:value} 或 {} 或 dict()
    • key不允许重复,不会报错,但是会覆盖
    • 不允许使用下标索引 字典[key]
    • 字典不允许为key,value可以为任意数据类型
    • 修改 字典[key]=value key存在则更新,不存在则修改覆盖
    • 删除 字典.pop(key) 取到value并从字典中移除
    • 清空 字典.clear()
    • 获取全部key 字典.keys()
    • for循环 for key in keys for key in 字典
    • 字典中元素数量 len(字典)
  24. 数据类型使用场景
    • 列表:一批数据,可修改、可重复的存储场景
    • 元组:一批数据,不可修改、可重复的存储场景
    • 字符串:不可修改的字符串
    • 集合:一批数据,去重场景
    • 字典:一批数据,可用key检索value的存储场景
  25. 数据容器的基本操作
    • 长度:len()
    • 容器内最大元素:max()
    • 容器内最大元素:min()
    • 列表、元组、字符串、集合、字段转列表:list()
    • 列表、元组、字符串、集合、字段转元组:tuple()
    • 列表、元组、字符串、集合、字段转字符串:str()
    • 列表、元组、字符串、集合、字段转集合:set()
    • 排序:sorted(容器,reverse=True 反向排序)结果将成为列表对象
  26. 字符串比较大小,根据ascii码表按位比较其中一位大,结束比较
  27. 函数多返回值:
    • def 函数名(): return 1,2,3
    • x,y,z = 函数名()
  28. 函数4种传参形式:
    • 位置参数 函数名(参数1,参数2)
    • 关键字参数 函数名(参数1=“”,参数2=“”)
    • 缺省参数 def 函数名(a,b,c=1): 默认参数c不传的时候默认为某个值,默认参数必须写在最后面
    • 可变参数(不确定传入的参数有多少个)
      • 位置参数的不定长 def 函数名(*args) 函数名(参数1,参数2) 传入参数为元组存储
      • 关键字参数的不定长 def 函数名(**kwargs) 函数名(key=value,key2=value2) 传入参数为字典存储
  29. 匿名函数
    • 函数作为参数传递 传入计算逻辑
    def test_func (compute):
    result = compute(1, 2)
    print (result)
    def compute(x, y) :
    return x + y 
    
    • lambda关键字定义匿名函数,没有名称,临时使用一次
      • 语法:lambda 传入参数:函数体(一行代码)
      • lambda是关键字,表示定义匿名函数
      • 传入参数表示匿名函数的形式参数,如:x,y表示接受2个形式参数
      • 函数体,就是函数的执行逻辑,要注意:只能写一行代码
      def test_func (compute):
      result = compute(1, 2)
      print (result)
      
      test_func(lambda 1,2:x+y)
      
  30. 打开文件 open(name,model,encoding)
    f=open('python.txt','r',encoding="UTF-8
    #encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定
    #model:打开形式,r只读、w写入、a追加等
    #name:文件名称,可以是具体路劲
    
  31. 读取文件 文件对象.read(num) num:读取的指定长度
    • 连续使用2次read时,第二次读取起始位置为第一次的结尾
  32. 读取文件 文件对象.readlines(num) 文件按照行的方式一次性读取,返回一个列表 num读取的几行
  33. 读取文件 文件对象.readline(num) 只读取一行,返回一个列表 num为第一行的多少字节
  34. 读取文件 for循环读取文件
    for line in f:
    print(line)
    
  35. 关闭文件 close() 不关闭程序将持续占用文件
  36. with open() as f: with语法执行完之后自动关闭文件
  37. 写入文件 write()
  38. 写入文件 持久化到硬盘中 flush() close()内置flush功能 文件不存在时会创建,存在时会覆盖原本内容
  39. 追加文件 w模式替换成a模式 文件不存在时会创建,存在时会追加内容
    40.异常格式
    • 捕获单个异常
          try:
          with open("main.py","r") as f:
              print(f"打开文件{f.read()}")
              except FileNotFoundError:
                       print("处理异常")
           ```
    * 捕获指定异常
    
      try:
      with open("main.py","r") as f:
          print(f"打开文件{f.read()}")
          except FileNotFoundError:
                   print("处理异常")
       ```
    
;