简介:

Python是一款高层次的解释性语言:Python对于初学者来说(易于学习)Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。学习Python的目的就是为了能够与计算机进行沟通\交流,在Python的语法中,每个语法存在的意义就是为了让计算机能够像人类一样直白的讲,就是让计算机具备我们人类的某一项技能。

## ### ## 一:注释的语法

1.注释的意思就是对代码的解释说明,注释不会影响程序的运行,只起到提示作用!

注释分为两种: 其中一种叫单行注释

单行注释可以加在你代码的正上方,用来对你代码做解释性的说明,#号与注释文本之间一定要有一个空格。

### ## eg:写代码要遵循代码规范

  • 也可以加在你代码同一行的后方,如果单行注释跟在了一行代码的后方,需要先空两个再写,然后#号在空一格,注释对其做解释性的说明。

    eg:pc:如果有一行代码我不想让它运行了,可以在代码前面加一个#号:如下图



    2.多行注释

    可以用三对单引号,也可以是三对双引号,不会影响程序的运行,只起到提示作用



    eg:pycharm也提供自动化格式代码的功能:

    快捷键:Ctrl+Alt+L



    eg:python代码编写规范 >>>: PEP8规范说明书
  • 代码注释的原则

    不用全部加注释,只需要为自己觉得重要或不好理解的部分加注释即可

    注释可以用中文或英语,但不要用拼音

    二:变量的定义



    1.什么是变量?

    变=变化

    量=计量,衡量,记录事物的状态,记忆事物的状态,比如说记录人,姓名,年龄,身高体重,记录英雄的等级,记录银行卡里面的余额,记录事物的状态,是会发生变化的: 这就是变量的一种概念。

    2.为何要有变量呢?

    因为一定是为了让计算机具备人的某一项技能,让计算机拥有人一样记录事物的状态的这种记忆功能。但是会发生变化的,这就叫变量。

  • 比如:你玩王者荣耀,刚开始是别人写好的程序,刚开始是一个英雄,自己等级是1,然后去打野升了一级,在人类看来是升了一级,但是站在程序\程序员角度,(英雄升了一级)就是“变量的变化”变量原来等于0,然后变成1,就是参数的变化,程序的运行本质就是一系列状态的变化。

    3.如何使用变量

    1.变量的定义分成三个部分:



    2.比喻:定义变量如下



    3.解释器执行到变量定义的代码时会申请内存空间存放变量值,然后将变量值的内存地址绑定给变量名,以变量的定义habby='music'为例:

    定义变量申请内存
  • music相当于存放到内存空间里面,存到了内存相当于人类的短期记录,'music'\变量值'相当于存到内存里面的一个(房间里面)'hobby'相当于是找到(music\变量值)的门牌号码地址。

  • 通过变量名即可引用到值,我们可以结合print()功能将其打印出来
  • print(habby)通过变量名habby找到值music,然后执行print(music),输出\打印:music

三:变量名的命名规范

1.变量名只能是,字母,数字或下划线的任意组合

2.变量名的第一个字符不能是数字,下划线建议不要开头因为有特殊含义

3.关键字不能声明为变量名,常用关键字如下:

['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from','global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

  • 错误示范:

    *a=123

    $b=456

    c$=789

    2_name='lili'

    123='lili'

    and=123

    年龄=18 # 强烈建议不要使用中文命名

4.命名风格

1.驼峰体

大驼峰 # 所有单词首字母大写

UserNameFromDb

第一首字母小写其余首字母大写

userNameFromDB

JavaScript推荐使用驼峰体

2.下划线 # 单词与单词之间下划线隔开

user_name_from_db

python推荐使用下划线"""

四:常量

1.变量就是变化的量,常量就是不变的量,主要用于记录一些不变的状态

python语法中没有常量的概念,在python定义不了常量,但是在程序开发过程中会涉及到常量的概念,我们墨守成规的将全大写的变量看成是常量

HOST = '127.0.0.1' # 一般情况下在配置文件中使用较多

在其他编程语言中存在真正意义上常量定义了就无法修改

const pi = 3.14 # 定义常量

pi = 4 # 不支持修改

四:变量三大要素

id:根据 变量值的内存地址,计算出的id号码,它不是内存地址,它是根据内存地址计算出的一串号码,可以把它想象成内存地址的一种映射,从某种程度代表了内存地址

type:事物的状态是分多种多样的 ,而变量值又是用来记录状态的,所以说,对应着,变量值也应该分多种类型,用来记录多种不同的事物状态,类型的状态。

print(name):值本身

五:python底层优化

当值数据量很小的时候 如果有多个变量名需要使用 那么会指向同一块地址



一个变量名只能指向一个内存地址

一个内存地址可以有多个变量名指向

六:垃圾回收机制

  • 程序运行的过程中会申请大量的内存空间,而对于一些,无用的内存空间如果不及时清理的话会导致内存使用殆尽(内存溢出),导致程序奔溃,因此管理内存是一件重要且繁杂的事情,而python解释器自带的垃圾回收机制把程序员从繁杂的内存管理中解放出来



    1.引用计数

    如:age=10

    变量值10被关联了一个变量名age,称之为引用计数为1



    引用计数增加:

    age=10 (此时,变量值10的引用计数为1)

    m=age (把age的内存地址给了m,此时,m,age都关联了10,所以变量值10的引用计数为2)



    引用计数减少:

    age=8(名字age先与值10解除关联,再与3建立了关联,变量值10的引用计数为1)

    del m(del的意思是解除变量名x与变量值10的关联关系,此时,变量10的引用计数为0)



    值18的引用计数一旦变为0,其占用的内存地址就应该被解释器的垃圾回收机制回收

    2.标记清除

    当内存即将沾满的时候 python会自动暂停程序的执行 从头到尾将内存中数据进行扫描

    并打上标记 之后一次性清除掉标记的数据

    3.分代回收

    基于引用计数的回收机制,每次回收内存,都需要把所有对象的引用计数都遍历一遍,这是非常消耗时间的,于是引入了分代回收来提高回收效率,分代回收采用的是用“空间换时间”的策略

    分代:

分代回收的核心思想是:在历经多次扫描的情况下,都没有被回收的变量,gc机制就会认为,该变量是常用变量,gc对其扫描的频率会降低,具体实现原理如下:



回收:

回收依然是使用引用计数作为回收的依据



虽然分代回收可以起到提升效率的效果,但也存在一定的缺点:

例如一个变量刚刚从新生代移入青春代,该变量的绑定关系就解除了,该变量应该被回收,但青春代的扫描频率低于新生代,所以该变量的回收就会被延迟。

python变量垃圾回收机制的入门使用的更多相关文章

  1. 详解python的垃圾回收机制

    python的垃圾回收机制 一.引子 我们定义变量会申请内存空间来存放变量的值,而内存的容量是有限的,当一个变量值没有用了(简称垃圾)就应该将其占用的内存空间给回收掉,而变量名是访问到变量值的唯一方式 ...

  2. 谈一谈python的垃圾回收机制

    [python的垃圾回收机制是怎么实现的] 在C语言时代程序员要负责内存的申请和释放,虽然这样的程序可以对资源进行精细的控制.但是它也有它的问题.这就要求程序员 要写许多与业务逻辑无关的内容在代码里面 ...

  3. python之垃圾回收机制

    一.前言 Python 是一门高级语言,使用起来类似于自然语言,开发的时候自然十分方便快捷,原因是Python在背后为我们默默做了很多事情,其中一件就是垃圾回收,来解决内存管理,内存泄漏的问题. 内存 ...

  4. Python核心技术与实战——二十|Python的垃圾回收机制

    今天要讲的是Python的垃圾回收机制 众所周知,我们现在的计算机都是图灵架构.图灵架构的本质,就是一条无限长的纸带,对应着我们的存储器.随着寄存器.异失性存储器(内存)和永久性存储器(硬盘)的出现, ...

  5. Python的 垃圾回收机制

    垃圾回收 1. 小整数对象池 整数在程序中的使用非常广泛,Python为了优化速度,使用了小整数对象池, 避免为整数频繁申请和销毁内存空间. Python 对小整数的定义是 [-5, 257) 这些整 ...

  6. python的垃圾回收机制和析构函数__del__

    析构函数__del__定义:在类里定义,如果不定义,Python 会在后台提供默认析构函数. 析构函数__del__调用: A.使用del 显式的调用析构函数删除对象时:del对象名: class F ...

  7. 【Python】 垃圾回收机制和gc模块

    垃圾回收机制和gc模块 Py的一个大好处,就是灵活的变量声明和动态变量类型.虽然这使得学习py起来非常方便快捷,但是同时也带来了py在性能上的一些不足.其中相关内存比较主要的一点就是py不会对已经销毁 ...

  8. Python的垃圾回收机制(引用计数+标记清除+分代回收)

    一.写在前面: 我们都知道Python一种面向对象的脚本语言,对象是Python中非常重要的一个概念.在Python中数字是对象,字符串是对象,任何事物都是对象,而它们的核心就是一个结构体--PyOb ...

  9. 周一02.4变量&垃圾回收机制

    一.变量 1. 什么是变量 量:记录事物的某种状态,即事物典型的特征 变:事物的状态是可以发生变化的 2. 为何要用变量 是为了让计算机能够像人一样记录事物的状态 3. 如何用变量 (先定义后引用) ...

随机推荐

  1. Codeforces 777E:Hanoi Factory(贪心)

    Of course you have heard the famous task about Hanoi Towers, but did you know that there is a specia ...

  2. TensorFlow.NET机器学习入门【6】采用神经网络处理Fashion-MNIST

    "如果一个算法在MNIST上不work,那么它就根本没法用:而如果它在MNIST上work,它在其他数据上也可能不work". -- 马克吐温 上一篇文章我们实现了一个MNIST手 ...

  3. Chapter 6 Graphical Representation of Causal Effects

    目录 6.1 Causal diagrams 6.2 Causal diagrams and marginal independence 6.3 Causal diagrams and conditi ...

  4. ARTS Week 19

    Algorithm 本周的 LeetCode 题目为 5. 最长回文子串 给你一个字符串 s,找到 s 中最长的回文子串.例如输入:s = "babad",输出:"bab ...

  5. Java EE数据持久化框架 • 【第3章 MyBatis高级映射】

    全部章节   >>>> 本章目录 3.1 一对一映射 3.1.1 自动化一对一映射 3.1.2 标签配置一对一映射 3.1.3 标签配置一对一映射 3.1.4 实践练习 3.2 ...

  6. MySQL高级查询与编程笔记 • 【第3章 子查询】

    全部章节   >>>> 本章目录 3.1 子查询定义和单行子查询 3.1.1 子查询定义 3.1.2 单行子查询应用 3.1.4 实践练习 3.2 多行子查询应用 3.2.1 ...

  7. Java初学者作业——编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字。

    返回本章节 返回作业目录 需求说明: 编写Java程序,在控制台中输入一个数字,要求定义方法实现找出能够整除该数字的所有数字. 实现思路: 定义方法findNums(),用于实现查找所有能够整除指定数 ...

  8. 编写Java程序,使用Set实现不重复添加用户

    返回本章节 返回作业目录 需求说明: 在控制台输入用户信息,用户信息包括姓名.性别和年龄,将用户信息保存至User对象中. 将User对象保存至HashSet集合中. 规定如果两个User对象的姓名. ...

  9. 你在寻找Vue3移动端项目框架嘛?请看这里

    现在web开发变得更加美妙高效,在于开发工具设计得更好了,丰富性与易用性,都有所提高.丰富性带来了一个幸福的烦恼,就是针对实际应用场景,如何选择工具 ? 1. Vue Cli和Vite之间的选择 Vi ...

  10. 【JPA】Spring Data JPA 实现分页和条件查询

    文章目录 1.在`Repository`层继承两个接口 2.在Service层进行查询操作 3.Page的方法 1.在Repository层继承两个接口 JpaRepository<Admin, ...