栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

LXF网站学习记录

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LXF网站学习记录

廖雪峰Python学习记录

学习笔记

日期: 2021.10.5

-1 存在问题
  • 不断调用函数会改变可变列表

    5.3 节 传入可变参数。 一个错误!(还没理解清楚)

  • lambda函数的使用,本教程 reduce和map一节有涉及

  • 函数调用会改变变量本身,这和很多语言是不同的

    def normalize(name):
        for i in range(len(name)):
            name[i]=name[i].capitalize()
            # name[i]=name[i].title()
        return name
        
    L1 = ['adam', 'LISA', 'barT']
    
    L=normalize(L1)
    
    • 本质上看是否使用了赋值语句,如果使用赋值语句,一般不会改变外部变量,注意(+=)

      结合内存创建方法进行思考,如果没有使用赋值语句,仅仅是调用一个方法,因为函数参数传递的是一个引用,会在外部变量的基础上进行修改

      相关资料参见 黑马基础教学视频

0 Python官方文档

英文版 https://docs.python.org/3/

中文版本 https://docs.python.org/zh-cn/

1 Python简介
  • 创始人 龟叔 Guido
  • 许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣
  • 优点:Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。除了内置的库外,Python还有大量的第三方库。
  • 缺点 : 第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言 ; 第二个缺点就是代码不能加密
2 安装Python
  • 常用的python解释器
    • Cpython – 官方下载自带的
    • ipython – 增强式交互式解释器
    • PyPy、Jython、IronPython等
3 第一个Python程序 3.0 命令行模式和交互式模式
  • Python交互模式的代码是输入一行,执行一行,而命令行模式下直接运行.py文件是一次性执行该文件内的所有代码
  • 交互式便于初学者学习
3.1使用文本编辑器
  • 在Mac和Linux上可以像.exe文件那样直接运行.py文件,在Windows上不行。

    • 通过which python3 命令查找python3 解释器的位置

    • ( Sheban 添加该路径) 源文件中首行写
      #!+路径名

    • 更改执行权限

      chmod a+x 文件名
      
    • 命令行模式下直接运行 注意要 ” .文件名“ 而不是直接输入文件名

  • 推荐使用VScode 而不去使用 word和记事本

    • word不是纯文本文件

    • 记事本会自动添加 utf-8 BOM 出bug

      https://blog.csdn.net/dawnredwood59/article/details/83380823

3.3 输入和输出
  • print 遇到逗号“,”会输出一个空格
  • input(“请输入")
4 Python基础 4.1 数据类型和字符串
  • 整型、浮点型、布尔型

    列表[ ]、元组()、字典{}

  • 布尔型的运算有 and or not

  • Python的整数没有大小限制,而某些语言的整数根据其存储长度是有大小限制的,例如Java。

    Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。

  • # 打多行
    print('''line1
    ... line2
    ... line3''')
    
  • 变量本身类型不固定的语言称之为动态语言,与之对应的是静态语言。静态语言在定义变量时必须指定变量类型,如果赋值的时候类型不匹配,就会报错

  • 取整除法 // 一般除法 /

4.2 字符串和编码
  • 理清ASCII / Unicode/ utf-8 的区别
  • 计算机内部都是unicode 编码
  • str 与 bytes 互相转换
  • encode和decode的使用
# 第一行shebang 
# 第二行指明编码方式,需要编写
#!/usr/bin/env python3    
# -*- coding: utf-8 -*-
  • 格式化输出

    • %d %f %x %s
    • %4.2f 表示保留两位小数点,连上小数点在内至少4个字符宽度(如果整数部分较长,则以具体数字为主),不足时右对齐,左补空格
    • %04.2f 不足时右对齐,左补0
    • format 和 f-string
4.3 list 和 tuple
  • list是一个有序的数据类型
    • list的方法 len、append、insert、pop等等
  • tuple是不可变的类型
    • tuple的三种()、(1,)、(1,2,3),注意()是一个元组类型
    • tuple内部如果有list,list的内容是可变的
  • list 和tuple都支持从右或者从左边索引
4.4 条件判断
  • if -elif -else
4.5 循环
  • for while break continue 关键字的使用
  • for 中常用的一个range函数,range(5): [0,1,2,3,4],range函数在不同的解释器中是不一样的
    • list(range(4))将其转为列表格式
4.6 dict和set
  • dict

    • 无序的、查找速度快、占用内存较list大
    • 初始化、增加值、更新值、查找值、判断是否存在(in或者get方法)、
    • dict的key必须是不可变对象 ,通过哈希算法(Hash)算得 key对应的value存储位置的。
  • set

    • set和dict类似,也是一组key的集合 ,唯一区别仅在于没有存储对应的value。不可以放入可变对象,不可以重复(会自动过滤)
    • 两个set可以做数学意义上的交集、并集等操作
5 函数 5.1 调用函数
  • ipython 或者python 中 help(函数名)

  • ipython 变量名+tab可以看到可以调用的函数

    spyder中可以在ipython console中操作!

    或者查看ipython的官方文档!

    pycharm 可以用 control +Q

5.2 编写函数
  • 把my_abs()的函数定义保存为abstest.py文件,可以用from abstest import my_abs来导入my_abs()函数,注意abstest是文件名不含.py扩展名

  • 想定义空函数,可以用Pass关键字

  • 可以返回多个返回值,返回的值是一个tuple

    一个tuple可以省略小括号比如a,b=b,a 可以交换

5.3 函数的参数
  • 传入多个参数

    • 默认参数: 必选参数在前,默认参数在后
    • 多个默认参数: 多个默认参数时,调用的时候,既可以按顺序提供默认参数 ; 也可以不按顺序提供部分默认参数。当不按顺序提供部分默认参数时,需要把参数名写上。
  • 传入可变参数。 一个错误!(还没理解清楚)

    默认参数必须指向不变对象!否则默认参数会不断变化

  • 可变参数 ,传入list或tuple 用*表示

  • 关键字参数,传入dict,用**表示

  • 命名关键字参数

  • 必选参数 、 默认参数 、可变参数、命名关键字参数、可变参数的组合

5.4 递归函数
  • 存在栈溢出问题

  • 尾递归调用可以解决,但是Python并没有优化

    def fact(n):
        if n==1:
            return 1
        return n * fact(n - 1)
    

    尾递归改写:

    def fact_iter(num, product):
        if num == 1:
            return product
        return fact_iter(num - 1, num * product)
    
6 高级特性 6.1 切片
  • 可以从右往左、从左往右、跳跃切片
6.2 迭代
  • 可以通过 for 进行叠代遍历
    • 可以遍历 list tuple dict 等
    • 通过collections.abc模块的Iterable类型判断 是否可以迭代
  • for 和range 或者enumerate搭配可以使用索引进行遍历
6.3 列表生成式
  • [x * x for x in range(1, 11) if x % 2 == 0]
    
  • 和if -else 连用

  • 嵌套for 循环

6.4 生成器
  • generator 创建方法
    • 只要把一个列表生成式的[]改成()
    • yield函数 循环的过程中不断推算出后续,不必创建完整的list
6.5 迭代器
  • 凡是可作用于for循环的对象都是Iterable类型;
  • 凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列
    • 所谓惰性,指的是只有在需要返回下一个数据时它才会计算
  • 集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
  • Python的for循环本质上就是通过不断调用next()函数实现的
7 函数式编程 7.1 高阶函数
  • 函数本身可以赋给变量
  • 变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数 , 这种函数就称之为高阶函数
7.11 map、reduce
  • map 使得函数更加简洁

  • 注意map返回结果是一个Iterator,Iterator是惰性序列

  • reduce把结果继续和序列的下一个元素做累积计算

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/300170.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号