1、python
python是解释型语言;执行时不需要先编译,而是语句执行时需要解释器一边执行一边翻译;每次执行都需要逐句翻译。同时也是面向对象的语言,动态语言,变量本身类型不固定可以随意转换,只有翻译之后才赋值。
补充:
Python的垃圾回收机制:
主:引用计数为零;
辅:
标记清除(解决循环引用的问题)
分代回收(存活时间)
内存泄漏:
在python程序里,内存泄漏是由于一个长期持有的对象不断的往一个dict或者list对象里添加新的对象, 而又没有即时释放,就会导致这些对象占用的内存越来越多,从而造成内存泄漏。另外,对象的交叉引用也会造成内存无法释放的问题
2、变量:
变量:实质上就是引用与对象的关系;自定义的变量可以理解为是一个容器,用来指向某个数据对象,调用的时候通过变量名引用这个数据对象。
python特性:创建即赋值,可以通过他们的身份id【唯一id】 id() 用来判断是否是对同一对象的引用。
本质:计算机内部把任何数据都看成是一个对象,对变量赋值就是把数据对象与变量关联起来。
name = "sb" #声明变量
print(name) #引用并打印变量名name对应的值
命名规范:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
['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']
定义方式:
驼峰体 :每个单词首字母大写 MyAge
下划线体:单词小写,之间用单下划线连接 my_age
python各个类型命名规范总结:
文件名
全小写,可使用下划线
包
应该是简短的、小写的名字。如果下划线可以改善可读性可以加入。如mypackage。
模块
与包的规范同。如mymodule。
类
总是使用首字母大写单词串。如MyClass。内部类可以使用额外的前导下划线。
函数&方法
函数名应该为小写,可以用下划线风格单词以增加可读性。如:myfunction,my_example_function。
*注意*:混合大小写仅被允许用于这种风格已经占据优势的时候,以便保持向后兼容。
函数和方法的参数
总使用“self”作为实例方法的第一个参数。总使用“cls”作为类方法的第一个参数。
如果一个函数的参数名称和保留的关键字冲突,通常使用一个后缀下划线好于使用缩写或奇怪的拼写。
全局变量
对于from M import *导入语句,如果想阻止导入模块内的全局变量可以使用旧有的规范,在全局变量上加一个前导的下划线。
*注意*:应避免使用全局变量
变量
变量名全部小写,由下划线连接各个单词。如color = WHITE,this_is_a_variable = 1
*注意*:
1.不论是类成员变量还是全局变量,均不使用 m 或 g 前缀。
2.私有类成员使用单一下划线前缀标识,多定义公开成员,少定义私有成员。
3.变量名不应带有类型信息,因为Python是动态类型语言。如 iValue、names_list、dict_obj 等都是不好的命名。
常量
常量名所有字母大写,由下划线连接各个单词如MAX_OVERFLOW,TOTAL。
异常
以“Error”作为后缀。
缩写
命名应当尽量使用全拼写的单词,缩写的情况有如下两种:
1.常用的缩写,如XML、ID等,在命名时也应只大写首字母,如XmlParser。
2.命名中含有长单词,对某个单词进行缩写。这时应使用约定成俗的缩写方式。
例如:
function 缩写为 fn
text 缩写为 txt
object 缩写为 obj
count 缩写为 cnt
number 缩写为 num,等。
前导后缀下划线
一个前导下划线:表示非公有。
一个后缀下划线:避免关键字冲突。
两个前导下划线:当命名一个类属性引起名称冲突时使用。
两个前导和后缀下划线:“魔”(有特殊用图)对象或者属性,例如__init__或者__file__。绝对不要创造这样的名字,而只是使用它们。
*注意*:关于下划线的使用存在一些争议。
特定命名方式
主要是指 __xxx__ 形式的系统保留字命名法。项目中也可以使用这种命名,它的意义在于这种形式的变量是只读的,这种形式的类成员函数尽量不要重载。如
class Base(object):
def __init__(self, id, parent = None):
self.__id__ = id
self.__parent__ = parent
def __message__(self, msgid):
# …略
其中 __id__、__parent__ 和 __message__ 都采用了系统保留字命名法。
附:Google Python命名规范
module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_VAR_NAME, instance_var_name, function_parameter_name, local_var_name.
3、字符编码 ***** 字符之间的转换是个难点
二进制位 = bit
1个二进制位是计算机里的最小表示单元;1个字节是计算机里最小的存储单位。
单位转换关系:
8bits = 1Byte =1字节
1024Bytes = 1KB =1024 字节
1024KB = 1MB = 100万字节 =100万字符 =1M
1024MB = 1GB = 一部高清电影短片,1080p 20分钟,
1024GB = 1TB
1024TB = 1PB
ASCII 256个 每一个字符占8位
GB2312 包含6700多字
GB1.0 包含2万1千多字
GB18030 包含2万7千多字
unicode 万国码
utf-8 = 8bits 可变长的编码 表示方式:英文使用一个字节,所有中文用3个字节,欧洲用2个字节
4、相关运算符:
1)算术运算:
加(+),减(-),乘(*),除(/),取余(%),取整除(//),幂乘(**)
2)比较运算:
等于(==),不等于(!=),大于(>),小于(<),大于等于(>=),小于等于(<=)
3)赋值运算:操作对象都是当前变量
简单赋值(=),自加赋值(+=),自减赋值(-=),乘法赋值(*=),除法赋值(/=),取模赋值(%=),幂赋值(**=),取整除赋值(//=)
4)逻辑运算:注意多条件存在的话,不同逻辑的执行参照
与(and),或(or),非(not)
5)成员运算:某元素是不是某个对象的成员,或某元素在不在对象里
in(代表:在),not in (代表:不在)
补充:
Python中对象包含的三个基本要素,分别是:id(身份标识)、type(数据类型)和value(值)。is和==都是对对象进行比较判断作用的,但对对象比较判断的内容并不相同。
==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等;
is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。
5、数据类型:
数字:
- 整型:int
- 浮点型:float
字符串: str t = "元素"
列表: list t = ["元素1","元素2",]
元组: tuple t = (元素1,元素2)
字典: dict t = {"k1":"v1",} 键值对,是唯一有数据结构的类型
集合: set t = {"a1","a2",} 天然去重,关系测试 【交集 &;差集 - ;并集 | ;】
布尔: bool True or False
空值: None
不可变数据类型:数字,字符串,元素,buer
可变数据类型:列表,字典
补充:
0、索引:据数据起始位置的偏移量。
1、range 和 xrange
a. 使用说明:指定范围,生成指定的数字,打印结果为列表,注意是顾头不顾尾
直接生成:print(range(5)) --->[0,1,2,3,4]
指定起始值: print(range(1,5)) ---> [1,2,3,4]
可以指定跨度: print(range(1,10,2)) -->[1,3,5,7,9]
可以反向取值: print(range(10,0,-2)) --->[10,8,6,4,2]
注意点:
在python2 中range和xrange 是有区别的,一个是生成可迭代对象,而另一个是生成一个列表
在python3 中就没有这些区别,两个功能整合为一个range,直接输出结果为列表
2、enumrate 枚举 为可迭代对象添加序号
enumrate(参数1,参数2) 参数1代表可迭代对象,参数2代表序号的起始值
l = ["a","b","c"]
for i in enumerate(l,1):
print(i)
3、字典items()方法与iteritems()方法的不同
注意一点:不管是使用这两个中的什么方法,返回的结果都是无序的!
字典items()方法是将字典中每个键值对组成一个元组,整体组成一个列表输出。
字典iteritems()方法是将字典中的所有项,以迭代器的形式返回。
6、逻辑判断和循环:
逻辑判断:if elif else
循环:for,while
结束循环:break 和 continue 注意这两者的区别
三元表达式:
a = x+1 if x>0 else x