python基础小结

我的梦境 提交于 2019-12-02 09:30:48

计算机基础之编程

  1. 编程语言是人与计算机交流的介质
  2. 编程是通过编程语言编写一大堆文件
  3. 为什么要编程-->奴役计算机,让计算机帮我们干活

计算机组成

  1. CPU
    1. 控制器
    2. 运算器
  2. 内存
  3. 外存
  4. 输入设备
  5. 输出设备
  6. IO设备
  7. 32位和64位
  8. 多核CPU
  9. 应用程序的启动
  10. 机械硬盘工作原理
    1. 机械手臂
    2. 磁道
    3. 扇区
    4. 平均寻道时间
    5. 平均延迟时间
    6. 平均寻找数据时间
  11. 固态硬盘工作原理

计算机操作系统

  1. 什么是文件
  2. 什么是应用程序
  3. 操作系统的作用
  4. 操作系统的启动

编程语言分类

  1. 机器语言
  2. 汇编语言
  3. 高级语言
    1. 编译型
    2. 解释型

网络瓶颈效应

  1. 网络的延迟时间远远大于应用程序的执行时间

python文件执行的两种方式

  1. 交互式
  2. 命令行式(python test.py)

变量

  1. 变量-->描述世间万物变化的状态
  2. 变量的组成
  3. 变量名的命名规范
  4. 变量名的两种定义方式

常量

  1. 常量-->python中约定俗称不变的量,但实际上是可以改变的,常量名全大写

变量内存管理

  1. 引用计数
  2. 垃圾回收机制
  3. 小整数池

定义变量的三种特征

  1. 打印值
  2. 打印内存
  3. 打印数据类型
import numpy as np

arr = np.array([1, 2, 3])
arr
array([1, 2, 3])
type(arr)
numpy.ndarray

花式赋值

  1. 链式赋值
  2. 交叉赋值

注释

  1. 单行注释
  2. 多行注释

与用户交互

  1. input
  2. input接收的值全是字符串

格式化输出的三种方式

  1. %占位符
  2. format格式化
  3. f-string格式化

基本运算符

  1. 算术运算符
  2. 逻辑运算符
  3. 比较运算符
  4. 身份运算符
  5. 赋值运算符
  6. 成员运算符
  7. 运算符的优先级: 优先计算的加括号

流程控制之if判断

  1. 单分支结构
  2. 双分支结构
  3. 多分支结构
  4. if嵌套

流程控制之while循环

  1. while+break
  2. while+continue
  3. while+else
  4. while嵌套

流程控制之for循环

  1. for+break
  2. for+continue
  3. for+else
  4. for嵌套

数字类型

  1. 整型
  2. 浮点型

字符串

# 写代码,有如下变量,请按照要求实现每个功能 (共6分,每小题各0.5分)
name = " aleX"
# 1)    移除 name 变量对应的值两边的空格,并输出处理结果
# 2)    判断 name 变量对应的值是否以 "al" 开头,并输出结果

# 3)    判断 name 变量对应的值是否以 "X" 结尾,并输出结果

# 4)    将 name 变量对应的值中的 “l” 替换为 “p”,并输出结果
# 5)    将 name 变量对应的值根据 “l” 分割,并输出结果。
# 6)    将 name 变量对应的值变大写,并输出结果

# 7)    将 name 变量对应的值变小写,并输出结果

# 8)    请输出 name 变量对应的值的第 2 个字符?
# 9)    请输出 name 变量对应的值的前 3 个字符?
# 10)    请输出 name 变量对应的值的后 2 个字符?

# 11)    请输出 name 变量对应的值中 “e” 所在索引位置?

# 12)    获取子序列,去掉最后一个字符。如: oldboy 则获取 oldbo。

列表

有如下列表,请按照年龄排序(涉及到匿名函数)
l=[
    {'name':'alex','age':84},
    {'name':'oldboy','age':73},
    {'name':'egon','age':18},
]

字典

1 有如下值集合 [11,22,33,44,55,66,77,88,99,90...],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中

即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}

元组

九九乘法表

集合

一.关系运算
  有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
  pythons={'alex','egon','yuanhao','wupeiqi','gangdan','biubiu'}
  linuxs={'wupeiqi','oldboy','gangdan'}
  1. 求出即报名python又报名linux课程的学员名字集合
  2. 求出所有报名的学生名字集合
  3. 求出只报名python课程的学员名字
  4. 求出没有同时这两门课程的学员名字集合

布尔

  1. 所有数据类型除了0/None/空/False之外都自带布尔值为True

数据类型分类

可变 不可变
列表/字典/集合 整型/浮点型/字符串/元组
有序 无序
字符串/列表/元组 字典/集合
一个值 多个值
整型/浮点型/字符串 列表/元组/字典/集合

解压缩

  1. 一次性获取多个容器元素

异常处理

try:
    1/0
except Exception as e:
    print(e)
finally:
    print('我一定会执行')
division by zero
我一定会执行
  1. assert 断言
  2. raise 主动抛错

深浅拷贝

  1. 拷贝
  2. 浅拷贝
  3. 深拷贝

字符编码

  1. 用什么编码存就用什么编码取

Pyhton2和3的编码的区别

文件的打开方式

  1. 打开文件 open
  2. 读取文件 read/write
  3. 关闭文件 close

文件的三种打开模式

  1. r
  2. w
  3. a
  4. t:文本
  5. b:二进制

with管理文件上下文

with open('test.py','r',encoding='utf8') as fr:
    ...

文件的高级应用

  1. r+
  2. a+
  3. w+
  4. seek # 移动指针,字节
  5. tell # 告诉指针位置,字节
  6. read(n) # 读取n个字符,只有read模式才是字符
  7. truncate() # 截断-->写模式,字节

文件的两种修改方式

with open('test.txt', 'r', encoding='utf8') as fr,\
    open('test_swap.txt', 'w', encoding='utf8') as fw:
    data = fr.read()
    # 逻辑操作
    fw.write(data)
import os
os.remove('test.txt')
os.rename('test_swap.txt', 'test.txt')

函数的定义

def 函数名(参数):
    代码块

定义函数的三种方式

  1. 有参函数
  2. 无参函数
  3. 空函数

函数的返回值

  1. return返回值,可以终止函数
  2. 返回多个值,以元组的形式返回
  3. 默认返回None

函数的调用

函数名()

函数的参数

  1. 形参
    1. 位置形参
    2. 默认形参
  2. 实参
    1. 位置实参
    2. 关键字实参

可变长参数

  1. *
    1. *形参
    2. *实参
  2. **
    1. **形参
    2. **实参

函数对象

  1. 引用对象
  2. 函数的返回值
  3. 函数的参数
  4. 容器类元素

函数的嵌套

def f1():
    def f2():
        pass

名称空间和作用域

  1. 内置名称空间
  2. 全局名称空间
  3. 局部名称空间

执行顺序: 内置-->全局-->局部

查找顺序: 从当前位置开始 --> 局部 --> 全局 --> 内置

  1. 全局作用域
  2. 局部作用域

全局作用域和局部作用域互不关联;局部作用域1和局部作用域2互不关联.

闭包函数

把变量x和函数f2包在一起,通过函数f1返回出来

def f1(x):
    def f2():
        print(x)

    return f2


f1(20)

x = 10

装饰器

def outter(func):
    def wrapper(*args, **kwargs):
        res = func(*args, **kwargs)
        return res
    return wrapper
def sanceng():
    def outter(func):
        def wrapper(*args, **kwargs):
            res = func(*args, **kwargs)
            return res
        return wrapper
    return outter

迭代器

  1. 可迭代对象
  2. 迭代器对象

生成器

  1. 含有yield关键字的函数, 函数调用已经不是调用,而是变成一个生成器
def func():
    yield 1


g = func()  # 生成器

for i in g:
    print(i)
1

三元表达式

print(1) if x > 10 else print(2)

列表推导式

[i for i in range(10)]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

字典生成式

{k: v for k, v in {'a': 1}.items()}
{'a': 1}
for i in zip([1, 2, 3], [1, 2, 3]):
    print(i)
(1, 1)
(2, 2)
(3, 3)

生成器表达式

(i for i in range(10))
<generator object <genexpr> at 0x00000222B9D67888>
for i in (i for i in range(10)):
    print(i)
0
1
2
3
4
5
6
7
8
9

内置函数

for i in enumerate([1, 2, 3]):
    print(i)
(0, 1)
(1, 2)
(2, 3)

匿名函数

def f(x, y): return x+y


f(1, 2)
3

匿名函数一般与map/filter/max/min/sorted联用

l = [
    {'name': 'alex', 'age': 84},
    {'name': 'oldboy', 'age': 73},
    {'name': 'egon', 'age': 18},
]

l.sort(key=lambda i: i['age'])
l
[{'name': 'egon', 'age': 18},
 {'name': 'oldboy', 'age': 73},
 {'name': 'alex', 'age': 84}]

递归

函数调用函数本身,会有一个结束条件

面向过程编程

流水线编程

模块的四种形式

  1. 自定义
  2. 内置
  3. 第三方

import和from...import

# test.py
import time
  1. 生成一个time的名称空间
  2. 运行time.py文件把生成的变量放入time模块
  3. 让test.py指向time这个名称空间
  4. 生成一个time的名称空间
  5. 运行time.py文件把生成的变量放入time模块
  6. from time import time让test.py指向time

循环导入问题

# m1.py
from m2 import y
x = 10

# m2.py
from m1 import x
y = 20
# m1.py
def f1():
    from m2 import y
x = 10

# m2.py
def f1();
    from m1 import x
y = 20

模块的搜索路径

  1. 内存-->内置-->自定制-->环境变量(sys.path)

文件的两种用途

  1. 执行文件
  2. 模块文件

  1. 一个模块里有多个函数,无法管理,所以分成多个文件存放函数,但是不能改变模块的导入方式
  2. 导包就是导init

time模块

  1. 打印三种不同格式的时间

datetime模块

  1. 修改时间

random模块

  1. 随机数+打乱列表顺序

json模块

  1. 序列化: 将python数据类型转化为json串
  2. 反序列化: 将json串转化为python数据类型

特性: 跨平台

pickle模块

  1. 只针对python,但是python的所有数据类型

os模块

  1. 与操作系统交互,多用于文件处理

sys模块

  1. 与python解释器交互

hashlib模块

  1. 加密成固定长度的字符串

hmac模块

  1. 相比较hashlib模块做了一个加盐处理

uuid模块

import uuid

print(uuid.uuid4())  # 做id(唯一标识)用的
2d465e1b-75c0-4a73-b61d-f731a5d56ca3

logging模块

  1. 日志记录

numpy模块

  1. numpy数组(矩阵)的科学运算

pandas模块

  1. 处理文件,多用于excel表格

matplotlib模块

  1. 画图

re模块

  1. 正则表达式,字符串内找特定的字符串

typing模块

  1. 获取一些数据类型,generator

collections模块

  1. 增加一些特殊的数据类型

shutil模块

  1. 文件的解压缩

xml模块

  1. 配置文件

subprocess模块

  1. 替代cmd输入命令
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!