type
status
date
slug
summary
tags
category
icon
password
 
前言 windows系统搭建

1.安装Python解释器
notion image
2.安装pycharm开发工具
notion image
更改中文:
打开Pycharm---File---Settings---Plugins---Chinese
关闭Pycharm,然后重启即刻
3.终端输入信息
终端输入Python进入Python交互式命令;
接下来即刻输入Python代码,如:print("Hello world")
镜像源配置好之后,自动从镜像源下载模块包
notion image
anaconda 模块下载路径在C盘,但是anacoda安装D盘,怎么解决:anaconda安装的目录只有读取权限,没有写入权限,需要给目录添加权限
 

第一章 变量和数值类型

1.1 变量

变量是用于找到存储在内存中的数据的标记,在程序运行过程中是可以发生改变的量,变量指向的数据是临时的,随着程序运行的结束而消亡。

1.1.1 语法:

变量名 = 变量值
变量名1 = 变量名2 = 变量值
变量名1, 变量名2, = 变量值1,变量值2 多重赋值
多重赋值的应用:交换变量
对于两个变量值进行交换,一般可以通过中间变量或者算数运算的方式进行,而下面方式的变量交换是Python语言独有的
💡
变量解包(unpacking)是Python里的一种特殊赋值操作,允许把一个可迭代对象的所有元素一次性赋值给多个变量。详看后面讲解!

1.1.2 变量赋值 重理解

  • 变量是首次赋值时即被创建, 变量被引用前也必须被赋值.Python中, 变量不能单独存在, 必须指向一个对象.
  • 对x = expr 赋值语句,正确的理解是创建一个变量指向一个对象expr,一个变量只能够指向一个对象,但是一个值可以由多个变量指向
    • 如x, y, z = expr 赋值语句, 就是创建多个变量来共同指向同一个对象expr. 当通过一个变量对对象进行更改时, 打印其它变量, 打印的值也会跟着发生更改.
  • 对于任何没有变量指向的对象,Python将自动删除。一般而言,Python跟踪所有的值,并自动删除不再有变量指向的值。这称为垃圾收集,因此,Python程序员很少需要为删除值操作。例如:rate = 0.4 rate = 0.8 此时,内存中值0.4会自动被删除
  • 某些操作会隐式地进行赋值:
    • 赋值出现在Python的许多上下文中.例如模块导入, 函数和类定义, for循环变量, 以及函数参数等都是隐式赋值运算.这些上下文都会在运行时把名称和对象引用相互绑定.

1.1.3 变量命名规则

1、遵循PEP8原则
  • 对于普通变量,使用蛇形命名法,比如 max_value
  • 对于常量,采用全大写字母,使用下划线连接,比如 MAX_VALUE
  • 类命名:驼峰风格(FooClass)
  • 函数命名:使用蛇形命名法,比如 max_value
  • 如果变量标记为“仅内部使用”,为其增加下划线前缀,比如 _local_var
  • 当名字与 Python 关键字冲突时,在变量末尾追加下划线,比如 class_
2、描述性强
3、尽量简短
在保证变量名的描述性较强的情况下,做到尽量简短,一般尽量不超过4个单词
4、匹配类型
  • 匹配布尔数值类型变量名:变量名需要具有明确的“肯定”或者“否定”含义。is、has、allow等
    • 如is_int(是否为整型)、allow_empty(是否允许有空值)
  • 匹配int/float类型的变量名:对于一些名字,自动认定其为int、float类型
    • 示意为数字的单词:port、age、radius、count、length等
    • 以_id结尾的单词:user_id、host_id
    • 别拿名词复数来作int类型变量名

1.1.4 变量类型注明

Python是动态类型语言,使用变量时不需要做任何类型声明(赋值即定义)。一方面,这是我们编写代码更加简洁容易,但是从另一方面来说,不用声明类型无疑降低了代码的可读性。为了提高代码的可读性,Python官方先后推出了两种方案。
  • Sphinx格式的函数文档(docstring)
  • 类型注解(Python3.6引入)
    • 推荐使用类型注解,为Python的内置功能
函数文档和类型注解只是一种类型提示,不提供任何校验功能,要校验类型正确性,可以使用其他静态类型检验工具(如mypy)

1.2 标识符

标识符就是给类、接口、方法、变量、常量名,包名等起名字的字符序列。

1.2.1 命名规则

  • 由字母,数字,下划线组成,数字不能开头
  • 不能含空格,可以用下划线连接:student_name
  • 不能和Python关键字和函数名重复,如:print
  • 变量的编写既要简洁也要有描述性,并慎用小写l和大写O,容易和1,0混淆(严格区分大小写

1.2.2 命名规范

  • 函数名,文件名:全部小写,单词间用下划线_隔开
    • hello_world.py, get_sum
  • 类名:大驼峰(双驼峰)命名法。
    • class HelloWorld
  • 变量名:详看1.1.3变量命名

1.2.3 关键字

关键字就是Python赋予特殊含义的单词,其基本都是小写的。一般在编辑器中针对关键字,都会高亮提示。
notion image

1.3 代码规范

1.3.1 单行注释:

  • # 注释内容
  • 快捷键:Ctrl+/

1.3.2 多行注释:

  • 一般在注释一段代码情况下
  • 上下三个双引号/单引号,或者选中多行要注释内容,Ctrl+/

1.3.3 缩进

  • 未使用C等语言的花括号,而是采用缩进的方式表示层次关系
  • 约定使用4个空格缩进

1.3.4 续行

对于一行代码书写太长需要换行问题有两种方法
  • 在行尾使用\,主意\之后除了紧跟着换行之外不能有其他字符
  • 使用括号可以实现一条语句横跨多行, 包括圆括号, 中括号, 大括号. 当然其内部就不能用\了.
注意:
对于多个表达式, 可以同行书写, 中间用分号; 隔开即可, 但是在PEP8代码编写规范中, 这种是不推荐的.

1.4 数值类型

查看数据类型函数:type()
python数据类型:
  • 数值类型:
    • 整数型int,浮点数型float,布尔型bool,复数类型complex)
  • 容器类型:
    • 字符串str、列表list、元组tuple、集合set、字典dict

1.4.1 整数型 int(正,负,0)

数字计算+,-,*,/(除结果带小数),//(除取商),%(取余数),**(次方)
  • 与其他大多数编程语言不同,Python允许整数具有无限的精度,只要内存空间允许,整数可以增长为任意位数的数字
  • 可以使用“_“单下划线对位数进行分段,使位数较大的数值显示的更易阅读。如1_000_000表示1000000
  • 可以使用十进制、十六进制、八进制和二进制来表示整数
    • 十六进制表示:以0X或0x开头,接0-9和A-F。(大写或小写都行)
    • 八进制表示:以0o或0O开头,接0-7(大写或小写都行)
    • 二进制表示:以0b或0B开头,接0-1
    • 所有这些字面量在程序代码中都产生一个整数对象,它们仅仅是特定值的不同语法表示而已,内置函数hex(I)、otc(I)和bin(I)把一个整数转换为这3种进制表示的字符串。并且int(str, base)根据每个给定的进制把一个运行时字符串转换为一个整数,并通过第二参数来确定转换后的数字的进制。

1.4.2 浮点数 float(正,负,0.0)

浮点数即带有小数的数值,所有适用于整数的运算都可用于浮点数,包括取余(%)和整除(//)
💡
在Python中有两个特殊的浮点数:float(“inf”)和float(”-inf”),分别对应正无穷大和负无穷大,在简化边界处理逻辑、机器学习等场景能够用到

1.科学计数法e/E:10的正次方用e/E数字,10的负次方用e/E-数字
7.823E5=782300.0
7.823e-2=0.07823
科学计数法表示的数会被解释器认定为浮点数

2.溢出
与整数不同,浮点数存在上限和下限,超出上限或者下限将会导致溢出错误,这意味着计算的结果太大或者太小,Python无法将其表示成浮点数。
notion image

3.精度有限:
在计算机语言中,数值是用二进制表示的,对于整数来说,二进制尚且能应对,但对于浮点数来说,计算机就做不到决定的精准。浮点数在标准CPython中采用C语言中的”双精度“(double precision)来实现,这个精度限制就是0.1+0.2为0.30…04的原因。
为了解决这个问题, Python 提供了一个内置模块: decimal。假如你的程序需要精确的浮点数计算,请考虑使用 decimal.Decimal 对象来替代普通浮点数,它在做四则运算时不会损失任何精度
 

4.省略0
当浮点数的整数部分是0时,可以省略这个0。如.1表示0.1

1.4.3 布尔型 bool

布尔值 (True 和 False)是整数1和0的定制版, 会通过Python条件表达式的成立与否相应返回,成立返回True、不成立返回False
1、True和False是Python中每个对象的固有属性: 每个对象非真即假. 可以通过函数bool()来判断对象的真假.
对象
“spam”
True
[]
false
[1, 2]
True
0.0
False
None
False
2、布尔值也是数字:布尔类型作为整型子类,可直接作为0/1参与数值运算
思想:统计集合中符合某条件的元素个数,可以直接对这些元素进行条件判断,把元素转化为对应的True、False,再统计True个数即可。

1.4.4 复数 complex(了解)

复数是用公式z = x + iy表示的数,其中i是虚数单位,满足i^2 = -1,x为实部,y为虚部。复数也可以通过内置函数complex(real, imag)来创建

1.4.5 分数 fraction(了解)

分数显示保持了一个分子和一个分母,从而避免了浮点数运算的某些不精确性和局限性。与小数一样,分数的实现并不像浮点数靠近计算机的底层硬件。这意味着它们的性能不会像浮点数一样优秀。构建分数,需要通过fractions模块导入。
对于那些在内存中给定有限位数不能精确表示的值,浮点数的局限性就尤为明显。Fraction和Decimal都提供了得到精确结果的方式。但这需要付出一些速度和代码冗余度性的代价。

1.5 运算符

1.5.1 算数运算符

a, b = 10, 3
+
a + b 输出结果 13
-
a - b 输出结果 7
*
a * b 输出结果 30
/
b / a 输出结果 3.3333333333333334
无论是否能整除,返回浮点数类型(小数会存在丢失精度问题)
%
取余
b % a 输出结果 1
返回类型由被除数决定(a为浮点数,返回浮点数)
**
a**b 为1000
//
取商 (向下取整
a//b为3
返回类型由被除数决定
理解向下取整除法的含义:

1.5.2 比较运算符

设变量a为10,变量b为20:
==
等于
(a == b) 返回 False。
!=
不等于
(a != b) 返回 True。
>
大于
(a > b) 返回 False。
<
小于
(a < b) 返回 True。
>=
大于等于
(a >= b) 返回 False。
<=
小于等于
(a <= b) 返回 True。

1.5.3 赋值运算符

运算符
描述
实例
=
简单的赋值运算符
c = a + b 将 a + b 的运算结果赋值为 c
+=
加法赋值运算符
c += a 等效于 c = c + a
-=
减法赋值运算符
c -= a 等效于 c = c - a
*=
乘法赋值运算符
c *= a 等效于 c = c * a
/=
除法赋值运算符
c /= a 等效于 c = c / a
%=
取模赋值运算符
c %= a 等效于 c = c % a
**=
幂赋值运算符
c **= a 等效于 c = c ** a
//=
取整除赋值运算符
c //= a 等效于 c = c // a
注意 : 针对数值类型, c += a 和 c = c + a是等效的, 但是对于后面引用类型, 其实并不完全等效.

1.5.4 位运算符(了解)

位运算符是把数字看作二进制来进行计算,如下示例
a = 0011 1100 b = 0000 1101
&
按位与运算符
a&b = 0000 1100
|
按位或运算符
a|b = 0011 1101
^
按位异或运算符
a^b = 0011 0001
~
按位取反运算符
~a = 1100 0011
<<
左移动运算符
a << 2 = 1111 0000
>>
右移动运算符
a >> 2 = 0000 1111

1.5.5 逻辑运算符

设变量 a 为 10, b为 20:
and
x and y
布尔"与" - x为0返回0,否返回y
(a and b) 返回 20。
or
x or y
布尔"或" - x不为0返回0,否返回y
(a or b) 返回 10。
not
not x
布尔"非" - x为0返回1,1返回0
not(a and b) 返回 False

1.5.6 成员运算符

in
如果在指定的序列中找到值返回 True,否则返回 False。
x 在 y 序列中 , 如果 x 在 y 序列中返回 True。
not in
如果在指定的序列中没有找到值返回 True,否则返回 False。
x 不在 y 序列中 , 如果 x 不在 y 序列中返回 True。

1.5.7 身份运算符

用于比较两个对象的存储单元
运算符
描述
实例
is
is 是判断两个标识符是不是引用自一个对象
x is y, 类似 id(x) == id(y) , 如果引用的是同一个对象则返回 True,否则返回 False
is not
is not 是判断两个标识符是不是引用自不同对象
x is not y , 类似 id(a) != id(b)。如果引用的不是同一个对象则返回结果 True,否则返回 False。

1.5.8 拓展 逻辑运算符操作(面试需要了解)

注:

  • 在对数值进行计算时,计算器是将其转换成二进制形式进行计数,然后在转化成十进制呈现给你看,这样就会存在精度问题。例如1.1用二进制表示是没法精确表示的,那么表达式(1.1 + 2.2 == 3.3)就会返回False。
  • 在对不同的数据类型进行混合运算的时候,遵守混合类型向上转换原则:Python首先将被操作对象转化成表达式中最复杂的操作数类型,然后再对相同的类型的操作数进行数学运算(整数比浮点数简单,浮点数比复数简单)要记住这种混合类型转化仅适用于数值类型,一般来说,Python不会在其他的类型之间进行转化。例如字符串和整数相加就会报错。
  • 运算符的重载和多态(了解):Python运算符可以被Python的类或C扩展类型所重载(即实现),从而能用于你自己创造的对象。再者,Python本身也自动重载了某些运算符,这样它能够根据所处理的内置对象的类型执行不同的操作。例如,“+”运算符用于数字是做加法,而用于字符串或列表对象是做拼接运算。实际上,“+”用在你自己定义的类的对象上时,可以进行你想要的任意操作。而这种特性通常称为多态(操作的意义由操作对象来决定)。

1.6 输入和输出

1.6.1 输入 input

输入函数: input()
  • input()中放入提示提示信息, 告诉用户需要输入什么内容.
  • input()会把用户输入的任何值都作为字符串类型返回.

1.6.2 输出 output

输出函数:print()
  • 一个命令打印多行数据,默认空格隔开 print("df","KO","JOO")#输出df KO J00
  • 一个命令实现同行输出,默认空格隔开 print("df","KO","JOO",sep=',') #输出df,KO,JOO
  • 多个命令实现同行输出 ,print("王康","真棒",end="") print("你好") #输出 王康你好
注:sep = “ str”是在多个数据输出,以str将数据隔开。end = “str”是在有(两)多条print命令中,实现同行输出,print打印数据之间以str相隔
下面是字符串格式化输出的三种方式,占位符%形式是C语言输出分隔很少使用;format格式化是Python2.6新增,较流行;f前缀是Python3.6新增,大样推荐使用,使用f前缀的代码看起来更简洁直观。

1.6.2.2 占位符%格式化输出(了解)

语法:print(”格式化字符“%(变量1,变量2))
print(”格式化字符”%变量)
格式化字符类型
(s,d,f等是转换说明符,说明字符串、整数、浮点数等格式输出)
  • %s 表字符串(string)
  • %c 表示字符
  • %d 表十进制数 (%o八进制;%x十六进制;%e科学计数法浮点计数)
  • %f 表小数(默认保留后六位,%.f保留后两位)
  • %.1f 保留一位小数
  • %% 表一个百分号

1.6.2.1 format格式化输出(掌握)

语法:
1.填充对齐
2.位数与进制转换

1.6.2.2 f前缀格式化输出(推荐使用)

f-string是字符串前面加上“f“,{}直接使用变量、表达式等
 
对于特殊字符需要转义成普通字符需要在字符串前面加\,而另一种方式是在字符串前面加r。相比单独添加反斜杠,前缀r能够对后面字符串要转义的字符全部起作用。
关于字符串相关更多用法,大样将会在后面章节单独讲解。

1.7 拓展

1.7.1 如何摆脱中英文切换问题

对于国内的程序员来说,经常需要切换中英文输入,这样会导致自己在编写代码过程中,很容易符号出错问题,把英文符号写成中文符号的问题。
对于讯飞输入法、搜狗输入法、windows自带输入法等,打开设置-找到设置“中文时使用英文符号”并勾选。然后切换其他输入法再切换回来即可。

1.7.2 pycharm相关快捷键

  1. 代码行操作
快捷键
含义
Ctrl+/
单行注释
ctrl + d
快速向下复制一行.
Ctrl + n
搜索类
ctrl + alt + l
格式化代码(也叫: 代码对齐)
ctrl + alt + m
选中代码快, 抽取为函数
shift + enter
生成下一行,光标切换到下一行
Ctrl + y
删除当前行(推荐Ctrl + x剪切替代)
Ctrl + z
撤销操作
Ctrl + h
查看继承关系树
Ctrl + o
编写类方法时调出魔术方法集
alter + shift + ↓
代码向下移动
alter + shift + ↑
代码向上移动
alter + shift + 鼠标左键
多行代码, 纵向对其选择(notepad++为alter + 鼠标左键)
选中变量并按shift + F6
批量对变量进行替换,包括注释中的变量
  1. 文件相关操作
快捷键
含义
shift + F6
重命名文件
alter + ctrl + insert
新建python脚本
  1. debug调试操作
快捷键
含义
f7
逐过程调试, 遇到函数进入函数源码
f8
逐行调试, 遇到函数不进入函数源码
f9
逐断点调试, 遇到断点才停
  1. 窗口调用
快捷键
含义
alt + 1
显示或隐藏 项目结构区窗口
alt + 4
显示或隐藏 控制台
  1. 自定义快捷键
在编写代码的过程中, 我有时候需要将光标左, 上, 下, 右移时, 此时我要按上下左右键会使我的手离开编写代码的核心区, 怎么办呢?可以在pycharm中重定义上下左右快捷键即可.
pycharm→ file → setting → keymap中, 搜索up, down, left, right然后添加快捷键
快捷键
含义
Ctrl + l
向右移
Ctrl + i
向上移
Ctrl + j
向左移
Ctrl + k
向下移

1.7.3 pycharm推荐插件

  • Atom Material Icons
  • ChatGPT
  • Code Screenshots
  • Material Theme UI
  • Rainbow Brackets
  • SonarLint
  • Tabnine
  • translation