基础知识:

Python定义:

​ 是一个免费、开源、跨平台、动态、面向对象的编程语言

Python程序的执行方式
交互式:

​ 在命令行输入指令,回车即可得到结果

​ 1. 打开终端

​ 2. 进入交互式:python3

​ 3. 编写代码:print(“hello world”)

​ 4. 离开交互式:exit()

文件式:

​ 将指令编写到.py文件,可以重复运行程序。

​ 1. 编写文件

​ 2. 打开终端

​ 3. 进入程序所在目录:cd 目录

​ 4. 执行程序: python3 文件名

Linux常用命令:

​ 1. pwd:查看当前工作目录的路径

​ 2. cd:改变工作目录(进入到某个目录)

​ 练习:

​ 1. 在指定目录创建python文件.

​ --目录:/home/tarena/month01

​ --文件名:exercise01.py

​ 2. 在文件中写入:print(“你好,世界!”)

​ 3. 运行python程序

执行过程:

​ 计算机只能识别机器码(1010),不能识别源代码(python)。

​ 1. 由源代码转变成机器码的过程分成两类:编译和解释。

​ 2. 编译:在程序运行之前,通过编译器将源代码变成机器码,例如:C语言。

​ – 优点:运行速度快

​ – 缺点:开发效率低,不能跨平台。

​ 3. 解释:在程序运行之时,通过解释器对程序逐行翻译,然后执行。例如 Javascript

​ – 优点:开发效率高,可以跨平台;

​ – 缺点:运行速度慢。

​ 4. python是解释型语言,但为了提高运行速度,使用了一种编译的方法。编译之后 得到pyc文件,存储了字节码(特定于Python的表现形式,不是机器码)。

​ 源代码 – 编译 --> 字节码 – 解释 --> 机器码

解释器类型:

​ 1. CPython(C语言开发)

​ 2. Jython (java开发)

​ 3. IronPython (.net开发)

数据基本运算

基础知识

pycharm常用快捷键:

​ 1. 移动到本行开头:home键

​ 2. 移动到本行末尾:end键盘

​ 3. 注释代码:ctrl + /

​ 4. 复制行:ctrl +d

​ 5. 删除行:shift + delete

​ 6. 选择列:shift + alt +鼠标左键

​ 7. 移动行:shift + alt + 上下箭头

​ 8. 代码格式化:ctrl+alt+l

注释

​ 给人看的,通常是对代码的描述信息

​ 1. 单行注释:以#号开头。

​ 2. 多行注释:三引号开头,三引号结尾。

函数

​ 表示一个功能,函数定义者是提供功能的人,函数调用者是使用功能的人。

例如:

  1. print(数据) 作用:将括号中的内容显示在控制台中

    print("hello world")# 1. 字面意思:打印(数据)
    # 2. 作用:在终端中显示数据
    # 3. 适用性:显示结果
    
  2. 变量 = input(“需要显示的内容”) 作用:将用户输入的内容赋值给变量

    name = input("请输入姓名:")
    age = input("请输入年龄:")
    
变量

​ 1. 定义:关联一个对象的标识符。

​ 2. 命名:必须是字母或下划线开头,后跟字母、数字、下划线。

​ 不能使用关键字(蓝色),否则发生语法错误:SyntaxError: invalid syntax。

​ 3. 建议命名:字母小写,多个单词以下划线隔开。

​ class_name = “xxx”

​ 4. 赋值:创建一个变量或改变一个变量关联的数据。

​ 5. 语法:

​ 变量名 = 数据

​ 变量名1 = 变量名2 = 数据

​ 变量名1, 变量名2, = 数据1, 数据2

# 将数据地址赋值给变量
name = "悟空"
name = "孙悟空"将数据地址赋值给变量(不是将变量name自身地址赋值给da_sheng)da_sheng = name
print(name)

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TXIKSUmG-1600477831917)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200827170157098.png)]

del语句

​ 1. 语法:

​ del 变量名1, 变量名2

​ 2. 作用:

​ 用于删除变量,同时解除与对象的关联.如果可能则释放对象。

​ 3. 自动化内存管理的引用计数:

​ 每个对象记录被变量绑定(引用)的数量,当为0时被销毁。

核心数据类型

整形int

​ 1. 表示整数,包含正数、负数、0。

​ 如: -5, 100, 0

​ 2. 字面值:

​ 十进制:每位用十种状态计数,逢十进一,写法是0~9。

​ 二进制:每位用二种状态计数,逢二进一,写法是0b开头,后跟0或者1。

​ 八进制:每位用八种状态计数,逢八进一,写法是0o开头,后跟0~7。

​ 十六进制:每位用十六种状态计数,逢十六进一,

​ 写法是0x开头,后跟09,AF,a~f

浮点型float

​ 1. 表示小数,包含正数、负数,0.0。

​ 2. 字面值:

​ 小数:1.0 2.5

​ 科学计数法:e/E (正负号) 指数

​ 1.23e-2 (等同于0.0123)

​ 1.23456e5(等同于123456.0)

字符串str

​ 是用来记录文本信息(文字信息)。

​ 字面值:双引号

布尔bool

​ 用来表示真和假的类型

​ True 表示真(条件满足或成立),本质是1

​ False 表示假(条件不满足或不成立),本质是0

数据类型转换

​ 1. 转换为整形: int(数据)

​ 2. 转换为浮点型:float(数据)

​ 3. 转换为字符串:str(数据)

​ 4. 转换为布尔:bool(数据)

         结果为False:bool(0)  bool(0.0)  bool(None)

​ 5. 混合类型自动升级:

 1 + 2.14  返回的结果是 3.14

​ 1 + 3.0 返回结果是: 4.0

运算符

算术运算符

​ + 加法

​ - 减法

​ * 乘法

​ / 除法:结果为浮点数

​ // 整除:除的结果去掉小数部分

​ % 求余

​ ** 幂运算

​ 优先级从高到低: ()

​ **

​ * / % //

​ + -

增强运算符

​ y += x 相当于 y = y + x

​ y -= x 相当于 y = y - x

​ y *= x 相当于 y = y * x

​ y /= x 相当于 y = y / x

​ y //= x 相当于 y = y // x

​ y %= x 相当于 y = y % x

​ y = x 相当于 y = y x

比较运算符

​ < 小于

 <=      小于等于\>       大于\>=       大于等于==        等于!=       不等于

​ 返回布尔类型的值

​ 比较运算的数学表示方式:0 <= x <= 100

逻辑运算符
与 and

​ 表示并且的关系,一假俱假。

​ 示例:

 True and True   # TrueTrue and False    # FalseFalse and True   # False

​ False and False # False

或 or

​ 表示或者的关系,一真俱真

 示例:

​ True or True # True

​ True or False # True

​ False or True # True

​ False or False # False

非 not

​ 表示取反

​ 例如:

​ not True # 返回False

​ not False # 返回True

短路运算

​ 一但结果确定,后面的语句将不再执行。

身份运算符

​ 语法:

 x is yx is not y

​ 作用:

优先级

​ 高到低:

​ 算数运算符

​ 比较运算符

​ 增强运算符

​ 身份运算符

​ 逻辑运算符

语句

​ 1. 物理行:程序员编写代码的行。

​ 2. 逻辑行:python解释器需要执行的指令。

​ 3. 建议一个逻辑行在一个物理行上。

​ 4. 如果一个物理行中使用多个逻辑行,需要使用分号;隔开。

​ 5. 如果逻辑行过长,可以使用隐式换行或显式换行。隐式换行:所有括号的内容换行,称为隐式换行 括号包括: () [] {} 三种

​ 显式换行:通过折行符 \ (反斜杠)换行,必须放在一行的末尾,目的是告诉解释器,下一行也是本行的语句。

选择语句
if elif else 语句:

​ 1. 作用:

让程序根据条件选择性的执行语句。

​ 2. 语法:

 if 条件1:

​ 语句块1

 elif 条件2:

​ 语句块2

 else:

​ 语句块3

​ 3. 说明:

 elif 子句可以有0个或多个。else 子句可以有0个或1个,且只能放在if语句的最后。
if语句的真值表达式

​ if 100:

​ print(“真值”)

​ 等同于

​ if bool(100):

     print("真值")
条件表达式

​ 语法:变量 = 结果1 if 条件 else 结果2

sex = input("请输入性别:")
if sex == "男":value = 1
else:value = 0
value = 1 if sex == "男" else 0
 作用:根据条件(True/False) 来决定返回结果1还是结果2。
循环语句
while 语句

​ 1. 作用:

​ 可以让一段代码满足条件,重复执行。

​ 2. 语法:

​ while 条件:

​ 满足条件执行的语句

 else:

​ 不满足条件执行的语句

​ 3. 说明:

          else子句可以省略。在循环体内用break终止循环时,else子句不执行。
while True:if float(input("请输入您的存款")) > 100000:print("娶你")else:print("学习")if input("请输入q退出:") == "q":break
for 语句

​ 1. 作用:

     用来遍历可迭代对象的数据元素。

​ 可迭代对象是指能依次获取数据元素的对象,例如:容器类型。

​ 2. 语法:

     for 变量列表 in 可迭代对象:

​ 语句块1

     else:

​ 语句块2

​ 3. 说明:

     else子句可以省略。在循环体内用break终止循环时,else子句不执行。
message = "我爱编程"
# 遍历字符串
for item in message:# 打印每个字符print(item)
# for item in message:
#     item = "x" # 修改的是变量item存储的地址,没有修改字符串
print(message)
range语句

​ 1. 作用:

     用来创建一个生成一系列整数的可迭代对象(也叫整数序列生成器)。

​ 2. 语法:

     range(开始点,结束点,间隔)

​ 3. 说明:

​ 函数返回的可迭代对象可以用for取出其中的元素

​ 返回的数字不包含结束点

​ 开始点默认为0

​ 间隔默认值为1

跳转语句
break语句

​ 1. 跳出循环体,后面的代码不再执行。

​ 2. 可以让while语句的else部分不执行。

continue 语句

​ 跳过本次,继续下次循环

容器类型

通用操作

数学运算符

​ 1.+:用于拼接两个容器

list01 = [1,2,3]
list02 = [4,5,6]
list03 = list01 + list02
print(list03)
# [1, 2, 3, 4, 5, 6]

​ 2. +=:用原容器与右侧容器拼接,并重新绑定变量

​ 3. *:重复生成容器元素

​ 4. *=:用原容器生成重复元素, 并重新绑定变量

​ 5. < <= > >= == !=:依次比较两个容器中元素,一但不同则返回比较结果。

成员运算符

​ 1. 语法:

​ 数据 in 序列

​ 数据 not in 序列

​ 2. 作用:

​ 如果在指定的序列中找到值,返回bool类型。

索引 index:

​ 1. 作用:定位单个容器元素。

​ 2. 语法:容器[整数]

​ 3. 说明:

​ 正向索引从0开始,第二个索引为1,最后一个为len(s)-1。

​ 反向索引从-1开始,-1代表最后一个,-2代表倒数第二个,以此类推,第一个是-len(s)。

切片 slice

​ 1. 作用:

​ 定位多个容器元素。

​ 2. 语法:

​ 容器[开始索引:结束索引:步长]

​ 3. 说明:

​ 结束索引不包含该位置元素

​ 步长是切片每次获取完当前元素后移动的偏移量

​ 开始、结束和步长都可以省略

    message = "我是齐大圣孙悟空"
# 训练
# print(message[2: 6])# "齐天大圣"
print(message[2: -3])  # "齐天大圣"
print(message[3: -1])  # "大圣孙悟"
print(message[2:: -1])# "齐是我"
print(message[1:4:-1])# 空
内建函数

​ 1. len(x) 返回序列的长度

​ 2. max(x) 返回序列的最大值元素

​ 3. min(x) 返回序列的最小值元素

​ 4. sum(x) 返回序列中所有元素的和(元素必须是数值类型)

字符串 str

定义

​ 由一系列字符组成的不可变序列容器,存储的是字符的编码值。

编码

​ 1. 字节byte:计算机最小存储单位,等于8 位bit.

​ 2. 字符:单个的数字,文字与符号。

​ 3. 字符集(码表):存储字符与二进制序列的对应关系。

​ 4. 编码:将字符转换为对应的二进制序列的过程。

​ 5. 解码:将二进制序列转换为对应的字符的过程。

​ 6. 编码方式:

​ --ASCII编码:包含英文、数字等字符,每个字符1个字节。

     --GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节。--Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节。--UTF-8编码:Unicode的存储与传输方式,英文1字节,中文3字节。
字面值:
单引和双引号的区别:

​ 1. 单引号内的双引号不算结束符

​ 2. 双引号内的单引号不算结束符

三引号的区别:

​ 1. 换行会自动转换为换行符\n

​ 2. 三引号内可以包含单引号和双引号

​ 3.作为文档字符串

转义字符:

​ 1. 改变字符的原始含义。

​ \’ \” \””” \n \ \t \0 空字符

​ 2. 原始字符串:取消转义。

​ a = r”C:\newfile\test.py”

字符串格式化:

​ 1. 定义:

​ 生成一定格式的字符串。

​ 2. 语法:

​ 字符串%(变量)

​ “我的名字是%s,年龄是%s” % (name, age)

​ 3. 类型码:

​ %s 字符串 %d整数 %f 浮点数

列表 list

定义

​ 由一系列变量组成的可变序列容器。

基础操作

​ 1. 创建列表:

​ 列表名 = []

​ 列表名 = list(可迭代对象)

​ 2. 添加元素:

​ 表名.append(元素)

​ 列表.insert(索引,元素)

list01.insert(1, 40)

​ 3. 定位元素:

​ 列表名[索引] = 元素

​ 变量 = 列表名[索引]

​ 变量 = 列表名[切片] # 赋值给变量的是切片所创建的新列表

​ 列表名[切片] = 容器 # 右侧必须是可迭代对象,左侧切片没有创建新列表。遍历列表:

​ 正向:

​ for 变量名 in 列表名:

​ 变量名就是元素

​ 反向:

​ for 索引名 in range(len(列表名)-1,-1,-1):

​ 列表名[索引名]就是元素

​ 4. 删除元素:

​ 列表名.remove(元素)

                 del 列表名[索引或切片]
深拷贝和浅拷贝

​ 浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程。

​ 深拷贝:复制整个依懒的变量。

import copylist01 = [10, [20, 30]]
list02 = list01  # 赋值
list03 = list01[:]  # 切片(浅拷贝)
list04 = copy.deepcopy(list01)  # 深拷贝list04[0] = 100
list04[1][0] = 200 # 修改深拷贝后数据 不影拷贝前的数据
list03[0] = 1000 # 修改浅拷贝浅数据不影响拷贝前的数据
list03[1][0] = 2000 # 修改浅拷贝深层数据影响拷贝前的数据
list02[0] = 10000 # 因为数据1份,所以互相影响
list02[1][0] = 20000

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s6SGVjWO-1600477831919)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200827174559633.png)]

列表与字符串转换:

​ 将多个字符串拼接为一个。

​ result = “连接符”.join(列表)

list01 = ["a", "b", "c"]
result = "#".join(list01)
print(result) #a#b#c

​ 将一个字符串拆分为多个。

​ 列表 = “a-b-c-d”.split(“分隔符”)

# "悟空,猪八戒,唐僧"
datas = "悟空,猪八戒,唐僧".split(",")
print(datas)
#['悟空', '猪八戒', '唐僧']
列表推导式:

​ 1. 定义:

​ 使用简易方法,将可迭代对象转换为列表。

​ 2. 语法:

​ 变量 = [表达式 for 变量 in 可迭代对象]

​ 变量 = [表达式 for 变量 in 可迭代对象 if 条件]

​ 3. 说明:

​ 如果if真值表达式的布尔值为False,则可迭代对象生成的数据将被丢弃。

列表推导式嵌套:

​ 1. 语法:

​ 变量 = [表达式 for 变量1 in 可迭代对象1 for 变量2 in可迭代对象2]

​ 2. 传统写法:

​ result = []

​ for r in [“a”, “b”, “c”]:

             for c in ["A", "B", "C"]:

​ result.append(r + c)

​ 3. 推导式写法:

​ result = [r + c for r in list01 for c in list02]

元祖 tuple

定义

​ 1. 由一系列变量组成的不可变序列容器。

​ 2. 不可变是指一但创建,不可以再添加/删除/修改元素。

基础操作

​ 1. 创建空元组:

​ 元组名 = ()

​ 元组名 = tuple()

​ 2. 创建非空元组:

​ 元组名 = (20,)

             元组名 = (1, 2, 3)

​ 元组名 = 100,200,300

​ 元组名 = tuple(可迭代对象)

​ 3. 获取元素:

​ 变量 = 元组名[索引]

​ 变量 = 元组名[切片] # 赋值给变量的是切片所创建的新列表

​ 4. 遍历元组:

​ 正向:

​ for 变量名 in 列表名:

​ 变量名就是元素

​ 反向:

​ for 索引名 in range(len(列表名)-1,-1,-1):

​ 元组名[索引名]就是元素

作用

​ 1. 元组与列表都可以存储一系列变量,由于列表会预留内存空间,所以可以增加元素。

​ 2. 元组会按需分配内存,所以如果变量数量固定,建议使用元组,因为占用空间更小。

​ 3. 应用:

​ 变量交换的本质就是创建元组:x, y = (y, x )

​ 格式化字符串的本质就是创建元祖:“姓名:%s, 年龄:%d” % (“tarena”, 15)

字典 dict

定义

​ 1. 由一系列键值对组成的可变散列容器。

​ 2. 散列:对键进行哈希运算,确定在内存中的存储位置,每条数据存储无先后顺序。

​ 3. 键必须惟一且不可变(字符串/数字/元组),值没有限制。

基础操作

​ 1. 创建字典:

​ 字典名 = {键1:值1,键2:值2}

​ 字典名 = dict (可迭代对象)

​ 2. 添加/修改元素:

​ 语法:

                     字典名[键] = 数据

​ 说明:

                      键不存在,创建记录。键存在,修改值。

​ 3. 获取元素:

​ 变量 = 字典名[键] # 没有键则错误

​ 4. 遍历字典:

​ for 键名 in 字典名:

​ 字典名[键名]

​ for 键名,值名 in 字典名.items():

​ 语句

​ 5. 删除元素:

​ del 字典名[键]

字典推导式

​ 1. 定义:

​ 使用简易方法,将可迭代对象转换为字典。

​ 2. 语法:

​ {键:值 for 变量 in 可迭代对象}

dict_result = {number: number ** 2 for number in range(1, 11)}

print(dict_result)

                 {键:值 for 变量 in 可迭代对象 if 条件}

集合

定义

​ 1. 由一系列键值对组成的可变散列容器。

​ 1. 由一系列不重复的不可变类型变量(元组/数/字符串)组成的可变散列容器。

​ 2.相当于只有键没有值的字典(键则是集合的数据)。

基础操作

​ 1. 创建空集合:

​ 集合名 = set()

​ 集合名 = set(可迭代对象)

​ 2. 创建具有默认值集合:

​ 集合名 = {1, 2, 3}

​ 集合名 = set(可迭代对象)

​ 3. 添加元素:

​ 集合名.add(元素)

​ 4. 删除元素:

​ 集合名.discard(元素)

运算

​ 1. 交集&:返回共同元素。

s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 & s2  # {2, 3}

​ 2. 并集:返回不重复元素

s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 | s2  # {1, 2, 3, 4}

​ 3. 补集-:返回只属于其中之一的元素

s1 = {1, 2, 3}
s2 = {2, 3, 4}
s1 - s2  # {1} 属于s1但不属于s2
补集^:返回不同的的元素
s1 = {1, 2, 3}
s2 = {2, 3, 4}
s3 = s1 ^ s2  # {1, 4}  等同于(s1-s2 | s2-s1)

​ 4. 子集<:判断一个集合的所有元素是否完全在另一个集合中

​ 5. 超集>:判断一个集合是否具有另一个集合的所有元素

s1 = {1, 2, 3}
s2 = {2, 3}
s2 < s1  # True
s1 > s2  # True

​ 6. 相同或不同== !=:判断集合中的所有元素是否和另一个集合相同。

s1 = {1, 2, 3}
s2 = {3, 2, 1}
s1 == s2  # True
s1 != s2  # False

​ 子集或相同,超集或相同 <= >=

集合推导式

​ 1. 定义:

​ 使用简易方法,将可迭代对象转换为集合。

​ 2. 语法:

​ {表达式 for 变量 in 可迭代对象}

              {表达式 for 变量 in 可迭代对象 if 条件}

函数 function

pycharm 快捷键

​ 参数信息(在方法中调用参数)

​ Ctrl + Q 快速查看文档

​ Ctrl + Alt + M 提取方法

​ Ctrl + D 复制一行

定义

​ 1. 用于封装一个特定的功能,表示一个功能或者行为。

​ 2.函数是可以重复执行的语句块, 可以重复调用

作用

​ 提高代码的可重用性和可维护性(代码层次结构更清晰)。

定义函数

​ 1. 语法:

​ def 函数名(形式参数):

                     函数体

​ 2. 说明:

​ def 关键字:全称是define,意为”定义”。

​ 函数名:对函数体中语句的描述,规则与变量名相同。

​ 形式参数:方法定义者要求调用者提供的信息。

​ 函数体:完成该功能的语句。

​ 3. 函数的第一行语句建议使用文档字符串描述函数的功能与参数。

调用函数

​ 1. 语法:函数名(实际参数)

​ 2. 说明:根据形参传递内容。

返回值

​ 1. 定义:

​ 方法定义者告诉调用者的结果。

​ 2. 语法:

​ return 数据

​ 3. 说明:

​ return后没有语句,相当于返回 None。

​ 函数体没有return,相当于返回None。

可变/不可变类型在传参时的区别

​ 1. 不可变类型参数有:

​ 数值型(整数,浮点数)

​ 布尔值bool

​ None 空值

​ 字符串str

​ 元组tuple

​ 2. 可变类型参数有:

​ 列表 list

​ 字典 dict

​ 集合 set

​ 3. 传参说明:

​ 不可变类型的数据传参时,函数内部不会改变原数据的值。

​ 可变类型的数据传参时,函数内部可以改变原数据。

函数参数

实参传递方式argument
位置传参

​ 定义:实参与形参的位置依次对应

序列传参

​ 定义:实参用*将序列拆解后与形参的位置依次对应。

关键字传参

​ 定义:实参根据形参的名字进行对应。

字典关键字传参

​ 1. 定义:实参用**将字典拆解后与形参的名字进行对应。

​ 2. 作用:配合形参的缺省参数,可以使调用者随意传参。

形参定义方式parameter
缺省形参

​ 1. 语法:

​ def 函数名(形参名1=默认实参1, 形参名2=默认实参2, …):

                 函数体

​ 2. 说明:

​ 缺省参数必须自右至左依次存在,如果一个参数有缺省参数,则其右侧的所有参数 都必须有缺省参数。

​ 缺省参数可以有0个或多个,甚至全部都有缺省参数。

位置形参

​ 语法:

​ def 函数名(形参名1, 形参名2, …):

​ 函数体

命名关键字形参

​ 1. 语法:

​ def 函数名(*args, 命名关键字形参1, 命名关键字形参2, …):
​ 函数体

​ def 函数名(*, 命名关键字形参1, 命名关键字形参2, …):

​ 函数体

​ 2. 作用:

​ 强制实参使用关键字传参

不定长形参

​ 星号元祖形参

​ 1. 语法:

​ def 函数名(*元组形参名):

​ 函数体

​ 2. 作用:

​ 可以将多个位置实参合并为一个元组

​ 3. 说明:

​ 一般命名为’args’

​ 形参列表中最多只能有一个

​ 双星号元祖形参

​ 1. 语法:

​ def 函数名(**字典形参名):

​ 函数体

​ 2. 作用:

​ 可以将多个关键字实参合并为一个字典

​ 3. 说明:

​ 一般命名为’kwargs’

​ 形参列表中最多只能有一个

参数自左至右的顺序

​ 位置形参 --> 星号元组形参 --> 命名关键字形参 --> 双星号字典形参

作用域 LEGB

​ 1. 作用域:变量起作用的范围。

​ 2. Local局部作用域:函数内部。

​ 3. Enclosing 外部嵌套作用域 :函数嵌套。

​ 4. Global全局作用域:模块(.py文件)内部。

​ Builtin内置模块作用域:builtins.py文件。

变量名的查找规则

​ 1. 由内到外:L -> E -> G -> B

​ 2. 在访问变量时,先查找本地变量,然后是包裹此函数外部的函数内部的变量,之后是全局变 量,最后是内置变量。

局部变量

​ 1. 定义在函数内部的变量(形参也是局部变量)

​ 2. 只能在函数内部使用

​ 3. 调用函数时才被创建,函数结束后自动销毁

全名变量

​ 1. 定义在函数外部,模块内部的变量。

​ 2. 在整个模块(py文件)范围内访问(但函数内不能将其直接赋值)。

global 语句

​ 1. 作用:

​ 在函数内部修改全局变量。

​ 在函数内部定义全局变量(全局声明)。

​ 2. 语法:

​ global 变量1, 变量2, …

a = 10
def func01():# 在函数内部,只能读取全局变量a = 20  # 创建局部变量,没有修改全局变量print(a)  # 20
func01()
print(a)  # 10
def func02():global a  # 如果在局部变量修改全局变量,必须通过global声明a = 20print(a)

​ 3. 说明

​ 在函数内直接为全局变量赋值,视为创建新的局部变量。

​ 不能先声明局部的变量,再用global声明为全局变量。

nonlocal 语句

​ 1. 作用:

​ 在内层函数修改外层嵌套函数内的变量

​ 2. 语法

​ nonlocal 变量名1,变量名2, …

def func01():a= 1def func():nonlocal a  #print(a)func()
func01()

​ 3. 说明

​ 在被嵌套的内函数中进行使用

​ 行重写,从而改变其行为。

​ 转换字符串

​ __str__函数:将对象转换为字符串(对人友好的)

​ __repr__函数:将对象转换为字符串(解释器可识别的)

运算符重载

​ 定义:让自定义的类生成的对象(实例)能够使用运算符进行操作。

​ 算数运算符重载

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lyFDxXi6-1600477831920)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200827154846816.png)]

​ 复合运算符重载

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2FpV9LgC-1600477831922)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200827154907785.png)]

​ 比较运算符重载

​ [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qoX1S1V6-1600477831923)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200827154920224.png)]

设计原则

开-闭原则(目标、总的指导思想)

​ ****O****pen ****C****losed ****P****rinciple

​ 对扩展开放,对修改关闭。

​ 增加新功能,不改变原有代码

类的单一职责(一个类的定义)

​ ****S****ingle ****R****esponsibility ****P****rinciple

​ 一个类有且只有一个改变它的原因。

依赖倒置(依赖抽象)

​ ****D****ependency ****I****nversion ****P****rinciple

​ 客户端代码(调用的类)尽量依赖(使用)抽象。

​ 抽象不应该依赖细节,细节应该依赖抽象。

组合复用原则(复用的最佳实践)

​ Composite Reuse Principle

​ 如果仅仅为了代码复用优先选择组合复用,而非继承复用。

​ 组合的耦合性相对继承低。

里氏替换(继承后的重写,指导继承的设计)

​ ****L****iskov ****S****ubstitution ****P****rinciple

​ 父类出现的地方可以被子类替换,在替换后依然保持原功能。

​ 子类要拥有父类的所有功能。

​ 子类在重写父类方法时,尽量选择扩展重写,防止改变了功能。

迪米特法则(类与类的交互原则

​ Law of Demeter

​ 不要和陌生人说话。

​ 类与类交互时,在满足功能要求的基础上,传递的数据量越少越好。因为这样可能降低耦合度。

 不能先声明局部的变量,再用global声明为全局变量。
nonlocal 语句

​ 1. 作用:

​ 在内层函数修改外层嵌套函数内的变量

​ 2. 语法

​ nonlocal 变量名1,变量名2, …

def func01():a= 1def func():nonlocal a  #print(a)func()
func01()

​ 3. 说明

​ 在被嵌套的内函数中进行使用

​ 行重写,从而改变其行为。

​ 转换字符串

​ __str__函数:将对象转换为字符串(对人友好的)

​ __repr__函数:将对象转换为字符串(解释器可识别的)

运算符重载

​ 定义:让自定义的类生成的对象(实例)能够使用运算符进行操作。

​ 算数运算符重载

​ [外链图片转存中…(img-lyFDxXi6-1600477831920)]

​ 复合运算符重载

​ [外链图片转存中…(img-2FpV9LgC-1600477831922)]

​ 比较运算符重载

​ [外链图片转存中…(img-qoX1S1V6-1600477831923)]

设计原则

开-闭原则(目标、总的指导思想)

​ ****O****pen ****C****losed ****P****rinciple

​ 对扩展开放,对修改关闭。

​ 增加新功能,不改变原有代码

类的单一职责(一个类的定义)

​ ****S****ingle ****R****esponsibility ****P****rinciple

​ 一个类有且只有一个改变它的原因。

依赖倒置(依赖抽象)

​ ****D****ependency ****I****nversion ****P****rinciple

​ 客户端代码(调用的类)尽量依赖(使用)抽象。

​ 抽象不应该依赖细节,细节应该依赖抽象。

组合复用原则(复用的最佳实践)

​ Composite Reuse Principle

​ 如果仅仅为了代码复用优先选择组合复用,而非继承复用。

​ 组合的耦合性相对继承低。

里氏替换(继承后的重写,指导继承的设计)

​ ****L****iskov ****S****ubstitution ****P****rinciple

​ 父类出现的地方可以被子类替换,在替换后依然保持原功能。

​ 子类要拥有父类的所有功能。

​ 子类在重写父类方法时,尽量选择扩展重写,防止改变了功能。

迪米特法则(类与类的交互原则

​ Law of Demeter

​ 不要和陌生人说话。

​ 类与类交互时,在满足功能要求的基础上,传递的数据量越少越好。因为这样可能降低耦合度。

python核心基础知识相关推荐

  1. python编程基础知识体系_最新版 17 幅思维导图:Python 编程之核心知识体系

    原标题:最新版 17 幅思维导图:Python 编程之核心知识体系 导读:本文主要涵盖了 Python 编程的核心知识,展示了一系列思维导图,主要就 Python 核心基础知识进行了细致梳理.无论你是 ...

  2. python基础知识总结-python编程语言基础知识总结

    原标题:python编程语言基础知识总结 今天给大家讲解python语言基础~~ 01.python核心数据类型 整型数 int:整数是不带有小数部分的数字 浮点型数 float:浮点数是带有小数部分 ...

  3. 程序员必会的核心基础知识:1张导图+10本书

    ▲点击可查看大图 一年一度的秋招即将拉开序幕,程序员"金九银十"跳槽季也接踵而至.大部分互联网公司都会进行基础知识的考察,基础知识的重要性不言而喻. 计算机基础知识对程序员来说为什 ...

  4. python编程语言-python编程语言基础知识总结

    原标题:python编程语言基础知识总结 今天给大家讲解python语言基础~~ 01.python核心数据类型 整型数 int:整数是不带有小数部分的数字 浮点型数 float:浮点数是带有小数部分 ...

  5. python前端基础知识总结 及部分练习题

    python前端基础知识总结 知识总结 认识Python 发展历史 版本选择 python2.7是python2的最后一个版本,到2020年将不再维护 python3.6是python3最新的版本,是 ...

  6. python基础1:认识python和基础知识

    第一章 认识python和基础知识 本章目录 1.1. 认识python(了解)1.2. 第一个python程序1.3. 注释1.4. 变量以及类型1.5. 标示符和关键字1.6. 输出1.7. 输入 ...

  7. python代码计算矩形面积_学习资料Python语言基础知识笔记以及答案

    01. Python语言基础知识等笔记: 02. Python作业答案: [例2-3]通过输入函数input()输入股票代码.股票名称.当天股票最高价和最低价,通过输出函数print()输出股票代码+ ...

  8. python基础实例-Python入门基础知识实例,值得收藏!

    7月的编程语言指数榜已经发布,Python 在今年5月首次超越 Java 拿下榜首位置后,仍保持上涨趋势,正逐渐与 Java 拉开差距.(图为与去年 7 月数据对比) 上周为大家简单介绍了如何安装Py ...

  9. python基础实例-Python入门基础知识实例,

    今天小白就为大家分享一些Python的基础知识,希望大家都能快速入门Python~ 1.在Python 语言中,对象是通过引用传递的. 在赋值时,不管这个对象是新创建的,还是一个已经存在的,都是将该对 ...

最新文章

  1. 办公求生指南:分享10个可以提高办公效率的优质神器
  2. js按钮触发网页提醒_js触发asp.net的Button的Onclick事件应用
  3. Sharepoint 2007 定制Feature和卸载Feature
  4. Eclipse Class Decompiler---Java反编译插件
  5. 攻击 FreeIPA 域:对象枚举
  6. Android system.img 打包解包
  7. node-mysql中的连接池代码学习
  8. 深度剖析:Redis 分布式锁到底安全吗?看完这篇文章彻底懂了!
  9. 【数据结构与算法】二叉树结点最小深度求解算法
  10. Java中解决继承和接口默认方法冲突
  11. 重磅!阿里推出国产开源的JDK!这是要干掉oracle??
  12. PyTorch批训练及优化器比较
  13. jquery以及jquery对象介绍
  14. 去除360安全卫士的广告弹窗(亲测有效)
  15. 无限纷争怎么看以前的服务器,无限纷争怎么切换角色 无限纷争切换角色方法...
  16. page_to_pfn 、virt_to_page、 virt_to_phys、page、页帧pfn、内核虚拟地址、物理内存地址linux内核源码详解
  17. Nginx代理服务器的安装及 开机启动配置
  18. 斗鱼直播地址抓取——转载
  19. 停车还能360全方位影像_新款途锐2.0版、3.0版均能升级的原厂360全景影像及盲点辅助系统...
  20. 国家级贫困县摘帽情况分省分年统计(832个)

热门文章

  1. table 固定表头
  2. 【Python的自学之路】(五):案例分析第三课
  3. qpython 3h怎么使用_不思议迷宫M15怎么玩 不思议迷宫M15攻略
  4. 白热化的能源汽车市场、应如何与之抗衡?
  5. win10怎么改管理员名字_英雄联盟手游怎么改名字可以改吗?lol手游ID格式最多几个字...
  6. 摩尔的预言 唯有CUDA才是终极的CPU
  7. 【个性化】Windows10系统的个性化设置
  8. 网页滚动特效—WOW.JS快速使用教程
  9. CCAI 2017 | 刘燕:艺术与人工智能的明天——人机信任合作
  10. php cve 2017 12933,18-017 (March 27, 2018)