PEPE规范 和 垃圾回收
目录
1.python解释器的种类及特点
CPython,由C语言开发的,使用最广的解释器(最具广泛兼容性方案)IPython,基于cpython之上的一个交互式计时器,交互方式增强,功能和CPython一样pypy,目标是执行效率,对python代码进行动态编译,提高执行效率JPython,运行在java上的解释器,直接把python代码编译成java字节码执行IronPython,运行在微软.NET平台上的解释器,把python编译成.NET的字节码
2.PEP8规范
缩进
- 缩进,4个空格缩进
- 每行最大长度79,换行可以使用反斜杠
引号
- 自然语言(和人类交流的语言)使用双引号
- 机器标识(和机器交流的语言)使用单引号
正则表达式使用双引号
文档字符串 (docstring) 使用三个双引号
注释
#号后空一格,段落件用空行分开(同样需要#号)
# 块注释
# 块注释
#
# 块注释
# 块注释
行内注释,至少要使用两个空格分开:
name = 'letin' #我的名字
- 错误的注释不如没有注释。所以当一段代码发生变化时,第一件事就是要修改注释!
空格
- 操作符左右各加一个空格 ,在函数的参数中不要加
- 不要在逗号、分号、冒号前面加空格,应该在它们后面加(除非在行尾)
- 函数的参数列表中,逗号之后要有空格
- 左括号之后,右括号之前不要加添加空格
模块导入
- 不要在一句import中多个库,比如import os, sys不推荐。
1、标准库导入
2、第三放库导入
3、自定义库导入
- 不要使用以下导入方法
from bs4 import *
命名规范
模块命名尽量短小,首字母保持小写,可以使用下划线 (尽量不要用下划线)
类名使用驼峰(CamelCase)命名风格,首字母大写,私有类可用一个下划线开头,私有函数可用一个下划线开头
函数名一律小写,如有多个单词,用下划线隔开
变量名尽量小写, 如有多个单词,可用下划线隔开
常量名全大写,如有多个单词,可用下划线隔开
3.解释型语言和编译型语言
编译型语言, (先编译打包,后执行)
使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式
一次性的编译成平台相关的机器语言文件,运行时脱离开发环境,运行效率高
解释型语言,(依赖解释器, 提供相应的解释器,就可以运行源代码 )
解释型语言不需要事先编译,其直接将源代码解释成机器码并立即执行,所以只要某一平台提供了相应的解释器即可运行该程序 。
解释型语言每次运行都需要将源代码解释称机器码并执行,效率较低
4、bit、B、KB、MB、GB的关系
1TB=1024GB、
1GB=1024MB;
1MB=1024KB;
1KB=1024B;
1B=8bit
unicode一个字符是2个字节
utf-8一个字符是3个字节
GBK英文1个字节,中文2个字节
5、列举你所了解到python2和python3的区别
python2有int和long int类型,python3只有int类型
python2的str就是python3的Unicode
python2的bytes就是python3的str
6、is和==的区别
== 是比较值是否相同
is 是比较id是否相同
7、一行代码实现数值交换
a,b = b,a
8、列举常用的字符串格式化的方式
- %S
- format
- f-string
9、python垃圾回收机制
引用计数,当指向该对象内存的引用数为0时回收
标记清除,第一阶段标记,第二阶段清除
第一轮:标记所有“活动对象”与“非活动对象”
第二轮:清除“非活动多选”
分代清除, 为了更合理的进行【标记-删除】 ,代数越高的对象(存活越持久的对象),幼年,中年,老年
10:求结果(自己先想,想完在执行):
v1 = 1 or 3 1
v2 = 1 and 3 3
v3 = 0 and 2 and 1 0
v4 = 0 and 2 or 1 1
v5 = 0 and 2 or 1 or 4 1
v6 = 0 or Flase and 1
对python而言
其一, 在不加括号时候, and优先级大于or
其二, x or y 的值只可能是x或y. x为真就是x, x为假就是y
第三, x and y 的值只可能是x或y. x为真就是y, x为假就是x
例一:
对于, 1 or 5 and 4: 先算5 and 4, 5为真, 值为4. 再算1 or 4, 1 为真,值为1
对于, (1 or 5) and 4: 先算1 or 5, 1为真, 值为1. 再算1 and 4, 1为真,值为4
PEPE规范 和 垃圾回收的更多相关文章
- .net垃圾回收机制编程调试试验
1. 什么是CLR GC? 它是一个基于引用跟踪和代的垃圾回收器. 从本质上,它为系统中所有活跃对象都实现了一种引用跟踪模式,如果一个对象没有任何引用指向它,那么这个对象就被认为是垃圾对象,并且可以被 ...
- 垃圾回收机制GC知识再总结兼谈如何用好GC
一.为什么需要GC 应用程序对资源操作,通常简单分为以下几个步骤: 1.为对应的资源分配内存 2.初始化内存 3.使用资源 4.清理资源 5.释放内存 应用程序对资源(内存使用)管理的方式,常见的一般 ...
- 【转载】Java垃圾回收机制
原文地址:http://www.importnew.com/19085.html Java垃圾回收机制 说到垃圾回收(Garbage Collection,GC),很多人就会自然而然地把它和Java联 ...
- 【转】深入理解 Java 垃圾回收机制
深入理解 Java 垃圾回收机制 一.垃圾回收机制的意义 Java语言中一个显著的特点就是引入了垃圾回收机制,使c++程序员最头疼的内存管理的问题迎刃而解,它使得Java程序员在编写程序的时候不再 ...
- JAVA的垃圾回收机制
1. 垃圾回收的意义 在C++中,对象所占的内存在程序结束运行之前一直被占用,在明确释放之前不能分配给其它对象:而在Java中,当没有对象引用指向原先分配给某个对象的内存时,该内存便成为垃圾.JVM的 ...
- 深入了解C#系列:谈谈C#中垃圾回收与内存管理机制
今天抽空来讨论一下.Net的垃圾回收与内存管理机制,也算是完成上个<WCF分布式开发必备知识>系列后的一次休息吧.以前被别人面试的时候问过我GC工作原理的问题,我现在面试新人的时候偶尔也会 ...
- java面试问题整理-垃圾回收
对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址.大小以及使用情况.通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象,通过这种方式确定哪些对象是"可达的" ...
- 全面分析Java的垃圾回收机制
Java的堆是一个运行时数据区,类的实例(对象)从中分配空间.Java虚拟机(JVM)的堆中储存着正在运行的应用程序所建立的所有对象,这些对象通过new.newarray.anewarray和mult ...
- Java虚拟机5:Java垃圾回收(GC)机制详解
哪些内存需要回收? 哪些内存需要回收是垃圾回收机制第一个要考虑的问题,所谓“要回收的垃圾”无非就是那些不可能再被任何途径使用的对象.那么如何找到这些对象? 1.引用计数法 这个算法的实现是,给对象中添 ...
随机推荐
- python 正则表达式匹配IP地址
一.实验环境 1.Windows7x64_SP1 2.anaconda2.5.0 + python2.7(anaconda集成,不需单独安装) 3.pyinstaller3.0 二.实验目的 从tex ...
- CUDA编程学习笔记1
CUDA编程模型是一个异构模型,需要CPU和GPU协同工作. host和device host和device是两个重要的概念 host指代CPU及其内存 device指代GPU及其内存 __globa ...
- Python【每日一问】36
问: 基础题: 809*x=800*x+9*x+1 其中 x 代表的两位数, 8*x 的结果为两位数, 9*x 的结果为 3 位数.求 x ,及计算 809*x 的结果. 提高题: 对文件" ...
- SWIG 3 中文手册——3. Windows 上使用 SWIG
目录 3 Windows 上使用 SWIG 后续章节 3 Windows 上使用 SWIG 暂时略过. 后续章节 <4. 脚本语言>
- ReentrantReadWriteLock三个线程读数据,三个线程写数据
/*** * 三个线程读数据,三个线程写数据 * */ public class ReadWriteLockTest { public static void main(String[] args) ...
- 【学习笔记】字符串—马拉车(Manacher)
[学习笔记]字符串-马拉车(Manacher) 一:[前言] 马拉车用于求解连续回文子串问题,效率极高. 其核心思想与 \(kmp\) 类似:继承. --引自 \(yyx\) 学姐 二:[算法原理] ...
- [转] Performance_js中计算网站性能监控利器
1.Performance方法 Performance提供的方法可以灵活使用,获取到页面加载等标记的耗时情况. performance.now() //返回当前到页面打开时刻的耗时,精确到千分之一毫秒 ...
- CSS实现水平垂直居中的数种方法整合
CSS实现水平垂直居中可以说是前端老生常谈的问题了,一般面试官问的时候面试者都会回答出来,但是继续追问还有没有其他方法的时候有可能就说不出来了. 本着学习知识的目的,特在此纪录CSS实现水平垂直居中的 ...
- 使用Ueditor上传图片到图片服务器(二)
上一篇主要写了前端部分如何配置ueditor的上传路径,已经jsp页面中如何使用ueditor的编辑器功能以及如何配置单独的图片上传功能. 这一篇,我分两部分:第一部分是搭建图片服务器以及配置ftp上 ...
- 前端通过js获取微信公众号用户的唯一标识符openId
微信公众号程序开发的时候,获取用户信息的时候,需要用到用户的openId,openId是微信用户的唯一标识符,这个操作可以后台实现也可以前端实现,之前项目里是通过后台来获取的,好像用到了一些三方的包, ...