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