diff --git "a/src/site/notes/\346\212\200\346\234\257/python/python\350\257\255\346\263\225.md" "b/src/site/notes/\346\212\200\346\234\257/python/python\350\257\255\346\263\225.md" index d5b0171..0aaa082 100644 --- "a/src/site/notes/\346\212\200\346\234\257/python/python\350\257\255\346\263\225.md" +++ "b/src/site/notes/\346\212\200\346\234\257/python/python\350\257\255\346\263\225.md" @@ -4,129 +4,114 @@ # python环境 ## 什么是python环境 -1. python解释器 用来读取和执行python代码 -2. 包管理器 用来安装、更新和删除库与模块 -3. python库 有时我们也将其称为python模块。他是一系列预先编写好的代码,他可以帮助我们快速实现功能。比如我们使用opencv的库就能实现读取图像的功能 -## 如何配置python环境 -1. 下载vscode并安装 https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user -2. 下载miniconda并安装 https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe -## 如何使用python环境 +python解释器 +库和模块 +### 什么是python解释器 +他用来执行python代码 +### 什么是库和模块 +#### 什么是模块 +其实就是python文件 +#### 什么是库 +多个模块的集合。 +## 如何配置环境 +vscode https://code.visualstudio.com/sha/download?build=stable&os=win32-x64-user +miniconda https://repo.anaconda.com/miniconda/Miniconda3-latest-Windows-x86_64.exe +### 如何配置vscode和miniconda # python语法 -## 什么是python类 -python类是面向对象编程中的一个核心概念。类是一种描述相同属性和方法(函数)的抽象数据类型的蓝图。他包含了对象(类的实例化实例)共享的属性和方法。 -### 什么是面向对象编程 -他使用对象作为代码的基本单位。对象具有2个主要成分,即属性和方法。他的核心思想是将数据及其操作封装到能够模拟现实世界的对象中,以提高代码的可读性、可扩展性和可维护性 -他有3个主要特征 -1. 封装 封装是将对象的内部实现细节(属性和方法)隐藏起来 -2. 继承 允许新创建的类从已有的类中继承属性和方法 -3. 多态 不同类的对象可以使用相同的方法 -##### 什么是封装继承和多态 -1. 子类多态 -``` -class Animal: - def make_sound(self): - pass -class Dog(Animal): - def make_sound(self): - return 'wangwangwang' -class Cat(Animal): - def make_sound(self): - return 'miaomiaomiao' -dog = Dog() -dog.make_sound() -cat = Cat() -cat.make_sound() +## 什么是import +用于导入其他模块或库。 +``` +import math +result = math.sqrt(16) +``` +## 什么是字典 +字典由一个个元素构成。元素由键值对构成。 +``` +my_dict = { + "name": "Alice", + "age": 30, + "city": "New York" +} +``` +在这个字典中,存在三个键,`name`、`age` 与 `city`,这些键分别对应值 "Alice",30 和 "New York" +``` +name = my_dict["name"] # name will be "Alice" +``` +https://dl.google.com/android/repository/platform-tools-latest-windows.zip?hl=zh-cn +## .代表了什么 +可以简单翻译为`的` +当我们看到了os.,代表他使用了os模块中的一个方法、属性或者功能 +``` +os.getcwd() +os.chdir("/path/to/new/directory") +os.listdir("/path/to/new/directory") +os.mkdir("/path/to/new/directory") +os.remove("/path/to/new/directory") +``` +## 为什么使用`os.environ['path'] = "platform-tools;" + os.environ['path']` +这段代码的功能是将platform-tools文件夹添加到系统环境变量中。系统环境变量是一个包含多个目录路径的列表。操作系统将在这些目录中查找可执行文件。通过在环境变量中添加新的目录,应用程序可以更容易色使用该目录中的可执行文件 +获取当前系统环境变量的值 `os.environ['path'] +将platform-tools文件目录添加到系统环境变量的开头 `"platform-tools;" + os.environ['path'] +更新系统环境变量 `os.environ['path'] = "platform-tools;" + os.environ['path']` +这样我们就使得应用程序(python)能够轻松调用platform-tools 下的可执行文件 +## python如何使用可执行文件 +python调用subprocess库,subprocess调用cmd,cmd再去调用可执行文件 +## 什么是python函数 +函数是一组组织好的,可以重复使用的代码,用于执行特定的任务或者计算值。可以使用`def` 关键字来定义一个函数。比如 +``` +def greeting(name): + return f'Hello,{name}' +``` +该函数接受一个参数`name`。使用`return` 关键字返回一个基于参数的字符串。比如传递一个参数`alice` +``` +result = greeting('alice') #返回Hello, Alice! +print(result) #直接在屏幕上打印出Hello, Alice +``` +python提供了许多内置参数,比如print()用来打印 +函数可以有多个参数,也可以有可选参数或者默认参数值。 +## 什么时候使用缩进(tab) +1. 函数定义 当定义函数时,要缩进函数体内的所有语句 +2. 控制流语句 if、for、while需要再代码块内缩进 +3. 异常处理语句 需要缩进相应代码块 +4. 类定义 需要缩进类体内的所有语句 +## 什么时候使用换行(回车) +当一条语句结束,要开始下一条语句时要使用换行 +在函数定义、控制流语句、异常处理语句和类定义中,新的代码应该从新的一行开始且需要缩进 +## 什么是类 +类是一个模版,他用于描述具有相同属性和方法的对象 +要定义一个类,要使用关键字`class`,后跟类名,`:`以及一个缩进的代码块 +## 什么是构造函数 +`__init__`是一个特殊的函数(方法),被称为构造函数(初始化函数)。他会在创建类的实例(对象)时自动调用。他可以用于在创建对象时设置对象的初始状态、分配资源或者其他与对象相关的操作 +定义`__init__`函数必须遵循以下格式: +``` +class Mycalss(): + def __init__(self,param1,param2,.....) + #构造函数体,初始化操作 +``` +## 什么是对象(实例) +他由类实例化创建 +类 一组具有相同属性和方法(函数)的对象的模版。 +## self是什么 +他就是对象。他是一个指向类对象的引用。 +## 类在实例化对象的时候需要什么参数 +创建对象所需的参数与构造函数的参数相同。但是实际调用构造函数时,python会自动传递self参数. +`__new__`方法负责创建并返回类的对象。当调用该方法时,我们传递是类而不是实例,因为实际上我们调用该方法时还没有创建对象 +``` +class MyClass: + def __init__(self, param): + self.param = param -``` -2. 鸭子类型 -``` -class Dog(Animal): - def make_sound(self): - return 'wangwangwang' -class Cat(Animal): - def make_sound(self): - return 'miaomiaomiao' -def play_sound(thing): - print(thing.make_sound()) -``` -### 什么是属性和方法 -属性也被称为成员变量,用于表示类的对象的状态或者数据。他们一般在类的`__init__` 中定义并初始化。 -方法也被称为成员函数。方法表示对象的行为,即对象使用的函数。 -#### 什么是变量,什么是函数 -变量 我们可以将他理解为一个容器(杯子),他可以存储一些值 -函数(方法) 函数将一段代码(操作)封装起来,以便重复使用或者执行特定任务。 -##### 如何使用变量和函数 -``` -a = 1 -a = 2 -a = 3.14 -a = '你好' -``` -函数使用def关键字进行定义,后跟函数名称和一对圆括号。圆括号内可以包含参数,函数体则已冒号和缩进表示出区域,函数体就是函数的操作,并且使用return返回函数的结果 -``` -def add(x,y): - z = x + y - return z -add(100,200) -``` -### 什么是对象,他和类有什么区别 -类 他描述了一组具有相似属性和方法的对象,他是一个抽象的概念。类是对象的蓝图(模版),他定义了如何构造(实例化)一个对象,以及对象具有哪些属性和行为,他仅仅表示了如何为程序创造对象 -对象 对象是类的实例,由类创建。创建对象时,基于类的定义来创建具体的数下和方法。每个对象都有自己的状态,通常有属性值表示。一个类创造的多个对象会具有相同的方法,但可能会有不同的属性 -#### 如何使用一个对象 -如果要使用一个对象,首先要有一个定义好的类,该类描述了此对象的特征和行为。接下来才能根据这个类创建一个对象并且使用他。 -``` -class Penson(): - def __init__(self,name,age): - self.name = name - self.age = age - def say_hello(self): - print(f'{name},{age}') -zga = Penson(name='zga',age='18') -zga.say_hello() -``` -##### python中什么时候使用缩进 -缩进用于表示代码块的开始和结束。有以下使用场景 -1. 函数 -2. 条件、判断与循环语句 -3. 异常处理语句 -4. 类定义 -5. 上下文管理器 -###### 什么是代码块 -1. 函数中的代码为一个代码块 -2. 条件、判断与循环语句中的代码为一个代码块 -3. ...... -###### 什么是条件语句 -``` -if x > 5: - pass -else: - pass -``` -###### 什么是循环语句 -for -``` -fruits = ["apple", "banana", "orange"] -for fruit in fruits: - print(fruit) -``` -while -``` -while x < 20: - print(x) - x = x + 1 +my_instance = MyClass.__new__(MyClass) # 新建一个实例,但没有执行__init__ +my_instance.__init__(my_instance,"a_parameter") # 然后手动调用__init__并提供self参数 -``` -###### 什么是异常处理语句 -异常处理语句是一种用于捕获和处理程序中运行时可能出现的错误或异常的编程结构。运行时的错误可能由于代码编写错误或者外部因素(内存空间不足,硬盘空间不足,文件不存在等等)导致的问题, -1. try -用于放置可能引发异常的代码 -2. except -如果捕获到try中引发的异常,定义如何处理他们 -3. finally -可选的,不管try是否发生异常,他都要执行 -###### 什么是上下文管理器 -``` -with open('file.txt','r') as file: - content = file.read() -``` \ No newline at end of file +my_instance = MyClass(param) +``` +## `:`的作用? +控制结构,函数定义和类定义后都需要加`:`,并且冒号后需要增加缩进 +## `()`的作用 +函数 紧跟在函数名后的括号包含传递给函数的参数 +类 实现类继承时,父类放在类名后的括号内 +元组 `t = (1,2,3)` +表示优先顺序 `result = (1 + 2) * 3 # 结果为 9,因为先计算括号内的加法` +![image.png](https://raw.githubusercontent.com/DapperZhengLong/imgroom/main/obsidian/20240801183523.png)