0%

  • Python工程的组织结构:包、模块、类、函数、变量

    • 最顶级的组织结构:包(文件夹)
    • 第二个层级:模块(文件)
    • 第三个层级:类
    • 第四个层级:函数、变量(不属于组织结构,是类本身的特性)

    其中:

    1. 包:整个文件夹
    2. 模块:一个 py 文件
  • Python包与模块的名字

    区分不同包的同名模块:包名.模块名

    形成的模块的路径叫做命名空间

    一个包下面可以有子包,模块可以和包平级

    普通文件夹想要变成包必须要有init.py文件

    __init__.py 本身也是一个模块,可以不写内容只是标注包

    特殊地,__init__.py 模块的名字就是包名

  • __init__.py用途

    __init__.py 该文件的作用就是相当于把自身整个文件夹当作一个包来管理,每当有外部import的时候,就会自动执行里面的函数。

  • import导入模块

    对于重复的定义需要从其他模块里引用。

    利用 import 模块名 导入

    1
    2
    3
    4
    5
    6
    7
    # PackageTest1.Test1
    a = 1


    # PackageTest1.Test2
    import Test1
    print(Test1.a)

    import导入的总是模块,需要用模块名.变量名的方法引用

    可以用as简化书写

    1
    2
    3
    4
    5
    6
    7
    # PackageTest1.Test1
    a = 1


    # PackageTest1.Test2
    import Test1 as t1
    print(t1.a)

    同级目录可以直接导入模块

    优点是可以一眼看出属于哪个模块

  • from import 导入变量

    1
    2
    3
    # PackageTest1.Test2
    from c1 import a
    print(a)

    可以使用 from 包 import 模块 导入模块

    导入时使用 模块.变量

    导入大量变量时用 *

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    # PackageTest1.Test1
    a = 1
    b = 1
    c = 1


    # PackageTest1.Test2
    from Test1 import *
    print(a)
    print(b)
    print(c)

    控制 *

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    # PackageTest1.Test1
    __all__ = ['a', 'b']
    a = 1
    b = 1
    c = 1


    # PackageTest1.Test2
    from Test1 import *
    print(a)
    print(b)
    print(c) # 这里会报错,因为没有导入c

    注意:

    1. 使用 * 导入时,导入的是在所在包中 __init__.py 存在的变量

    2. 文件目录:

      initTest

      PackageTest1

      __init__.py

      Test1.py

      Test2.py

      Test.py

      其中:

      PackageTest1.__init__.py

      1
      2
      3
      4
      5
      import pandas as pd
      import numpy as np

      print("You have imported mypackage")
      # __all__ = ['pd', 'np'] # 这里不需要 __all__ 控制

      PackageTest1.Test1.py

      1
      2
      3
      4
      5
      6
      7
      from __init__ import * # 可以使用所在包中的 __init__ 导入大量的包

      class Test1():

      def __init__(self):
      a = np.array([i for i in range(10)])
      print(a)

      Test.py

      1
      2
      3
      4
      from PackageTest1 import * # 因为 PackageTest1.__init__ 中只有 pd, np 这两个变量,因此使用 * 只导入进来了 pd, np
      from PackageTest1.Test1 import Test1 # 因为在 PackageTest1.__init__ 中没有 Test1 这个模块,更没有 Test1 这个类,因此想要使用必须自行导入

      Test1()

      PackageTest1.__init__ 中导入 Test1 模块、类

      1. 导入 Test1 模块
        PackageTest1.__init__.py中添加 import PackageTest1.Test1 就可以在 Test.py中使用 Test1.Test1() 创建 Test1 类了。
      2. 导入 Test1
      3. PackageTest1.__init__.py中添加 from PackageTest1.Test1 import Test1 就可以在 Test.py中使用 Test1() 创建 Test1 类了。
      4. PackageTest1.__init__.py中添加 import PackageTest1.Test1 是错误的,会报错: ModuleNotFoundError: No module named 'PackageTest1.Test1.Test1'; 'PackageTest1.Test1' is not a package
  • __init__.py 用法

    1. 当包被导入时,__init__.py 会首先被自动执行,类似于构造函数
    2. __init__.py 的应用场景
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      # PackageTest1.__init__.py
      __all__ = ['a','b'] #初始化*

      import sys #批量导入库
      import datetime
      import io


      #Test.py
      import Test1
      print(Test1.sys.path)

      此时引用因为不是用的 * , 所以必须使用 包.类.成员函数 进行调用。

  • 多层目录各层互相调用

pacgage1

__init__.py

test1.py

test2.py

test3.py

test3 调用 package1,而 test1 调用 test2,此时,在 package1.__init__.py 中添加路径,如下:

1
2
import sys
sys.path.append("./package")
  • 包与模块的几个常见错误

    1. 包和模块是不会被重复导入的,只会执行一次(入口文件的概念)
    2. 避免循环导入,不要形成闭环
    3. 导入模块的时候会执行模块里所有的代码
    4. 如果使用 if __name__ == '__main__' 则不会执行该代码块中的代码

  • Windows环境

    1. 安装 CUDAcudnn

  1. 安装 CUDA

    1. 查看显卡信息,下载对应的cuda,点击这里下载

      各个版本

      最高的版本:低事实最高版本一个级别

      最好低最高版本低几个版本。

    2. 安装cuda,勾掉以下3个:

      1. NVIDIA Geforce Experience ……
      2. CUDAVisual Studio ……
      3. driver ……display driver
    3. 其他默认即可

    4. 注意:版本对照等重要信息见文末的参考资料

      问题:我的显卡比10.1大,但是没问题,

  2. 安装 cudnn

    1. 下载和 CUDA 对应的版本(建议不要下载最新的,看好官方文档在决定下载哪个)点击这里下载
    2. 解压
    3. 该文件名为 cudnn
    4. 复制到目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2
  3. 添加环境变量,详见参考资料

2. 安装 Tensorflow

  1. 安装 Tensorflow-cpu 版:
    1
    pip install --upgrade tensorflow
  2. 安装 Tensorflow-gpu 版:
    1
    pip install --upgrade tensorflow-gpu

    3. 报错

  3. 报错信息:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    Traceback (most recent call last):
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 18, in swig_import_helper
    return importlib.import_module(mname)
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
    File "<frozen importlib._bootstrap>", line 577, in module_from_spec
    File "<frozen importlib._bootstrap_external>", line 906, in create_module
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
    ImportError: DLL load failed: 找不到指定的模块。


    During handling of the above exception, another exception occurred:


    Traceback (most recent call last):
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 41, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 21, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 20, in swig_import_helper
    return importlib.import_module('_pywrap_tensorflow_internal')
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    ImportError: No module named '_pywrap_tensorflow_internal'


    During handling of the above exception, another exception occurred:


    Traceback (most recent call last):
    File "<stdin>", line 1, in <module>
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\__init__.py", line 24, in <module>
    from tensorflow.python import *
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\__init__.py", line 51, in <module>
    from tensorflow.python import pywrap_tensorflow
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 52, in <module>
    raise ImportError(msg)
    ImportError: Traceback (most recent call last):
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 18, in swig_import_helper
    return importlib.import_module(mname)
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    File "<frozen importlib._bootstrap>", line 986, in _gcd_import
    File "<frozen importlib._bootstrap>", line 969, in _find_and_load
    File "<frozen importlib._bootstrap>", line 958, in _find_and_load_unlocked
    File "<frozen importlib._bootstrap>", line 666, in _load_unlocked
    File "<frozen importlib._bootstrap>", line 577, in module_from_spec
    File "<frozen importlib._bootstrap_external>", line 906, in create_module
    File "<frozen importlib._bootstrap>", line 222, in _call_with_frames_removed
    ImportError: DLL load failed: 找不到指定的模块。


    During handling of the above exception, another exception occurred:


    Traceback (most recent call last):
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow.py", line 41, in <module>
    from tensorflow.python.pywrap_tensorflow_internal import *
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 21, in <module>
    _pywrap_tensorflow_internal = swig_import_helper()
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\site-packages\tensorflow\python\pywrap_tensorflow_internal.py", line 20, in swig_import_helper
    return importlib.import_module('_pywrap_tensorflow_internal')
    File "C:\Users\toy\AppData\Local\Programs\Python\Python35\lib\importlib\__init__.py", line 126, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
    ImportError: No module named '_pywrap_tensorflow_internal'

    Failed to load the native TensorFlow runtime.

    See https://www.tensorflow.org/install/install_sources#common_installation_problems

    for some common reasons and solutions. Include the entire stack trace
    above this error message when asking for help.
  4. 安装 vs2019即可:
  5. 选中:
    1. 通用 Windows 平台开发
    2. .NET 桌面开发
    3. ASP.NET 和 Web开发

4. 检测是不是用的 GPU:

  1. tf.test.is_gpu_available()
  2. 如下:
1
2
3
from tensorflow.python.client import device_lib

print(device_lib.list_local_devices())

参考资料

参考视频 1kc2

安装文件 qlgj

  • Ubuntu环境

  1. 安装 CUDA

    1. 查看显卡信息

      1
      $ nvidia-smi

      会得到以下信息:

      其中:

      版本
      显卡驱动 450.51.05
      cuda 11.0

      Note:

      1. 若没有安装过NVIDIA,那么 nvidia-smi 会报错,可直接安装cuda,因为cuda会自动安装显卡驱动
      2. 若安装完cuda, nvidia-smi 仍报错,那么重启就可以了。
    2. 下载cuda 点击这里下载

      注意:选择和自己系统相匹配的(在下安装的是11.0)

      网站会给出相应的安装命令,如下:

      1
      2
      3
      4
      5
      6
      7
      wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/cuda-ubuntu1804.pin
      sudo mv cuda-ubuntu1804.pin /etc/apt/preferences.d/cuda-repository-pin-600
      wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda-repo-ubuntu1804-11-0-local_11.0.2-450.51.05-1_amd64.deb
      sudo dpkg -i cuda-repo-ubuntu1804-11-0-local_11.0.2-450.51.05-1_amd64.deb
      sudo apt-key add /var/cuda-repo-ubuntu1804-11-0-local/7fa2af80.pub
      sudo apt-get update
      sudo apt-get -y install cuda

      Note: 若 wget http://developer.download.nvidia.com/compute/cuda/11.0.2/local_installers/cuda-repo-ubuntu1804-11-0-local_11.0.2-450.51.05-1_amd64.deb 下载太慢,那么用浏览器打开 wget 后面的网址即可浏览器下载。

  2. 添加 cudnn 环境变量

    1. 下载

      点击下载

      Note: 一定要下载与cuda相对应的版本,如:cuDNN Library for Linux (x86_64)

    2. 配置环境变量

      1. .bashrc 添加如下:

        1
        2
        export PATH="/usr/local/<cuda-11.0>/bin/:$PATH"
        export LD_LIBRARY_PATH="/home/<你的用户名>/cuda/lib64:$LD_LIBRARY_PATH" # cudnn解压的路径
  3. 查看cuda和cudnn是否安装成功

    1
    nvcc -V

    如果安装成功会得到以下信息:

    1
    2
    3
    4
    5
    nvcc: NVIDIA (R) Cuda compiler driver
    Copyright (c) 2005-2020 NVIDIA Corporation
    Built on Thu_Jun_11_22:26:38_PDT_2020
    Cuda compilation tools, release 11.0, V11.0.194
    Build cuda_11.0_bu.TC445_37.28540450_0
  4. 安装 tensorflow
    点击这里查看github教程

    Note:

    最好使用科学上网

  5. 检测 tensorflow-gpu 是否安装成功

    1
    2
    3
    import tensorflow as tf

    print(tf.test.is_gpu_available())

    参考视频 s3rv

    安装文件 a91m

一下操作均在 Terminal 进行

  1. 如果使用的是 bash:
    1. 方法一:
      1. sudo gedit ~/.bashrc
      2. 在最后一行添加: export PATH="~/anaconda3/bin:$PATH" (注意:使用你自己的安装目录,我的anaconda目录在 ~/anaconda3)
      3. source ~/.bashrc (用来激活环境变量)
      4. 激活:
        1. source activate
        2. conda activate
      5. 退出激活:
        1. source deactivate
        2. conda deactivate
  2. 如果使用的是 zsh:
    1. 方法一:
      1. sudo gedit ~/.zshrc
      2. 在最后一行添加
        1
        2
        export PATH="~/anaconda3/bin:$PATH"
        . /home/dgimo/anaconda3/etc/profile.d/conda.sh
      3. source ~/.zshrc
      4. 激活:
        1. conda activate
      5. 退出激活:
        1. conda deactivate

可以不看下面的,个人错误记录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
If your shell is Bash or a Bourne variant, enable conda for the current user with

$ echo ". /home/dgimo/anaconda3/etc/profile.d/conda.sh" >> ~/.zshrc

or, for all users, enable conda with

$ sudo ln -s /home/dgimo/anaconda3/etc/profile.d/conda.sh /etc/profile.d/conda.sh

The options above will permanently enable the 'conda' command, but they do NOT
put conda's base (root) environment on PATH. To do so, run

$ conda activate

in your terminal, or to put the base environment on PATH permanently, run

$ echo "conda activate" >> ~/.bashrc

Previous to conda 4.4, the recommended way to activate conda was to modify PATH in
your ~/.bashrc file. You should manually remove the line that looks like

export PATH="/home/dgimo/anaconda3/bin:$PATH"

^^^ The above line should NO LONGER be in your ~/.bashrc file! ^^^

  • JDK下载、安装及配置

  1. 下载地址:https://www.oracle.com/java/technologies/javase-downloads.html

  2. 选择 Java SE 8 - Oracle JDK - JDK Download

  3. 双击打开jdk,如: jdk-8u202-windows-x64.exe

  4. 安装完JDK后配置环境变量。右击“计算机”。点击“属性”

  5. 点击“高级系统设置”

  6. 点击“高级”,再点击“环境变量”。

  7. 点击“新建”。变量名输入JAVA_HOME,变量值输入安装路径。D:\Java\jdk1.8.0_202\

  8. 点击“新建”。变量名输入 CLASSPATH ,变量值输入 .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar

    1. 注意前面有一个 . 千万不要忘了。
  9. 在系统变量中找到“Path”,点击“编辑”

    1. (Error): 变量值输入%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; (这个是不行的,javac 用不了)
    2. (Success): C:\ProgramFiles\Java\jdk1.8.0_202\bin;C:\Program Files\Java\jdk1.8.0_202\bin\jre\bin; (分不分开都可以,只要是绝对路径即可,并且在前在后应该无关,如果 javac 用不了,那么就把这两个移到最前端即可)
  • Eclipse安装

    这里
  • Eclipse汉化

  1. 首先我们需要打开Eclipse,看一下我们安装的Eclipse的版本,依次点击Help>About Eclipse
  2. 确定版本后,就打开下面这个网站http://www.eclipse.org/babel/downloads.php找到对应的版本,并复制链接
  3. 打开Eclipse,安装新服务,依次点击Help>Install New Software…
  4. 在打开的新窗口中点击【Add】按钮,然后在【Location】文本框中输入刚刚复制的网址,点击【OK】按钮即可。
  5. 等待片刻便会看到软件检索到的语言包列表,下拉垂直滚动条,选择【Bable Language Packs in Chinese(Simplified)】下的【Bable Language Packs for eclipse in Chinese (Simplified)(简体中文)】包,点击【next】按钮进入下一步
  6. 过几秒中便跳到如下界面,勾选第一个【I accept...】单选框,点击【Finish】按钮完成设置。
  7. 进入安装界面,等待安装
  8. 等待片刻后,在弹出的【Security Warning】窗体中点击【Install anyway】按钮,之后在弹出的又一窗体【Software Updates】中点击【Restart Now】按钮完成语言包的安装并重启eclipse。
  9. 重启eclipse后,便会看到汉化后的eclipse界面啦

  • 重点:如果要改变变量的值就用指针,不改变就用变量本身;使用变量本身,那么相当于读取,对原来的数据没有任何影响。

  • 代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include <iostream>

using namespace std;

typedef struct Node {
int data;
struct Node *next;
}Node;

typedef struct Node *LinkList;

void initLinkList(LinkList *L)
{
(*L) = new Node;
(*L)->data = 0;
(*L)->next = NULL;
}

bool insertLinkList(LinkList head, int pos, int value)
{
LinkList p = head, t;
int j = 1;

while (p && j < pos) {
p = p->next;
j++;
}

if (!(p) || j > pos) return false;

t = new Node;
t->data = value;
t->next = p->next;
p->next = t;
head->data++;

return true;
}


bool deleteLinkList(LinkList l, int pos, int *value)
{
LinkList p = l, q;
int j = 1;

while (p->next && j < pos) {
p = p->next;
j++;
}

if (!(p->next) || j > pos) return false;

q = p->next;
p->next = q->next;
delete(q);
l->data--;
return true;
}

void clearLinkList(LinkList l)
{
LinkList p = l->next, q;
l->next = NULL;
while (p) {
q = p->next;
delete (p);
p = q;
l->data--;
}
}

void showLinkList(LinkList l)
{
cout << "Length is " << l->data << endl;
l = l->next;
while (l) {
cout << l->data << "\t";
l = l->next;
}
cout << endl;

return ;
}

int main()
{
LinkList head = NULL;
initLinkList(&head);

int value_del;
deleteLinkList(head, 1, &value_del);

for (int i = 1; i <= 10; i++) {
insertLinkList(head, i, i);
}
insertLinkList(head, 4, 10);
showLinkList(head);

deleteLinkList(head, 4, &value_del);
showLinkList(head);

clearLinkList(head);
showLinkList(head);

return 0;
}
  • 详解

  1. 该链表是有头结点的链表;
  2. 什么时候用 LinkList LLinkList *L
    1. 需要改变指针的值的时候用 LinkList *L,若对指针的值没有改变时,使用 LinkList L
  3. 链表注意事项:
    1. LinkList head;只是定义了一个 变量名为head的指针变量,是一个野指针,那么需要在定义的时候进行初始化,即:LinkList head = NULL
    2. 想要使用 head 指向头结点,需要自己 new 一个结构体,将这个结构体的地址赋给 head
  4. insertLinkListdeleteLinkList的异同:
    1. insertLinkListdeleteLinkList不论在位置 pos 处插入一个结点还是在pos处删除结点,都是对 pos-1 进行操作。
    2. 在使用 while 循环时,insertLinkList是以第j个位置为判断对象,而 deleteLinkList是以第j+1个位置为判断对象的(其中:头结点为第1个位置)。

  • 前言

    C语言之虚拟大厦不要以常规的思维来理解,类似于 钢铁侠 中的 Jarvis,即:虚拟人工智能大厦,类似于科幻片。
  • 正文

    1. 写C语言程序就像在虚拟世界中建造一座人工智能的大厦,但是由于大厦的智能水平有限,需要人为赋予它功能,因此,这个大厦只可以用来解决某一特定的功能,如:计算、预测等。
    2. 在这座大厦中肯定会有无数个房间,每个房间会有门牌号,如: 0101等等。当然,既然是科幻的,每个房间的大小也可以随意设置规格呗,但是呢,由于规格的个数有限,所以每个房间的大小都需要在已有的规格之中。在这里的规格即为:数据类型,所以这个规格是用来规定房间的大小的。 数据类型包括:char, int, float, double,而这些房间就是所谓的 变量,即:变量就是内存空间也就类似于一个个的房间。众所周知,房间可以用来放东西,可以放苹果、橘子、橙子等,但是需要保证可以放得进去,还得保证得是一个品种,总不能放苹果的房间放个橘子,这个就不合适了,毕竟每个房间有每个房间的作用,这样乱放容易打架啊,就像血液一样,A型的血不能给O型的,有人会说O型的血可以输给A型的啊(在这里先买个关子,预知后事如何请继续向下看);刚才说了放苹果的房间不能放橘子,然后还得有啥呢?假设有一个房间只能放一个普通苹果的大小,你给找来了一个变态大的苹果,肯定放不进去啊,你要硬放进去,肯定会弄下来一块肉,也就面目全非了啊,所以这个房间只能放在它能承受范围内的东西。所以,变量也是用来放东西的,但这个东西有一个殊荣,给了它一个名字叫: ,这些值可以是:字符、整数、小数,看你需要啥了,你就想这个房间里天空飘着一堆数字或者字符。 对这些变量进行的操作,即对变量存放的值进行操作。比如:你说我想吃苹果,他就给你拿苹果给你,总不能把房间拿来给你吃啊,虽然里面有苹果,但是房间你也吃不了啊。
    3. 刚开始编写C语言就行建造了一个大厦,里面还没有任何装修,每定义一个变量,就相当于给这个大厦装修了一个房间,这个房间可大可小,已经突破了传统物理学(哈哈哈),但是已经装修了,就不能再变大变小了。而且:这个房间是人工智能自己装修的,不是你说在哪就在哪,你只能告诉他这个房间叫啥名,地方你不能选,其中:这个房间的名字叫做:变量名
    4. 有一天,来了一个有钱人,带着他的七大姑八大姨来住房,他说了我要10个房间,还得是连着的,第一个房间住甲,第二个房间住乙,…,第十个房间住癸。这个连续的房间叫做:数组。 当然了,世界上也有钱办不到的事情啊,在这里他就不能指定这10个房间在哪,只能给这10个房间命名,这个名字就叫做:数组名,而且你既然已经订了这10间房就这10间房,你可以空着,但是却不能说:我又来了一个二表姐,再添一个挨着的房间,明确的告诉你:不可能。你和机器也发不了脾气,只能默默忍受,想要11个连着的房间只能重新订房,房钱可不会退的,你也就有了21间房即:数组不能销除。你会说两人挤一间房不得了,不可以的呦,一个房间只能容纳一个人,第二个人可容不下了,毕竟无奸不商,要把所有的能用的地方用来赚钱,能省一点是一点。
    5. 客人肯定有很多的需求,有的要苹果汁,有的要西瓜汁,流程是一样的,为什么不另盖一座大厦专门用来完成这个需求呢,这个另一座大厦叫做:函数。你可以给这个大厦命名,这个名字叫做: 函数名,但是你不能说这个大厦盖到哪里,他就算盖到北极你也管不了哦(因为这是任性的人工智能),反正给你你要的结果就可以了,毕竟可以瞬间传输。有人会问了,怎么知道是要西瓜汁还是苹果汁呢,这里就需要一个参数咯,这个参数叫做:形式参数(简称形参),这个形参是大厦盖好,就自动装修的房间,用来存储传来的信息的(即参数值)。当然了这个参数值和原来的肯定不一样咯,你想想你传来的值,就相当于把原来的值复制了,然后拷贝到形参房间里存储,这俩就没关系了,改变任意一个对另一个肯定没有任何影响啊,这个传递方式叫做:值传递
    6. 俗话说:林子大了什么鸟都有。有的人就比较任性他就吃夏威夷的苹果,他自己带来了,放到他买的房间了(这个房间不是那个人买的用来住的,是单独买的,用来放水果的),这可咋办呢,你想想你的身份证,是不是有具体的位置呢,这个肯定有啊,比如叫: 北极001号楼0101号房,类似于 北极001号楼0101号房这个叫做:地址,这个0101号房可不是你取得名字,是人工智能用来区分给默认设置的。这时候你只需要把这个房间的地址,传递给那个加工果汁的大厦,他就可以对那个客户带的苹果进行加工了,这个传递叫做:地址传递。当然了,这个地址传递也是值传递,只不过这个更高级了,可以跨楼处理了,而且这个地址传递用的多,因此才给他一个殊荣叫:地址传递。这个大厦可以根据传来的地址,对其他的大厦的房间里面的东西进行操作,有人会问,为啥不能根据起的名字进行操作呢?首先,这个大厦只能操作这个大厦里面是这个名字的房间,否则不就逾矩了,管好自己的一亩三分地就可以了,比如:你想吃苹果,你不能拿别人家的一样啊。其次呢,你起名字叫 天字一号房,别人也可以这么取名啊,人工智能虽然叫智能,实际上还是一个傻子,这么多的 天字一号房,他也不知道具体是哪个啊,这样他就会犯迷糊了,一犯迷糊不就不干了。
    7. 比如这个函数里调用了另一个函数,这另一个函数又调用了另另一个函数,那么就多次传递呗,反正也没损失。

  1. 开区间
    1. 零点定理
    2. Role中值定理
    3. 拉格朗日中值定理
    4. 柯西中值定理
    5. 泰勒中值定理
    6. 积分中值定理推广
  2. 闭区间
    1. 介值定理
    2. 积分中值定理

  1. 函数 $f(x)、f(t)$注重的是 $f$ 与 $x、t$无关
  2. 不定积分 $\int f(x)dx$、$\int f(t)dt$注重的是积分变量,与 $x、t$有关

    【释】:
    $$\because t = g(x)$$
    $$\therefore t与x可能有关系$$
  3. 定积分 $\int_{a}^{b} f(x)dx 与 \int_{a}^{b} f(t)dt$ 注重的是 $[a,b] 和 f$ 与 $x、t$无关
    【释】:
    $$即便积分变量不同,但是函数关系相同和上下限相同,所以面积相同(几何意义)$$

$dx$ 与 $\Delta x$ 的区别

  1. $\Delta x$表示的是$x$的增量,例如:在数轴上两点$x_1, x_2$,则$\Delta x = x_2 - x_1$表示的就是$x_1$到$x_2$的增量(可以为正、负或者0),这个和我们从初高中理解的一样。

  2. $dx$是在微分学才有的符号,在$\Delta x \rightarrow 0$时,$dx=\Delta x$,其他时候,$dx \approx \Delta x$

  3. 微分,直观的理解就是分成一小块一小块,在每一小块中,用直线去近似曲线进行研究,如果这一小块无限趋近于0了,那么近似就变成等于了。一般写成dx的形式时,就说明是这一小块无限趋近于0的情形,即是研究某点微分的情形。某点函数值的微分与该点自变量的微分之比就是这点的导数(也称微商),高中只提导数,不提微分,在这里让它们接轨。

  4. 在进行微积分计算时,有时候总觉得dx很多余,想扔掉它。明白了它的含义,你就舍不得扔了,它代表的是增量,自变量的增量乘以变化率(导数),就得到了函数值的增量,不积跬步无以至千里,这一点点的增量最后积分起来,就造成了一个大的变化。

  5. 一些常用符号

  6. 一些概念

    1. 函数是从数到数的映射;
    2. 算子是从函数到函数的映射;
    3. 线性映射,也成为线性变换(这里的线性与函数图形是否为直线没关系)需满足下列条件:
      1. 可加性:f(x+y)=f(x)+f(y)
      2. 齐次性:f(ax)=af(x)

  1. Prt Scm 抓取整个桌面
  2. Alt + Prt Scm 抓取当前窗口
  3. Shift + Prt Scm 抓取选定区域