py基础入门(一篇足够)

python笔记

来自孙兴华 老师的课程笔记!

目录看起来多,只是为了让有基础的兄弟选择查看,内容其实一点都不多!可以翻着看一下,有基础的感觉只用看目录就可以重温python基础,不用浪费太多时间了。

文章目录

安装

具体安装细节,python环境配置很简单,b站有很多教程,因为过于简单,环境配置忽略

python的安装

官网网址下载:https://www.python.org/

pytharm

官方网址下载:https://www.jetbrains.com/pycharm/

简介

什么是python?

python 优雅、简单、明确,具有丰富的、强大的库
被称为胶水语言,能把各种语言的模块,轻松的结合在一起。

python除了不会生孩子,全都会(个人感觉)

了解可以去百度,不说废话,直接开始。

基本语法

注释:

# 注释是不被显示出来的

Tab键

Tab 或者 4个空格

输出

print ( ' 输出 ')


(了解:print中的有两个属性, end="\t"属性是隐藏的,会默认换行,sep=" , "属性也是隐藏的,意思是默认的中间分割键)

(例如:`print ( ’ 输出 ’ , end= " \t " , sep = " … "))
在这里插入图片描述
在这里插入图片描述

我们可以看到,修改了属性之后,程序则不会按照默认的指示走。

"+"号

对于两个字符串或者有一个甚至多个字符串来说,是拼接的意思。但是对于两个或多个数字来说,是运算的含义

单引号和双引号和三个引号

单引号和双引号字符串的含义
三个引号多行文本字符串的含义(支持换行)
在这里插入图片描述

转义

"\"在程序中,是转义的含义
或者
在整个字符串前面加入 “r” (推荐)
在这里插入图片描述

变量

变量是可以随时变化的

在这里插入图片描述

前两个我们都比较好理解,

第三个我们可以清楚的看到,变量实现了交换,也称为交换变量

第四个案例中, " f " + 字符串 的意思是带入变量,我们可以看到图中最后一个实例的结果,可以将变量内容带入进字符串中

输入 input

接受用户输入的结果,默认都是字符串类型,并不是数值类型

在这里插入图片描述

类型转换(int()、float()、str() )

int: 整数型 顾名思义
float:小数、浮点型 顾名思义
str:字符串 类型 顾名思义

检查数据类型( type() )

顾名思义,不过多解释

查看数据类型(xx.dtype)

查看数据的类型

在这里插入图片描述

查询 地址

查询字符串的地址:id(xxx)

运算(+、-、*、/、//、%、**、小括号)(+=、-=、*=、/= 等等)

意思分别是:
+加、- 减、* 乘、/ 除、// 取整、% 取余、** 指数、
小括号是用来提高优先值

+= 实例: a = a + 1(等下同理)

比较运算符( == , != , > , >= , < , <= ,and、or、not)

等于、不等于、大于、大于等于、小于、小于等于,和、或、不等于

rfind ()

rfind ( ) 显示文件最后出现的位置

列表

增 ( append()、extend()、insert() )

列表末尾增加单个数据:变量名 . append (数据)
列表末尾增加多个数据:变量名 . extend( [ ' 数据1 ',' 数据2 ' ])
在指定位置增加数据: 变量名 . insert ( '索引' ,'数据' )

删( del()、pop()、remove()、clear())

删除数据: del()、del[ 下标 ]、pop(下标,默认最后一个,并且返回该数据)
移除某个数据:变量名 . remove( 数据 )
清空列表:clear()

修改:利用 = 来进行修改

查( reverse()、sort() )

reverse( ): 把这个列表倒序排列
sort():排序 ⇒ sort ( reverse = True ) 按照倒序进行排序、反之则正序

for i in 循环体
	print(临时变量)
索引

下标:从0开始,标点、汉字也算一位,例如 name[2],是name这个结果第二个索引值

切片:序列 [ 开始位置下标:结束位置下标(不包含结束所包含的数据):步长(默认为1) ]

查找⇒ 字符串( find()、index()、count() )

查询某个字符串是否包含在其中,如果在返回下标,如果不在,返回 -1。

语法:变量名 . find \ index \count ( 子串,开始下标,结束下标 )

两种方法查找的结果基本都一样,唯一不一样的是,find()在找不到的时候,返回-1,而index返回的是报错信息

count() :查询出来的是结果数量信息

替换( replace() )

替换:replace(旧字符串,新字符串,替换次数)

分割(split ( ))

分割:split(分割字符、分割次数)

合并( join() )

合并:“合并的符号”.join( 子串 )

返回列表长度( len() )

返回列表长度

检查字符串的开头和结尾 ( startswith \ endswith )

字符串.startswith \ endswith(子串,开始下标,结束下标)
返回的结果为:TrueFalse

复制(copy())

复制:变量名.copy ( )

元祖

简介:列表中的数据是可以修改的,但是元祖里面的数据是不能够被修改的。
实例: 变量名称 ( ' 数据1 ',' 数据2 ' )
如果里面是单个数据,则需要 变量名称(1 , ),后面不能忘记 逗号!

序列中的转换( list() 、tuple() )

list(序列名) # 将序列转换为列表
tuple(序列名) # 将序列转换为元祖

条件语句(if、else、elif)

if 条件:
	条件成立1
	条件成立2
if 条件:
	条件成立1
else:
	条件成立2
if 条件:
	条件 1
elif 条件:
	条件 2
else:
	条件 3

字典与集合

字典

字典:不支持下标,按照 出现。键是唯一的,值是可以重复的。

例如:字典名 = { '华为' : 520, '小米':'黑色' }

创建空字典

例如: 名字 = { } 名字 = dict()

修改值(如果存在则修改,不存在则创建)

字典 [ 键 ] = 值

删除数据

del字典名[键]
del字典名 ⇒ 删除整个字典、
clear() ⇒ 清空

查询数据
get ( )( “查询的键”,“返回的值(不写返回的是None)”)语法

如果键存在返回值,键不存在,返回第二个参数、

values( )语法

返回的是里面所有的值

items( )语法

以元祖的方式进行返回

字典的循环遍历
for i in 字典名.keys():
	print(键)
for i in 字典名.values():
	print(值)
for i in 字典名.items():
	print(键 和 值)
for i,j in 字典名.items():
	print(f ' { 键 } = { 值 } ')

集合

set( ) 创建集合

集合的特点:

自动去重、不支持下标,是随机的。

增加数据

集合 . add ( 数据 )

追加数据

集合.update(数据序列)

删除数据

集合.remove ( 数据 ) :发现错误不存在。报错
集合.discard( 数据 ):发现错误不存在。不报错
集合.pop ( 数据 ):删除集合中某个数据,并且返回某个数据

查找数据

in:判断数据在集合中
not in: 判断数据不在集合中

for循环、公共操作和推导式

for 临时变量 in 序列:

break ⇒ 终止循环
continue ⇒ 退出本次循环

for 临时变量 in 序列:
	执行的代码
		else:
	循环正常结束时,要执行的代码。

公共操作

len() :计算容器中的个数
del() :删除
max ( )、min ( ) :最大最小值
range ( start、end、step):生成从start开始到end结尾,中的步数为step,供for循环使用
enumerate(可遍历对象,start=0(默认下标为0)):函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合成一个索引序列,同时列出数据和数据下标,一般用于for循环当中。
实例:
```
for    i,j   in enumerate(列表名):
	print ( i,j )
```

while循环

直到条件不成立为止,结束循环。
结束循环:break ;结束本次循环:continue

while条件:
	条件成立重复代码
	……
while条件:
	条件成立重复代码
	……
else:
	结束循环之后要执行的代码

九九乘法表案例

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

函数

函数需要先定义,再实现

def 函数名 (形参)
	代码1
	代码2

=== 调用函数 ===

函数名(实参)

=== `return` 退出当前函数 ===

实例:
在这里插入图片描述

定义函数

def 函数名(形参):
	""" 说明文档位置 """
	代码
	……

查看函数说明文档

help(函数名)

添加默认参数

在这里插入图片描述

位置可变参数

返回的是元祖
一个 “ * ” 号
实例:
在这里插入图片描述

关键字可变参数

返回的是字典
两个 “ * ” 号
实例:
在这里插入图片描述

局部变量和全局变量

顾名思义,只能在范围内使用。

在函数内部修改为全局变量

切记!不到万不得已,不能使用(global)
案例展示:
在这里插入图片描述

递归(套娃)

必须留有接口。return。
lambda表达式

当函数只有一个返回值,且代码只有一句话的时候,可以用lambda简写
.
简写:

lambda函数能接收任何数量的参数且只能返回一个表达式的值

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

filter(函数名,可迭代对象)

我们可以看到,直接输出 是 list 的地址值。我们需要把结果用 List 的形式,输出出来。

在这里插入图片描述

map(函数名,可迭代对象)

将可迭代的每一个对象,拿出来运算加工。直到加工完毕。

在这里插入图片描述

迭代相加:reduce(函数名(x,y),可迭代对象)

① 导入 functools
② reduce (函数名,迭代对象)

在这里插入图片描述

文件和文件夹

文件夹的三种方式

打开文件

文件对象 = open(’ 文件名 ’ ,’ 访问方式 ')

1)访问模式(三个主访问模式
‘r’ 只读 :如果文件不存在报错,不支持写
‘w’ 写入 :如果文件不存在新建文件,写的时候会覆盖原有的内容
‘a’ 追加:如果文件不存在新建文件,写的时候在原有的基础上追加
访问模式可以省略,默认为“r”
2)访问模式特点(
‘b’二进制、“+”可读可写

r \ rb \ r+ \rb+ : 只要文件不存在就报错。文件指针(光标的位置)放在文件开头
w \ wb \ w+ \ wb+ : 只要文件不存在就新建文件。光标在开头。用新内容覆盖
a \ ab \ a+ \ ab+ : 只要文件不存在就新建文件。文件指针在结尾。

读写文件

文件对象.write(内容)
文件对象.read(num)
.
表示要从文件中读取数据的长度(单位是字节)【换行 /n 占一个字节】,忽略就表示读取所有的数据
.
文件对象.readlines() # 需要赋值一个变量
将整个文件一次性读取,并返回一个列表,源文件中每一行的数据为一个元素。只有最后一行不带 \n
文件对象.readline() # 需要赋值一个变量
每一次调用读取一行,不带 \n

关闭文件

文件对象.close()

偏移指针

文件对象.seek(偏移量,起始位置)
起始位置:0 开头,1 当前位置,2 文件结尾
偏移量: 假设起始位置为开头,偏移量为 5 。那文件指针就在第 6 个字节上
偏移量和起始位置都为0时,只能写一个 0 。

文件

导入 os 模块

重命名文件名称

os.rname ( '新文件名','旧文件名')

删除文件(不能是文件夹)

os.remove(目标文件)

创建一个文件夹(重复文件夹会报错)

os.mkdir (文件夹名称)

获取当前目录

os.getcwd()

改变默认目录

os.chdir(目录)

获取某个目录 / 当前文件夹下所有的目录

os.listdir(目录)

闭包 、 装饰器 和 语法糖

闭包:内部函数引用了外部函数的局部变量。称之为“闭包”。

实例展示:
在这里插入图片描述

装饰器:Python装饰器(Decorators)是一个高级Python功能,允许你修改或增强函数、方法或类的行为,而不需要改变其源代码。装饰器本质上是一个接受函数作为参数的高阶函数,并返回一个新的函数。这使得你可以在不修改原始函数的情况下,添加额外的功能或修改其行为。

装饰器的基本语法是使用@符号,后面跟着装饰器的名称,然后是一个函数定义。

实例展示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

插一句嘴

我们可以看到上一个案例中,Debug 了 很多行,是因为我在想为什么参数需要加 “**”,而等我输出的时候却不需要加了呢?

人工智能是这样回答的:

print函数接收了不同数量和类型的位置参数,并将它们打印出来。这是print函数内部实现的一部分,它允许这种灵活性而不需要你在调用时添加任何特殊的语法。
.
总结一下,print函数不需要加两个星号(**)来调用,是因为它本身是设计为可以接受可变数量参数的内置函数,而不是通过 *args 或 **kwargs 语法来定义的。

面向对象

封装代码,定义 类

注意:

类一定要用 大驼峰 命名,而函数需要利用 小驼峰 命名,这样便于区分

介绍:先有类再有对象,然后用类实例化一个对象

在这里插入图片描述

构造方法(魔法方法)

魔法方法:指的是有特殊功能的函数

__init__:初始化对象

在这里插入图片描述
self = 调用该函数的对象,而不是具体的某一个对象!!

实例:
在这里插入图片描述

__str__:输出对象状态

简介:在Python中,str 是一个特殊方法(也称为魔法方法或双下划线方法),它定义了一个对象转换为字符串时的行为。当你尝试打印一个对象或者将对象转换为字符串时,Python会自动调用这个对象的 str 方法。

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

继承

(单继承)

类的参数中,object ⇒ 最高类,叫基类,其他的叫做派生类

简介: 如果两个类存在父子继承关系,子类即便没有任何的属性和方法,那么用子类继承了某个父类,并且子类创建了一个对象,那么这个对象就拥有父类当中,所有的属性和方法。就像生活中,子女继承父母财产一样。

在这里插入图片描述

注意事项:如果类中没有内容,一定要记得写一个“pass”来站位哦 ~~
(多继承): 会默认继承第一个

在这里插入图片描述

__mro__:

__mro__:手动查找继承的顺序

在这里插入图片描述

子类拥有与父类相同的属性和方法(会默认使用第一个子类的属性和方法)

实例展示:
在这里插入图片描述

如果想子类使用所有的父类,就需要用到调用父类的属性和方法,例如:

在这里插入图片描述

多层继承(能不用尽量别用,容易出错有bug)

请看详解,很简单,不过多的解释

在这里插入图片描述

拓展知识(组合)

可以看视频进行分析哦~~

在这里插入图片描述

私有权限

作用:如果发生继承关系的时候,某一些属性或者方法不想被子类所继承,就可以用到私有权限

设置私有权限的方法:在属性名和方法名称前面加上两个下划线_

注意:私有属性和方法只能在类里面访问和修改!

在Python中,一般定义函数名称为“get__xx”用来获取私有的属性,定义“set__xx”用来修改属性。用get和set是工作习惯,可以改名,但是要知道是获取和修改,切记!先获取再修改

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

super方法

在这里插入图片描述

面向对象的三大特征
封装
  1. 将属性和方法写到一个类里面,叫做封装。
  2. 封装可以为属性和方法添加私有权限
继承
  1. 子类默认继承父类的所有属性和方法
  2. 子类可以重写父类的方法和属性
多态

传入不同的对象,产生不同的结果

在这里插入图片描述

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

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

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

给大家展示一下 加上 @classmethod 和不加 @classmethod 的使用效果

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

我们可以看到,第一个没有加语法糖,只是给当前创建的类对象进行了修改,而加上语法糖,是给类对象彻底的进行了更改。

通过@staticmethod装饰器即可把其装饰的方法变为一个静态方法,什么是静态方法呢?其实不难理解,普通的方法,可以在实例化后直接调用,并且在方法里可以通过self.调用实例变量或类变量,但静态方法是不可以访问实例变量或类变量的,一个不能访问实例变量和类变量的方法,其实相当于跟类本身已经没什么关系了,它与类唯一的关联就是需要通过类名来调用这个方法

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

在这里插入图片描述

异常处理和存储数据

报错的抛出和提示。

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

以下的as:相当于重命名。

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

导入import

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

在这里插入图片描述

在这里插入图片描述

恭喜大家,完结撒花~~

如果在看的时候,有什么问题,记得反馈给本人,将第一时间修正!感谢!

  • 37
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值