• 01_Python基础知识梳理


    1.计算机知识基础

    1.计算机组成

            计算机底层: 点子电路,计算机只能识别两个数 0 1
            硬件: 处理器(CPU), 运行内存(RAM), 主板(总线设备), 外部存储设备(硬盘U盘等), 输入输出设备
            软件: 操作系统软件(运行在内核模式下), 标准库软件(运行在用户模式下), 应用软件(运行在用户模式下)

    2.三大操作系统

            Unix: AIX(IBM), Solaris(SUN/Oracle), MAC OS X(Apple), IOS(Apple)
            Linux: Ubuntu, Redhat, CentOS, Android
            Windows: win95, win98, winXP, win7, win10

    3.常用的程序文件后缀

            .py     Python文件
            .c       C文件
            .cpp   C++文件
            .cs     C#文件
            .java   Java文件

    4.语言分类

            编译型: C, C++, Go, Swift, Object-C, Pascal
            解释型: JavaScript, Python, Ruby, PHP, Perl, Erlang
            混合型: Java, C#
            编译型语言与解释型语言执行过程流程图: https://www.processon.com/view/link/5e723852e4b08b6157267b5e
            程序执行原理流程图: https://www.processon.com/view/link/5ebd5af21e08530a9bfc3a01
            程序的三大流程-顺序-分支-循环: https://www.processon.com/view/link/5ebd8198e0b34d5f260c1511

    2.头文件声明

        #!/usr/bin/env python
        # -*- coding: utf-8 -*-
        第一行: Linux类系统中shell执行py文件,头文件要声明解释器路径,env(环境变量)
        第二行: 告诉python解释器, 应该以utf-8编码来解释py文件,在python2中执行py文件中有中文时不加会报错

    3.python解释器

        python(python2.x的解释器)
        python3(python3.x的解释器)
        Cpython: 官方版本的C语言实现
        Jpython: 可以运行在Java平台
        IronPython: 可以运行在.NET和Mono平台
        PyPy: Python实现的支持JIT即时编译,平均而言,PyPy比CPython快4.4倍

    4.python的交互模式

        1.进入交互模式
            在终端/cmd命令行下执行命令: python3
        2.退出交互模式
            在终端/cmd命令行下执行命令:
                输入退出命令: quit()/exit()
                或者输入文件结束符: ctrl+d/contol+d
        3.语法验证推荐进入ipython
            # ipython使用了sqlite数据库存储 Input 和 Output
            命令: ipython

    5.python注释

        1.单行注释: #开头直至行尾,在代码行尾加注释时需要空出两个空格,#号注释符与注释内容空一个空格
            # 这是注释1,被注释内容不会参与解释执行
            print("hello")  # 这是注释2
        2.多行注释: 多行注释自带隐式换行

            '''
            被注释的内容1
            被注释的内容2
            '''
            """
            被注释的内容1
            被注释的内容2
            """
        3.TODO注释: 用于标记谁需要去做的工作
            # TODO(作者/邮箱) 注释内容
            # TODO(echo/echo@xxx.com) 此处完成接收消息的方法并返回处理后的结果给调用者

    6.python程序的组成

        程序由模块组成-->模块由语句,函数,类组成-->语句由表达式组成
        表达式: 建立并处理数据对象且能返回数据对象的引用关系
        Python代码结构流程图: https://www.processon.com/view/link/5ec29f060791290fe06e9e8f

    7.python中自动化内存管理和引用计数

        每个对象都会记录有几个变量引用自身,当引用的数量为0时,此对象将被销毁
        自动化内存管理和引用计数流程图: https://www.processon.com/view/link/5ed43cf063768906e2d0ce80
        示例:
            a = 1000
            b = 2000
            a = a + b
            c = a # 3000这个对象同时被a和c引用

    8.python中关联/绑定/引用的含义

        关联/绑定/引用都是指变量和一个对象的关联关系,python中变量是没有类型的
        示例:
            a = 1000 + 2000
            b = a
            c = b
            #  此时变量a,b,c同时绑定同一个对象3000

    9.小数据池(常量池)

        1.小数据池概述:
            1.CPython中把我们使用过的值存储在小数据池中,供其他的变量使用
            2.小数据池优点: 需要值相同的字符串或整数的时候,直接从小数据池里拿来用,避免频繁的创建和销毁,提升效率,节约内存
        2.小数据池的存储数据类型: 小数据池给数字和字符串使用,其他数据类型不存在小数据池中
            1.数字满足小数据池条件: -5~256会被加到小数据池中,每次使用的都是同一个对象
            2.字符串满足小数据池条件:
                1.字符串的长度为0或者1, 例如:"@"  # 此时即使是1个特殊字符也会加入小数据池
                2.字符串的长度>1,且只含有大小写字母,数字,下划线  # 不能包含特殊字符
            3.用乘法得到的字符串满足小数据池条件:
                1.乘数是1时,且仅含大小写字母,数字,下划线
                2.乘数是1时,含其他字符,且长度<=1, 例如"@" * 1
                3.乘数>=2时,仅含大小写字母,数字,下划线,且总长度<=20
        3.指定字符串加入小数据池: 指定任意的字符串加入到小数据池中,让其只在内存中创建一个对象,多个变量都是指向这一个字符串
            from sys import intern

            a = intern('hello!@'*20)
            b = intern('hello!@'*20)
            print(a is b)  # True

    10.编码

        ASCII                     8位   1个字节(byte)
        GBK        国标码   16位   2个字节(双字节字符)
        Unicode  万国码   32位   4个字节
        utf-8        变长      8位   1个字节(满足ASCII)
                                   16位   2个字节(满足欧洲文字)
                                   32位   3个字节(满足中文)
        单位转换
            8bit = 1byte    8位 = 1字节
            1024byte = 1KB  1024个字节 = 1千字节
            1024KB = 1MB    1024千字节 = 1兆字节-->百万字节
            1024MB = 1GB    1024兆字节 = 1吉字节-->十亿字节
            1024GB = 1TB    1024吉字节 = 1太字节-->万亿字节
            1024TB = 1PB    1024太字节 = 1拍字节-->千万亿字节
            1024PB = 1EB    1024拍字节 = 1艾字节-->百亿亿字节
            1024EB = 1ZB    1024艾字节 = 1泽字节-->十万亿亿字节
            1024ZB = 1YB    1024泽字节 = 1尧字节-->一亿亿亿字节

    11.语法糖-解构(解包)

        示例1:
            dic = {"id": 1, "name": "Coco", "age": 18}
            for key, value in dic.items():
                print(key, value)
        示例2:
            a, b = 1, 2
            a, b = [1, 2]
            a, b = (1, 2)

    12.python项目命名规则

        1.项目名前面数字编号(编号递增),例如: 01_名片管理系统,02_信息管理系统
        2.项目下的文件名都以xx_xx_xx方式命名,例如: http_web_server, http_mini_frame
        3.项目下的文件命名时建议使用小写字母数字下划线,且文件名不能以数字开始

    13.python项目下的.pyc文件

        1.python在解释源程序时的过程
            1.首先处理源代码,编译生成一个二进制字节码
            2.再对字节码进行处理后生成CPU能识别的机器码
        2.浏览项目目录会有一个__pycache__的目录目录下会有一个xxx.cpython-37.pyc文件
            1.当一个Python脚本文件被导入时就会在这个目录下生成一个编译好的文件
            2.cpython-37: 表示python解释器的版本,这个.pyc文件是由python解释器将模块的源码转换后的字节码
            3.保存字节码是作为启动速度的优化,节省一些导入时间
            4.有了模块的字节码文件之后下一次运行程序时,如果没有修改过源代码,python将会加载.pyc文件,并跳过编译这个步骤
            5.当python代码重新编译时,会自动检测源文件和.pyc字节码文件的时间戳,如果修改了源代码,下次运行程序时字节码将会自动重新创建

    14.计算机的进制/存储/编码

    1.十的不同进制表示(数字0开头后跟小写字母)

            二进制: (1010)2-->0b1010
            八进制: (12)8 -->0o12
            十进制: (10)10-->10
            十六进制: (A)16-->0xA

    2.机器数: 一个数在计算机中二进制表示形式叫这个数的机器数,机器数的三种表现形式为 原码 反码 补码

            # 机器数是带符号的,在计算机用一个数的最高位存放符号,正数为0,负数为1
            +1 机器码表示: 0000 0001
            -1 机器码表示: 1000 0001

    3.真值: 将带符号位的机器数对应的真正数值称为机器数的真值

            +1 的真值: 000 0001
            -1 的真值: 000 0001

    4.原码: 符号位加上真值的绝对值,即用第一位表示符号,其余位表示值

            [+1]原 = 0000 0001
            [-1]原 = 1000 0001
            所以八位二级制数的取值范围是[-127, 127] 即最多表示255个数

    5.反码: 正数的反码是其本身,负数的反码是在其原码的基础上,符号位不变,其余各个位取反

            [+1] = [0000 0001]原 = [0000 0001]反
            [-1] = [1000 0001]原 = [1111 1110]反

    6.补码: 正数的补码依旧是其本身,负数的补码是在其原码的基础上,符号位不变其余各位取反最后+1(即在反码的基础上+1)

            [+1] = [0000 0001]原 = [0000 0001]反 = [0000 0001]补
            [-1] = [1000 0001]原 = [1111 1110]反 = [1111 1111]补
            在计算机系统中,数值一律使用补码来表示(存放)
            计算机只会做加法运算: 1-1在计算机底层实际上是补码的加法计算1 + (-1) = [0000 0001] + [1111 1111] = 0

    7.编码

            1.国标系列(常用于Windows)
                GB18030(2个字节或4字节编码,共27533个)
                GBK(16位 2个字节编码,共21003个)
                GB2312(2个字节编码,共6763个汉字)
            2.国际标准(常用于Linux/Mac OS/IOS/Android)
                UNICODE16/UNICODE32: 万国码,最少用16位表示,usc-2 16位2个字节 usc-4 32位4个字节,可以直接和utf-8和gbk转换
                UTF-8(8-bit Unicode Transformation Format): utf8不能直接和gbk转换,以非贪婪的形式表示,英文8bit 1个字节,欧洲文字16bit 2个字节,中文24bit 3个字节
            3.用于encode和decode方法参数的编码字符串
                s.encode('gb2312')
                s.decode('gb2312')
                'gbk'
                'gb18030'
                'utf-8'
                'ascii'
            4.编码注释
                在源文件的第一行或第二行写入的内容告诉python解释器执行当前文件的编码是什么
                # -*- coding: utf-8 -*-

    15.代码规范(PEP8代码规范)

        1.英文文档地址: https://www.python.org/dev/peps/pep-0008/
        2.中文文档地址: https://zh-google-styleguide.readthedocs.io/en/latest/google-python-styleguide/contents/

    16.python运算符的优先级(由上而下优先级从高到低)

    (), [], {key: value}, {}  元组表达式,列表表达式,字典表达式,集合表达式 
    x[index], x[index:index] 索引,切片
      x(arguments...), x.attribute   函数调用,属性引用
    ** 指数(最高优先级)
    ~, +, - 按位翻转,正号,负号
    *, /, %, // 乘,除,取模和地板除
    +, - 加法,减法
    >>, << 右移,左移运算符
    & 按位与(AND)
    ^ 按位异或(XOR)
    | 按位或(OR)
    <=, <, >, >=, ==, != 比较
    is, is not 身份测试
    in, not in 成员资格测试
    not 布尔非
    and 布尔与
    or 布尔或
    if - else 条件表达式
    lambda lambda表达式

    17.python项目源码打包成可执行的文件

    1.打包成Windows下可执行的exe文件

            1.命令行模式下: python3 -m pip install PyInstaller
            2.命令行模式下移动到原码目录下执行: pyinstaller -F -w xxx.py  # xxx.py为项目的启动文件
            3.参数说明:
                -F: 表示在dist文件夹下只生成单个可执行文件内部包含所有依赖,不加默认会在dist生成一大堆依赖文件+可执行文件
                -D: 与 -F 相反用法
                -W: 表示去掉控制台窗口,如果你的程序是有界面的可以不写这个参数,如果打包不成功运行时报错信息会在控制台上输出
                -c: 表示去掉窗框,使用控制台
                -p: 表示自己定义需要加载的类路径,项目中包含多个自建模块的时候需要加上 -p aaa.py -p bbb.py -p ccc.py
                -i: 表示可执行文件的图标,后面跟图标的路径
                --hidden-import: 后面跟模块名如 queue,用于告诉打包程序某个模块我用不着你不用打包进去

    2.打包成Mac下可执行的app文件

            1.命令行模式下: sudo pip install py2app
            2.命令行模式下移动到原码目录下执行: py2applet --make-setup xxx.py  # xxx.py为项目的启动文件
            3.执行以后目录中会生成 setup.py 文件用于写入依赖的库,如果没有导入第三方库和自建模块可以不用写入依赖的库
            4.下面是setup.py文件的一个示例
                # python自带的库无需输入,第三方库和自己引入的自写模块需要输入
                """
                This is a setup.py script generated by py2applet

                Usage:
                    python setup.py py2app
                """

                from setuptools import setup

                APP = ['start.py']
                # 自写模块放在DATA_FILES列表中
                DATA_FILES = ['xxx1.py', 'xxx2.py', 'xxx3.py']
                # 第三方库放在OPTIONS下的includes对应的列表中
                OPTIONS = { 'includes': ['sip', 'PyQt5.QtCore', 'PyQt5.QtWidgets'],}

                setup(
                    app=APP,
                    data_files=DATA_FILES,
                    options={'py2app': OPTIONS},
                    setup_requires=['py2app'],
                )
            5.命令行下生成app
                # 自己开发打包速度快(因为本机安装了依赖库,所以可以直接运行)
                python setup.py py2app -A

                # 给其他没有sdk的电脑使用包括lib库(没有安装sdk的电脑使用需要去掉-A,将把所有的依赖全部打包)
                python setup.py py2app  # 执行之后会生成build和dist两个文件夹,启动文件在dist下双击就可以执行
                # 如果发现有问题,在重新进行上述步骤前最好先删除build和dist两个文件夹
                rm -rf build dist

    18.函数,匿名函数,闭包,对象当做实参时有什么区别

        1.普通函数能够完成较为复杂的功能,传递的是这个函数的引用,只有功能
        2.匿名函数能够完成基本的简单功能,传递的是这个函数的引用,只有功能
        3.闭包能够完成较为复杂的功能,传递的是闭包中的函数和数据,既有功能又有数据
        4.对象能够完成最为复杂的功能,传递的是很多数据和很多功能,既有功能又有数据

    19.第三方管理工具pip和pip3

        概述: pip是Python2的标准第三方管理工具,pip3是Python3的标准第三方管理工具
        安装包: pip3 install 要安装的包名
        更新包: pip3 install --upgrade 要更新的包名
        更新pip3: pip3 install --upgrade pip3
        卸载包: pip3 uninstall 要卸载的包名
        列出已安装的包: pip3 list
        查找包: pip3 search 要查找的包名
        查看包信息: pip3 show 要查看的包名
        记录软件环境: pip3 freeze > requirements.txt
        根据开发环境文件进行环境安装: pip3 install -r requirements.txt

    20.python控制台输出带颜色的文字

        设置颜色开始: 33[显示方式;前景色;背景色m
        设置颜色结束: 33[0m
        说明:
            前景色  背景色  颜色
            -------------------
            30        40       黑色
            31        41       红色
            32        42       绿色
            33        43       黃色
            34        44       蓝色
            35        45       紫红色
            36        46       青蓝色
            37        47       白色

            显示方式  意义
            -------------------------
            0             终端默认设置
            1             高亮显示
            4             使用下划线
            5             闪烁
            7             反白显示
            8             不可见
        示例1:
            33[1;31;40m  # 1-高亮显示 31-前景色红色 40-背景色黑色
            33[0m  # 采用终端默认设置,即取消颜色设置
        示例2:
            print('33[0;32;40m欢迎使用学生选课系统33[0m')
            try:
                num = int(input('请输入数字选择功能: '))
            except Exception as e:     print('33[31m对不起!您输入的内容有误~33[0m')

  • 相关阅读:
    [bzoj5466] [loj#2955] [NOIP2018] 保卫王国
    [洛谷P4719] 动态DP模板
    [bzoj4869] [loj#2142] [Shoi2017] 相逢是问候
    《组合数学》学习笔记 之 二项式系数
    多项式模板合集
    THUWC2020 自闭记
    [bzoj5020] [THUWC 2017] 在美妙的数学王国中畅游
    [bzoj3676] [Apio2014] 回文串
    【模板整理】Tarjan
    考前一些东西
  • 原文地址:https://www.cnblogs.com/tangxuecheng/p/10523366.html
Copyright © 2020-2023  润新知