深度学习必备python基础(3天学完)

Python环境安装

安装Anaconda

建议安装Anaconda ,自带Python环境; 在命令提示符内输入python回车输入代码回车即可执行
在Anaconda中创建虚拟环境安装GPU版本的Pytorch

常见问题

Q1:命令提示符内,输入python出现 ‘python’ 不是内部或外部命令,也不是可运行的程序或批处理文件
在这里插入图片描述

A1:安装python的时候,没有勾选:add python 3.10 to PATH的选项在这里插入图片描述
添加环境变量 or 卸载Python,重新安装python,勾选这个选项
然后重新打开命令提示符程序,即可

Q2:命令提示符内,出现“无法初始化设备 PRN
在这里插入图片描述
A2:这是因为没有进入到python解释器环境内执行代码。应该在命令提示符内:在这里插入图片描述

Q3:执行出现:SyntaxError: invalid character ‘“’ (U+201C)在这里插入图片描述
A3:这是因为,代码中的符号是中文符号。
请检查代码中的双引号、小括号,应该是英文符号

Python解释器

计算机不认识Python代码,但是Python有解释器程序,如下图在这里插入图片描述
安装Python环境,本质 = 电脑中安装Python解释器程序代码,随时可以写,但能不能运行,就要看电脑里面有没有解释器程序了。

解释器存放在:<Python安装目录>/python.exe在这里插入图片描述

CMD(命令提示符)程序内执行的python,就是下图的python.exe程序在这里插入图片描述

不使用解释器,计算机不认识Python代码
在这里插入图片描述

使用Python解释器程序,就能执行Python代码了
在这里插入图片描述

在python解释器程序内,写完一行代码并回车,会直接运行。
能否写好多行代码,一次运行呢?
可以将代码写入一个以".py"结尾的文件中,使用python命令去运行它。
如,在Windows系统的D盘,新建一个名为:test.py的文件,并通过记事本程序打开它,输入如下内容:
在这里插入图片描述

在“命令提示符”程序内,使用python命令,运行,如图:
在这里插入图片描述

Python开发环境

Python程序的开发有多种方式,常见的有:

  • Python解释器环境内,执行单行代码
  • 使用Python解释器程序,执行Python代码文件
  • 使用第三方IDE(集成开发工具),如PyCharm软件
    Pycharm安装

常用快捷键

撤销:Ctrl/Command + Z
重做:Ctrl/Command + Y
加粗:Ctrl/Command + B
斜体:Ctrl/Command + I
标题:Ctrl/Command + Shift + H
无序列表:Ctrl/Command + Shift + U
有序列表:Ctrl/Command + Shift + O
检查列表:Ctrl/Command + Shift + C
插入代码:Ctrl/Command + Shift + K
插入链接:Ctrl/Command + Shift + L
插入图片:Ctrl/Command + Shift + G
查找:Ctrl/Command + F
替换:Ctrl/Command + G
弹出传参提示:Ctrl/Command + P

基础知识

字面量

  • 被写下来的固定的值。

字符串(string)

  • 字符的串,又称文本,由任意数量的字符,如中英文、各类符号、数字组成,用单引号’ ‘、双引号" "或三引号’‘’ ‘’'括起来。

注释

  • 单行注释:通过 # 号定义,在#号右侧的所有内容均作为注释
  • 多行注释:通过一对三个引号来定义(“”" “”" 或 ‘’’ ‘’'),引号内部均是注释,可以换行

变量

  • 在程序运行时,能储存计算结果或能表示值的抽象概念。变量的值可以改变。
    在这里插入图片描述

print语句

  1. print(内容1, 内容2, …, 内容N)
    在这里插入图片描述
    在这里插入图片描述

  2. 默认print语句输出内容会自动换行
    在这里插入图片描述
    在print语句中,加上 end=’’ 即可输出不换行了
    在这里插入图片描述

  3. \t = 在键盘上按下tab键,让多行字符串进行对齐。
    在这里插入图片描述

数据类型

在这里插入图片描述
type(变量)可以输出类型,查看的是:变量存储的数据的类型。变量无类型,但是它存储的数据有。字符串变量表示变量存储了字符串,而不表示变量就是字符串。

数据类型转换

  1. 从文件中读取的数字,默认是字符串,需要转换成数字类型
  2. input()语句,默认结果是字符串,若需要数字也需要转换
  3. 将数字转换成字符串,用以写出到外部系统…
语句(函数)说明
int(x)将x转换为一个整数
float(x)将x转换为一个浮点数
str(x)将x转换为字符串

这三个语句,都是带有结果的(返回值),可以用print直接输出,或用变量存储结果值。

  • 任何类型,都可以通过str(),转换成字符串
  • 字符串内必须真的是数字,才可以将字符串转换为数字
  • 浮点数转整数会丢失精度(小数部分)

标识符

  1. 定义:用户编写代码时,对变量、类、方法等编写的名字。
  2. 命名规则
    内容限定:中文、英文、数字、下划线
    大小写敏感
    不可使用关键字
    在这里插入图片描述
  3. 命名规范
    见名知意
    下划线命名法
    英文字母全小写

运算符

在这里插入图片描述
在这里插入图片描述

字符串扩展

  • 单引号定义法,可以内含双引号
  • 双引号定义法,可以内含单引号
  • 可以使用转移字符(\)来将引号解除效用,变成普通字符串

字符串拼接

  • 使用“+”号连接字符串变量 or 字符串字面量 即可
  • 无法和非字符串类型进行拼接

字符串格式化

  1. 多个变量占位,变量要用括号括起来,并按照占位的顺序填入。
    “%占位符” % 变量
    在这里插入图片描述
格式符号转化
%s将内容转换成字符串,放入占位位置
%d将内容转换成整数,放入占位位置
%f将内容转换成浮点型,放入占位位置
  1. 快速格式化
    f”{变量} {变量}”
    f"{表达式}":"%s\%d\%f" % (表达式、表达式、表达式)
    不理会类型
    不做精度控制
    适合对精度没有要求的时候快速使用
    在这里插入图片描述
    在这里插入图片描述

数字精度控制

  • 使用辅助符号"m.n"来控制数据的宽度和精度,m和.n均可省略。
    m,控制宽度,要求是数字(很少使用),设置的宽度小于数字自身,不生效
    .n,控制小数点精度,要求是数字,会进行小数的四舍五入
    在这里插入图片描述

数据输入

  • input()语句获取键盘输入的数据
  • input(提示信息),在使用者输入内容之前提示。
  • 无论键盘输入什么类型的数据,获取到的数据永远都是字符串类型
    在这里插入图片描述

判断语句

  • 布尔(bool)表达现实生活中的逻辑,即真和假
    True表示真,False表示假。
    True本质上是一个数字记作1,False记作0
    <比较运算符>计算得到bool类型的结果
    在这里插入图片描述

if语句

  • 判断条件的结果一定要是布尔类型
  • 不要忘记判断条件后的: 引号
  • 归属于if语句的代码块,需在前方填充4个空格缩进
    在这里插入图片描述

if-else语句

  • else不需要判断条件,当if的条件不满足时,else执行
  • else的代码块,同样要4个空格作为缩进

if-elif-else语句

  • elif可以写多个,完成多个条件的判断
  • 判断是互斥且有序的,上一个满足后面的就不会判断了
  • 可以在条件判断中,直接写input语句,节省代码量

for / 遍历 循环

基础语法

  • while循环的循环条件是自定义的,自行控制循环条件。
  • for循环for循环无法定义循环条件,只能从被处理的数据集中,依次取出内容进行处理,是一种”轮询”机制,是对一批内容进行”逐个处理”。
# 从待处理数据集中,逐个取出数据赋值给临时变量
for 临时变量 in 待处理数据集(可迭代对象): 
    循环满足条件时执行的代码

range语句

  • 可迭代类型:其内容可以一个个依次取出的一种类型,包括:字符串、列表、元组。
语法说明
range(num)[0, num)的数字序列,如range(5)取得的数据是:[0, 1, 2, 3, 4]
range(num1, num2)[num1, num2)的数字序列,步长1
range(num1, num2, step)[num1, num2),步长step,如,range(5, 10, 2)表示:[5, 7, 9]

变量作用域

  • for循环中的临时变量,作用域限定为:循环内
  • 这种限定是编程规范的限定,而非强制限定(不建议)
  • 如需访问临时变量,可以预先在循环外定义它

for循环嵌套

  • for循环和while循环可以相互嵌套使用
  • 在for和while循环中作用一致
  • 只能作用在所在的循环上,无法对上层循环起作用
关键字作用
continue中断所在循环的当次执行,直接进入下一次
break直接结束所在的循环

数据容器

可以容纳多份数据的数据类型,每份数据称为一个元素,其类型可以不一样,如字符串、数字、布尔等。
分为5类:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

列表(list)- []

定义

在这里插入图片描述

特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是有序存储的(下标索引)
  • 允许重复数据存在
  • 可以修改(增、删、改等)
  • 支持嵌套
  • 支持for、while循环
    在这里插入图片描述
    在这里插入图片描述
索引
  1. 从前向后,编号从0开始递增
    从后向前,编号从-1开始递减
  2. 列表[下标],即可取出对应位置的元素
  3. 要注意下标索引的取值范围,超出范围无法取出元素,并且会报错
    在这里插入图片描述
    在这里插入图片描述
方法

如果将函数定义为class(类)的成员,那么函数会被称为方法。
函数:函数
方法:方法
函数的使用:在这里插入图片描述
方法的使用:在这里插入图片描述
在这里插入图片描述
pop()方法用于从列表中移除并返回指定位置的元素。如果不指定位置,则默认移除并返回列表的最后一个元素。
在这里插入图片描述
在这里插入图片描述

遍历 / 迭代

for、while循环

元组(tuple)- ()

定义

在这里插入图片描述
在这里插入图片描述
若元组只有一个数据,这个数据后面要添加逗号

特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是有序存储的(下标索引)
  • 允许重复数据存在
  • 不可以修改普通元素(增、删、改等),只可以修改元组内的list的内容(增、删、改、反转等)
  • 支持嵌套
  • 支持for、while循环
    在这里插入图片描述
方法

在这里插入图片描述

字符串(str)- ""

定义

字符的容器。

特点
  • 只可以存储字符串
  • 长度任意(取决于内存大小)
  • 支持下标索引
  • 允许重复字符串存在
  • 不可以修改(增、删、改等)
  • 支持for、while循环
    在这里插入图片描述
方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

序列的切片

序列

内容连续、有序,可使用下标索引的一类数据容器,如:列表、元组、字符串。

切片
  • 定义:表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列。序列(列表、元组、字符串)支持切片。
  • 语法:序列 [起始下标 : 结束下标 : 步长]
    起始下标可以留空,视作从头开始。
    结束下标(不含)可以留空,视作截取到结尾。
    步长N:每次跳过N-1个元素。步长为负数:表示反向取(下标也要反向标记)

集合(set)- {}

定义

在这里插入图片描述
不能用{}定义空集合,会被当作dict。

特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(混装)
  • 数据是无序存储的(不支持下标索引
  • 不允许重复数据存在
  • 可以修改(增加或删除元素等)
  • 支持for循环,不支持while循环
方法

在这里插入图片描述

字典、映射(dict)-{}

定义

在这里插入图片描述

特点
  • 可以容纳多个数据
  • 可以容纳不同类型的数据(key不可为字典)
  • 每个元素是一个键值对,Key:Value,键值对之间使用逗号分隔
  • Key不可重复,重复会对原有数据覆盖
  • 字典不可用下标索引,而是通过Key检索Value
  • 可以修改(增、删、改元素等)
  • 支持for循环,不支持while循环
    在这里插入图片描述
    访问Values里的dict:stu_score[key1][key2]
方法

在这里插入图片描述

数据容器的对比

在这里插入图片描述

通用方法

在这里插入图片描述

字符串大小比较
  • 字符串的字符,如:大小写英文字母、数字、特殊符号(!、\、|、@、#、空格等),都有对应的ASCII码值。
  • 字符串大小比较 = 基于数字的码值大小比较。
  • 从头到尾,一位位进行比较,其中一位大,后面就无需比较了。
    在这里插入图片描述
    在这里插入图片描述

函数

定义

  • 函数:是组织好的,可重复使用的,用来实现特定功能的代码段。
  • input()、print()、str()、int()、len()等都是Python的内置函数,随时都可以使用

语法

''' 
先定义函数,后调用函数
参数不需要,可以省略,传入参数的数量是不受限制的
返回值不需要,可以省略
'''
def 函数名(形参):
    函数体
    return 返回值

函数说明文档

def func(x, y):
    """
    函数说明(应写在函数体之前)
    :param x: 参数x的说明
    :param y: 参数y的说明
    :return: 返回值的说明
    """
    函数体
    return 返回值

变量的作用域

  • 局部变量:定义在函数体内部的变量,临时保存数据,当函数调用完成后则销毁,只在函数体内部生效。
  • 全局变量:在函数体内、外都能生效的变量。使用 global关键字声明。
    在这里插入图片描述

返回值之None类型

  • None是类型 “NoneType” 的字面量,表示:空的、无意义的
  • 不使用return语句 / 主动return None,即返回None
  • 使用场景:函数返回值 / if判断(None等同False) / 定义变量(暂不需要变量有具体值,用None来代替)

多返回值函数

  • 按照返回值的顺序,写对应顺序的多个变量接收,变量之间用逗号隔开
  • 支持不同类型的数据return
    在这里插入图片描述

多种传参方式

位置参数
  • 调用函数时,根据函数定义的参数位置来传递参数
  • 传递的参数,和定义的参数的顺序及个数必须一致
    在这里插入图片描述
关键字参数
  • 函数调用时,通过 “键=值” 形式传递参数。
  • 函数调用时,位置参数必须在关键字参数的前面,但关键字参数之间不存在先后顺序。
    在这里插入图片描述
缺省参数 / 默认参数
  • 用于定义函数,为参数提供默认值,调用函数时可不传该默认参数的值。
  • 所有位置参数必须出现在默认参数前,包括函数定义和调用。
  • 函数调用时,如果为缺省参数传值,则修改默认参数值, 否则使用这个默认值。
    在这里插入图片描述
不定长参数 / 可变参数
  • 当调用函数时不确定参数个数时(不传参也可以)的场景。
  • 类型:位置传递、关键字传递。
    位置不定长:传递以*号标记一个形式参数,以元组的形式接受参数,形式参数一般命名为args
    关键字不定长:传递以**号标记一个形式参数,以字典的形式接受参数,形式参数一般命名为kwargs
    在这里插入图片描述
    在这里插入图片描述

匿名函数

函数作为参数传递
  • 函数本身可以作为参数,传入另一个函数中使用。
  • 传入计算逻辑,而非传入数据。
    在这里插入图片描述
lambda函数
  • def关键字,定义带有名称的函数,基于名称重复使用
  • lambda关键字,定义匿名函数(无名称),只可临时使用一次。
'''
lambda 是关键字,表示定义匿名函数
传入参数表示匿名函数的形式参数,如:x, y 表示接收2个形式参数
'''
lambda 传入参数:函数体(只能写一行代码,无法写多行)

在这里插入图片描述

文件

文件的编码

  • 编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑。最常用的是UTF-8编码
  • 计算机只认识0和1,需要将内容翻译成0和1才能保存在计算机中。
    同时也需要编码, 将计算机保存的0和1,反向翻译回可以识别的内容。

文件的读取

文件
  • 内存中存放的数据在计算机关机后就会消失。要长久保存数据,就要使用硬盘、光盘、U 盘等设备。为了便于数据的管理和检索,引入了“文件”的概念。
  • OS以文件为单位管理磁盘中的数据。文件可分为文本文件、视频文件、音频文件、图像文件、可执行文件等。
打开文件open()

打开一个已经存在的文件,或者创建一个新文件

'''
open(name, mode, encoding)
name:是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
encoding:编码格式(推荐使用UTF-8)
'''
# encoding的顺序不是第三位,所以不能用位置参数,用关键字参数直接指定
# `f`是`open`函数的文件对象(特殊的数据类型),拥有属性和方法,可以使用对象.属性或对象.方法对其访问
f = open('python.txt', 'r', encoding='UTF-8')
模式描述
r以只读方式打开,文件的指针将会放在文件开头(默认模式)。
w打开文件只用于写入。若该文件已存在,则打开并从开头起编辑,原内容被删除。若该文件不存在,创建新文件。
a打开文件用于追加。若该文件已存在,新内容将会被写入到已有内容之后。若该文件不存在,创建新文件进行写入。
读文件read()

在这里插入图片描述

写文件write()
# 1. 打开文件
f = open('python.txt', 'w', encoding='UTF-8')
# 2.文件写入
f.write('hello world')
# 3. 内容刷新
f.flush()
  • 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区
  • 当调用flush的时候,内容会真正写入文件,避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
  • 文件如果不存在,使用”w”模式,会创建新文件
  • 文件如果存在,使用”w”模式,会将原有内容清空
  • close()方法,带有flush()方法的功能,自动刷新
文件的追加
  • 追加写入文件使用open函数的”a”模式进行写入
  • 追加写入的方法有(和w模式一致):
    wirte(),写入内容
    flush(),刷新内容到硬盘中
  • a模式,文件不存在,会创建新文件
    a模式,文件存在,会在原有内容后面继续写入
  • 可以使用”\n”来换行

模块、异常与包

异常

定义

当检测到一个错误时,Python解释器就无法继续执行,出现错误的提示,这就是“异常” / BUG

异常的捕获方法
  1. 遇到了BUG, 有2种情况:
    ① 整个程序因为一个BUG停止运行
    ② 对BUG进行提醒, 程序继续运行
  2. 如果尝试执行的代码的异常类型和要捕获的异常类型不一致,则无法捕获异常。
    当捕获多个异常时,可以把要捕获的异常类型的名字,放到except 后,并使用元组的方式进行书写。
    [except:] / [except Exception:] 两种方式捕获全部的异常
try:
    可能发生错误的代码   # 一般try下方只放一行尝试执行的代码
except [异常as 别名]:
    如果出现异常执行的代码
[else:]
    如果没有异常要执行的代码
[finally:]
    无论是否异常都要执行的代码
异常的传递

在这里插入图片描述

  • 当func01()中发生异常,并且没有捕获处理这个异常的时候,异常会传递到函数func02,
    当func02()也没有捕获处理这个异常的时候,main()会捕获这个异常。
    当所有函数都没有捕获异常的时候, 程序就会报错。
  • 可以在main()中设置异常捕获,由于无论在整个程序哪里发生异常,最终都会传递到main()中, 这样就可以确保所有的异常都会被捕获。

模块

定义

Python 模块(Module),是一个 Python 文件,以 .py 结尾。模块能定义函数,类和变量,模块里也能包含可执行的代码。每一个模块都可以帮助快速实现一些功能,比如实现和时间相关的功能就可以使用time模块。

模块的导入

模块在使用前需要先导入

[from 模块名] import [模块||变量|函数|*] [as 别名]
import 模块名
from 模块名 import 类、变量、方法等
from 模块名 import *
import 模块名 as 别名
from 模块名 import 功能名 as 别名

import 模块名
import 模块名1,模块名2
''' 通过 "." 来确定层级关系 '''
模块名.功能名()   

from 模块名 import 功能名
功能名()

from 模块名 import *
功能名()
自定义模块
  • 通过import、from关键字,和导入Python内置模块一样导入即可使用。
  • if __ main__== "__main__"表示,只有当程序是直接执行的才会进入if内部,如果是被导入的,则if无法进入。
  • 不同模块,同名的功能,如果都被导入,那么后导入的会覆盖先导入的。
  • __all__变量可以控制import *的时候哪些功能可以被导入。

定义

从物理上看,包 = 文件夹,包含多个模块文件,该文件夹下包含了一个 __init__.py 文件。
新建包后,包内部会自动创建__init__.py文件,这个文件控制着包的导入行为。
从逻辑上看,包的本质依然是模块。

作用

帮助我们管理模块。

导入包
import 包名.模块名
包名.模块名.目标
'''
必须在`__init__.py`文件中添加`__all__ = []`,控制允许导入的模块列表
__all__针对的是 from ... import * 这种方式
对 import xxx 这种方式无效
'''
from 包名 import *
模块名.目标
第三方包
  • 一个包,就是一堆同类型功能的集合体。
    第三方包(非Python官方),丰富了Python的生态,提高了开发效率。如:
    科学计算中常用的:numpy
    数据分析中常用的:pandas
    大数据计算中常用的:pyspark、apache-flink包
    图形可视化常用的:matplotlib、pyecharts
    人工智能常用的:tensorflow
  • 但是由于是第三方,Python没有内置,所以需要安装才可以导入使用。
    第三方包的安装,只需要使用Python内置的pip程序。
    打开命令提示符程序,输入:
    pip install 包名称 / pip install -i https://pypi.tuna.tsinghua.edu.cn/simple 包名称
    即可通过网络快速安装第三方包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值