Python 学习笔记

以下文章是对该视频的学习笔记,侵删:

先导篇 | 为什么做这个教程,UP主是闲得发慌吗_哔哩哔哩_bilibili先导篇 | 为什么做这个教程,UP主是闲得发慌吗是你觉得自己这辈子都学不会编程?超超超基础Python课程,3小时快速入门 【自学Python教程合集】【3小时快速入门Python】的第1集视频,该合集共计37集,视频收藏或关注UP主,及时了解更多相关视频内容。icon-default.png?t=N7T8https://www.bilibili.com/video/BV1944y1x7SW?p=1&vd_source=4298755c4e2edc1fe805c41cc2d7379a

简介:

(1)Python 安装官网如下:Welcome to Python.orgThe official home of the Python Programming Languageicon-default.png?t=N7T8https://www.python.org/

(2)PyCharm 安装官网如下:

Other Versions - PyCharmGet past releases and previous versions of PyCharm.icon-default.png?t=N7T8https://www.jetbrains.com/pycharm/download/other.html

可以选择社区版进行安装 


开始上手编程:

(1)进行新建项目:

虚拟环境的好处是可以让不同项目使用不同解释器版本、第三方库等,适用于程序员做多个项目以及团队合作的情况。但对新手来说,用虚拟环境不是必要的,所以如果没有venv文件夹,也不用专门回去修改。

(2)新建Python文件,在控制台打印:

注意:中英文符号问题 

打印进阶:

①字符串连接打印

②单双引号转义(假设内容本本身就包含引号的情况)

可以外单内双、外双内单进行打印 

⭕ 假设又有单引号,又有双引号呢? 

 在字符串里面的引号前加一个反斜杠(即转义符——),表明后面的引号就是单纯的引号符号

③换行 

Python读一行执行一行,读到一行结尾会查看是否有结束引号与括号,如果没有会直接报错。因此不能随便换行 

换行——> \n  反斜杠转义符 

④三引号 """" """ 跨行字符串 

三引号作用:Python 就会把新的一行当成内容的换行,而非代码语句的结束。因此对打印跨行多的内容非常方便


Python 入门

1.Python 变量

变量声明规则:

注意:不能用数字开头 

赋值操作即用 = 去为变量声明值(Python是从上到下执行,因此需要先声明,再打印)

变量可以给变量赋值(即 = 左边会被视为变量名,右边则会被先求值)


2.命名规则 

命名硬性规则: 只能由文字、数字、下划线组成,不能有除下划线之外的符号,不能有空格,不能以数字开头

Python3 支持用中文给变量命名 

 下滑线命名法:

  1. 字母全部小写
  2. 不同单词用下划线分隔

变量名大小写敏感——>user_age 和 user_Age 会被看作两个不同的变量

变量名不要占用 Python 的关键字(如下,并且会高亮展示)——>假设把关键字给占用赋值了,便不能正确使用关键字了


3.数学运算

 注意:与 转义符的反斜杠 进行区分

默认就有的函数库即内置函数,如print 

在导入math函数之后,便可以进行数学运算,使用如下:

关于其他库的官方文档如下:

Python 标准库 — Python 3.12.4 文档Python 语言参考手册 描述了 Python 语言的具体语法和语义,这份库参考则介绍了与 Python 一同发行的标准库。它还描述了通常包含在 Python 发行版中的一些可选组件。 Python 标准库非常庞大,所提供的组件涉及范围十分广泛,正如以下内容目录所显示的。这个库包含了多个内置模块 (以 C 编写),Python 程序员必须依靠它们来实现系统级功能,例如文件 I/O,此外还有...icon-default.png?t=N7T8https://docs.python.org/zh-cn/3/library/index.html


4.注释 

注释:会被解释器或编译器忽略的一行或多行文字,给人们阅读代码思路解释用的

 注释快捷键

通过三引号进行多行注释 


5.数据类型

数据类型: 会决定在该类型对象上可以运用哪些函数。

函数:  负责执行哪个功能,正确的输入才能有正确的输出。

①字符串 str 

 完整的转义符才占一个长度

通过索引(注意索引是从0开始)拿到提取出该索引位置的字符 

②整数 int   ③浮点数 float

④布尔类型 bool 

⑤空值类型 NoneType——>表示完全没有值

 type 函数——>返回该对象类型


6.执行模式

  1. 命令行模式
  2. 交互模式

(1)命令行模式:

运行时,python 解释器会一行一行对文件进行解析和运行。

即可以不解析一整个文件就执行某一行命令。

(2)交互模式:

输入一行便会立即执行并展示那一行的运行结果 。

优点:

1.不需要创建任何新的文件,只需要进入交互式环境;

进入交互式环境:PyCharm 下方的Python控制台或Windows的CMD输入Python3;

退出:quit() 或者 control d

2.不需要 print 语句,就能直接看到执行输出的结果


7.input

input 函数——>从用户获取输入

调用之后便会等待用户输入后返回值(一律是字符串),因此可以用变量进行接收:

因此,也有函数可以将 字符串 str 类型转换为 整数 int 类型

包括:float 函数 将其他类型转换为浮点数;str 函数可以把其它类型转换成字符串

例如:整数不能与字符串一起打印,因此需要转换为字符串: 


 8.条件语句

条件语句:即根据条件是否满足来执行条件相对应的内容

相对应的代码即:

比较运算符:

(1)等于号 ==  :比较两个对象的值是否相等

(2)不等于号 !=  :比较两个对象的值是否不相等


9.多条件判断

1.嵌套条件语句:

嵌套时更需要进行缩进 

 2.多条件判断语句:


10.逻辑运算

与 and、或 or(前二者都可以连接两个或者以上操作对象)、非 not 

(1)与 and:只要有一个或以上为 False,最后求值结果为False

(2)或 or:只要有一个为True,其结果则为True

 (3)非 not:原先的操作对象为True,则其结果为False。反之亦然。

 and   VS   or   :

优先级:

11.列表

列表:一种数据结构,将相关联的数据整合到一起

增加列表元素 - append方法。方法:同样用来定义特定功能的

方法  VS  函数:

 用append方法不需要也不应该再对shopping_list重新进行赋值。

删除列表中的元素:remove 方法

对列表中的元素进行查看:

列表也可以放不同的数据:

并且列表跟字符串一样可以通过len()函数求长度,便可以求得列表里元素的数量

通过索引,可以获得某个位置的元素

通过索引赋值,也可以修改列表的元素 

其他内置函数:

12.字典

字典 dictionary:用来存储键值对

键和值之间用引号表示对应,键值对之间用逗号分隔(注意:键的类型必须是不可变的——即列表是可变的,就不能作为键)

元组 tuple:不可变

 在字典中直接声明便可以添加进字典中。假设键已经存在便会覆盖掉键的原本的值。

 del 便可以进行键值对的删除

进行字典长度的查询: 


13.for 循环

for 循环可以进行迭代:迭代的对象可以是列表、字典、字符串等

 并不能有效地检索

1.常用三个方法:

即通过 .items 声明元组,将第一个元素赋值给staff_id,第二个赋值给temperature

等同于以下写法:

2.for循环结合range:(注意:结束值并不在序列范围内)

例如:

例:计算1到100的和


14.while循环

 while 循环:一开始未假时,则一次也不会被执行。

 两者都可以用的情况下,for 循环 会更加简洁直观,所需行数更少。


15.格式化字符串

短信祝福案例:

格式化字符串方法:

① format 方法:

根据关键词指定替换的对象 (位置无所谓,只看format 里面的关键字,即所有current_year的地方都将会被替换为year的值)

简洁写法: 

② f-字符串

③数字对字符串进行格式化 

 保留几位小数写法 :.2f


16.函数 

问题:计算不同扇形的面积(参数不一致,部分代码一致<——DRY原则 Don't Repeat Yourself) 

Python 自带函数 :

进行自定义函数:

因此问题解决代码可以被优化为:

但缺少储存计算结果的变量,无法后续继续使用(Python函数作用域的概念)

a 只是在函数中被定义,只是局部变量, 只作用于函数里面。

 return 语句:如此在函数外便可以继续使用

 代码优化为:

Python内置函数:

内置函数 — Python 3.12.4 文档Python 解释器内置了很多函数和类型,任何时候都能使用。以下按字母顺序给出列表。,,,, 内置函数,,, A, abs(), aiter(), all(), anext(), any(), ascii(),, B, bin(), bool(), breakpoint(), bytearray(), bytes(),, C, callable(), chr(), classmethod()...icon-default.png?t=N7T8https://docs.python.org/zh-cn/3/library/functions.htmlPython 标准库中的其他模块:模块就是一个Python程序,引入后里面的函数和变量都可以为你所用。

例:求中位数函数:

可以直接引用:

代码可被优化为:

 内置函数都是很常用的函数,所以其他模块便需要进行引入才能使用

引入模块:

* 表示模块里的所有变量以及函数都被引入,包括可能用不到的

假设都有abc() 函数便会冲突<——通过import 模块名,便能清楚是哪个模块

control点击函数名便可以对函数源码进行查看

引入第三方库模块(即第三方程序员编写的模块):

 以下网站可对第三方库进行搜索:

PyPI · The Python Package IndexThe Python Package Index (PyPI) is a repository of software for the Python programming language.icon-default.png?t=N7T8https://pypi.org/


17.面相对象编程

Object Oriented Programming  面向对象

过程:负责完成某个具体任务的代码,基本可以理解为函数(即拆分为一个一个实现的步骤,然后依次完成——程序长度以及逻辑复杂度增加,代码可读性会比较差)

面相对象:以对象为核心,先考虑各个对象有什么性质、能做什么事情

类与对象关系:类是创建对象的模板,对象是类的实例

 通过对象与相关属性绑定在一起,有利于让逻辑更加清晰(即可以清晰性质所属对象)

面向过程打印记录需要携带许多信息参数:

 而面向对象便可以通过对象来获取与它绑定的属性(即对象拥有的性质)——>逻辑以及数据流动可以更加清晰:

方法(对应对象能够做些什么)也可以跟对象绑定(所谓方法就是放在类里面的函数,所谓属性就是放在类里面的变量)

面向过程写法: 

 

相比面向过程编程直接聚焦于按步骤执行,面向对象编程,把事务先分解到对象身上,描述各个对象的作用,再之间进行交互。

特定的属性,可以在对象被创建的时候就进行设置,之后不论是哪个方法用到了该属性,就都不需要作为参数再被传入。而是作为自身属性,可以直接被获取到。

面向对象特性:

①封装:将类内部的细节进行隐藏,使用类只通过外部的接口(提供使用的方法)访问与使用——>即只需要类包含了什么方法,并且方法如何使用就可以了,并不需要知道方法是怎么写的。因此能够减少对不必要细节的投入

②继承:面向对象编程允许创建有层次的类。类也可以有子类以及父类,来表示从属关系。父类属性与方法都可以被继承,并不需要被反复定义,减少代码的冗余。

③多态: 同样的接口,因为对象具体类的不同,而具有不同的表现。(即无需判断,便可以统一调用同一名称的方法)


18.创建类 

 

构造函数:(必须命名为 _init_ , self 用于表示对象自身,把属性的值绑定在实例对象上。不然只会认定为普通的值,而不会把这个值看成是对象的属性。并且 self 不需要手动传入):定义实例对象的属性。

定义对象拥有的方法(即对象能够做什么事情)——>1.必须发写在 class 里面;2.第一个参数会被占用 self ,约定俗成为 self ——> 可以在方法里面可以获取修改对象绑定的属性

实现:方法调用结果,根据属性的不同而进行改变


19.继承类

面对重复的代码<—— 继承

继承类:子类假如有自己的跟父类同名的方法,就会调用自己的。(即优先看所属的类有没有该方法,如果没有就会往上找父类的方法)

假设给子类写 _init_ 方法就会导致子类创建实例时,只有 has_tail 属性

解决方法:通过 super() 方法——>返回当前类的父类,再通过super.()_init_ 调用父类的构造函数,便可以使用相对应的属性了。


20.文件路径 

代码怎么知道系统文件在哪里呢?

绝对路径:从根目录出发的路径,对于Linux、macOS等类Unix系统,绝对路径就是以 / 开头。路径之间用 / 进行分隔,以目标文件和目标路径作为结尾。

①绝对路径:

Linux、macOS等类Unix系统 / :

 Windows 操作系统 \:

②相对路径:

表示参照文件当前所在的目录,.. 表示更上一层的父目录,假设需要更上一级便可以 ../ 进行分隔(类Unix用/,Windows用\)表示当前文件所属目录的父目录的父目录

 在同一目录下的文件,互相用相对路径找到彼此,可以直接使用文件名


21.文件操作 

问题:借助程序记录销售数据

根据文件把数据一条条复制到代码里面,再通过代码获取执行结果?假设有多个日期的变量便需要反复修改代码的变量。

因此 文件操作:让同一段代码读取不同的市场数据文件,只需要对文件名进行改动即可。

步骤:

1.打开目标文件

FileNotFoundError的错误:表示文件不存在

假设像Word还有字号,颜色等格式,代码将文本转换为字符串时会出现问题

(1)read方法:

第二次调用已经到结尾了,所以会返回空字符串。 

(2)readline 方法:

(2)readlines 方法:读取全部文件内容,并返回由每行组成的字符串列表

方法总结:

close() 方法:

缩进的内容执行完毕后,文件就会被自动关闭。

进行程序输出结果输出为文件(与读文件操作类似——打开文件,并且在操作完成后关闭文件):

 假设设定路径下的文件不存在,那么会自动创建文件(用“w”模式打开文件进行写入的话,如果那个文件已经存在,就会先把原本的文件内容清空)

 需要手动进行换行

假设是追加内容即需要用 a 附加模式 

两种模式都不支持 read 操作 

因此有 r+ 读写模式,并且内容是追加进去的


22.异常处理

错误类型:

异常捕获(执行逻辑跟if···else一样,从上到下执行并且前面已经正确捕捉到错误,之后except语句便不会再执行——只有第一个符合条件的分支会运行):

else和finally


23.测试 

assert 断言 后面跟上任何布尔表达式

出现 AssertionError  程序将直接中断

unitest 单元测试库 :对软件中的最小可测试单元进行验证,比如验证某函数某方面表现是否符合预期(测试代码放到独立文件里面)

TestMyAdder子类可以继承自unittest.TestCase的各种测试功能,然后在这个类下面定义各种测试用例。每一个测试用例都是类下面的一个方法。命名必须以 test_ 开头。unitest库 会自动搜寻test 开头的方法,而且只把test_开头的当成测试用例。

 


24.高阶函数和匿名函数

问题:进行多阶次方的打印

假设把计算的函数作为参数?——> ①高阶函数 (作为参数的函数是直接用函数名传入,表示函数本身,不带括号或者是参数)

 一旦有括号就意味着函数被调用了,会返回该函数的执行结果,而非函数本身。

 ②匿名函数:匿名函数不需要起名字,而且像个一次性物品一样,即用即扔。如果非要拿一个名字指代匿名函数的话,可以叫Lambda。匿名函数的定义是以lambda这个关键字开始的。

lambda后面不想要return。并且lambda想增加参数,也只需要在lambda关键字后面,把参数用不同逗号分隔开。

 匿名函数可当成是没有名字且占用行数更少的函数。

匿名函数优点: 

  • 减少代码行数;
  • 不用起名字;
  • 不用换行缩进

 特别适合只需要一次性调用的场景!

而且除了作为高阶函数的参数,匿名函数也可以定义好后被直接调用,调用方式和普通函数一样

局限性:

冒号后面没法有多个语句或表达式——>只适用于比较简单的场景(多步骤的复杂逻辑,或者是涉及循环递归等)

 

Python 进阶也可以通过以下网站学习:

Python教程 - 廖雪峰的官方网站研究互联网产品和技术,提供原创中文精品教程icon-default.png?t=N7T8https://www.liaoxuefeng.com/wiki/1016959663602400#0 

  • 10
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值