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控制台输出带颜色的文字

设置颜色开始: \033[显示方式;前景色;背景色m

    设置颜色结束: \033[0m

    说明:

        前景色  背景色  颜色

        -------------------

        30        40       黑色

        31        41       红色

        32        42       绿色

        33        43       黃色

        34        44       蓝色

        35        45       紫红色

        36        46       青蓝色

        37        47       白色

显示方式  意义

        -------------------------

        0             终端默认设置

        1             高亮显示

        4             使用下划线

        5             闪烁

        7             反白显示

        8             不可见

    示例1:

        \033[1;31;40m  # 1-高亮显示 31-前景色红色 40-背景色黑色

        \033[0m  # 采用终端默认设置,即取消颜色设置

    示例2:

        print('\033[0;32;40m欢迎使用学生选课系统\033[0m')

        try:

            num = int(input('请输入数字选择功能: '))

        except Exception as e:
    print('\033[31m对不起!您输入的内容有误~\033[0m')

01_Python基础知识梳理的更多相关文章

  1. [SQL] SQL 基础知识梳理(一)- 数据库与 SQL

    SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 ...

  2. [SQL] SQL 基础知识梳理(二) - 查询基础

    SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理( ...

  3. [SQL] SQL 基础知识梳理(三) - 聚合和排序

    SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理 ...

  4. [SQL] SQL 基础知识梳理(四) - 数据更新

    SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理( ...

  5. [SQL] SQL 基础知识梳理(五) - 复杂查询

    SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理( ...

  6. Anliven - 基础知识梳理汇总 - 软件测试

    基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳 ...

  7. [C# 基础知识梳理系列]专题六:泛型基础篇——为什么引入泛型

    引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解 ...

  8. java基础知识梳理

    java基础知识梳理 1 基本数据类型

  9. C#基础知识梳理索引

    C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重 ...

随机推荐

  1. CSS变化、过渡与动画

    CSS变换用于在空间中移动物体,而CSS过渡和CSS关键帧动画用于控制元素随时间推移的变化. 变换.过渡和关键帧动画的规范仍然在制定中.尽管如此,其中大多数特性已经在常用浏览器中实现了. 1.二维变换 ...

  2. Django REST framework 单元测试

    Django REST framework 单元测试 只是简单记录一下测试代码怎么写 环境 Win10 Python3.7 Django2.2 项目 参照官网 快速开始 写了一个 demo 测试 参照 ...

  3. java_字节流、字符流的使用方法

    字节流 字节输出流[OutputStream] java.io.OutputStream 抽象类是表示字节输出流的所有类的超类,将指定的字节信息写出到目的地.它定义了字节输出流的基本共性功能方法. p ...

  4. C#LeetCode刷题之#867-转置矩阵(Transpose Matrix)

    问题 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/3756 访问. 给定一个矩阵 A, 返回 A 的转置矩阵. 矩阵的 ...

  5. 使用pytorchviz进行模型可视化出现 'NoneType' object has no attribute 'grad_fn'

    问题 最近学习pytorch, 原来用kreas重现的模型改为用pytorch实现训练,因为这样给模型的操作更加细致, 对模型的掌控更好. 当我写好一个模型 出现了这个问题 使用pytorchviz进 ...

  6. ubuntu18.04配置与美化

    一:初步系统配置 1 不可或缺的更新 如果在上一步中勾选了安装 Ubuntu 时下载更新,那么大部分的系统更新已经下载完毕. 不过为了确保,先移步到 设置→详细信息 ,点击右下角的 检查更新 ,如果存 ...

  7. Redis设计与实现——单机数据库的实现

    数据库 服务器中的数据库 redisClient切换数据库 redis客户端默认目标数据库为0号数据库,可以通过SELECT命令来切换目标数据库. 客户端状态redisClient结构的db属性记录了 ...

  8. eric4 中 pyqt .py文件结尾的 代码

    if __name__ == "__main__": import sys app = QtGui.QApplication(sys.argv) ui = MainWindow() ...

  9. Lambda表达式的几种实现过程

    1.无参数+语句(代码块):适用于匿名内部类中方法无参数的情况 private void threadTest(){ //普通写法 new Thread(new Runnable(){ @Overri ...

  10. Jenkins配置总结

    1.配置全局 系统管理->全局工具配置 2.配置 自己安装安装jdk,git,以及maven 3.系统管理->系统配置 3.1配置Jenkins URL 3.2 配置SSH Servers ...