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. 再也不怕别人动电脑了!用Python实时监控

    作者:美图博客 https://www.meitubk.com/zatan/386.html 前言 最近突然有个奇妙的想法,就是当我对着电脑屏幕的时候,电脑会先识别屏幕上的人脸是否是本人,如果识别是本 ...

  2. Nginx.conf参数配置详解

    Nginx的配置文件nginx.conf配置详解如下: user nginx nginx; #Nginx用户及组:用户 组.window下不指定 worker_processes 8; #工作进程:数 ...

  3. 极简 Node.js 入门 - 1.3 调试

    极简 Node.js 入门系列教程:https://www.yuque.com/sunluyong/node 本文更佳阅读体验:https://www.yuque.com/sunluyong/node ...

  4. 文件上传Upload 学习笔记

    整理完自己还有点晕,看来还是得找点靶场自己练习练习Orz 1:客户端JavaScript校验 Burp改包即可 2:服务端对Content-Type进行校验 猜测后,修改对应Content-Type字 ...

  5. web新手第二周知识汇总

    这周学习了盒模型以及一些定位的知识,现在简单做下汇总 盒模型组成部分: ie浏览器默认值是border-box content(内容盒)蓝色 padding(内容和边框的距离 绿色 填充盒包含内容)b ...

  6. 2020-07-23:开启rdb后,redis的启动流程是怎样的?

    福哥答案2020-07-23: Redis 在完成初始化全局服务器配置,加载配置文件,初始化服务器,开始加载持久化的数据到内存中.如果启用了 appendonly 了,则Redis从 appendfi ...

  7. C#LeetCode刷题-二叉搜索树

    二叉搜索树篇 # 题名 刷题 通过率 难度 220 存在重复元素 III   19.3% 中等 315 计算右侧小于当前元素的个数   31.9% 困难 327 区间和的个数   29.5% 困难 3 ...

  8. Java程序员面试必备:Volatile全方位解析

    前言 volatile是Java程序员必备的基础,也是面试官非常喜欢问的一个话题,本文跟大家一起开启vlatile学习之旅,如果有不正确的地方,也麻烦大家指出哈,一起相互学习~ 1.volatile的 ...

  9. Memcached高可用组件之repcached

    在前边的tomcat session server msm的那篇博客我们用memcached做tomcat session服务器,默认官方memcached是不支持主从同步的,为了解决memcache ...

  10. 初识ABP vNext(4):vue用户登录&菜单权限

    Tips:本篇已加入系列文章阅读目录,可点击查看更多相关文章. 目录 前言 开始 登录 菜单权限 运行测试 最后 前言 上一篇已经创建好了前后端项目,本篇开始编码部分. 开始 几乎所有的系统都绕不开登 ...