1. python特性

Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。python代码简单优雅,易上手,但运行速度较慢,Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

2. python2和3的区别

2.1 print

python2 使用print ‘22’, python3使用print(‘22’)
python2可以使用from future import print_function 兼容py3中的print()

2.2 str

python2中的str是byte类型(和unicode区别开来),而py3中的str为unicode类型(将二者统一)

2.3 /

py2中/直接取整,py3中/返回为小数。而//都返回整数

2.4 range/xrange

py3中将range自动变为xrange实现方式。range返回一个list、xrange返回一个生成器。生成器是惰性求值,当循环的数值很大时,效率很明显。

2.5 input/raw_input()

py2中raw_input将所有输入看做是字符串,input只接受数字
py3中只有input,效果等同于py2中的raw_input,支持任意输入,将其视为字符串

2.6 map/filter/reduce

py2中为函数,返回列表;py3中为类,返回生成器。

3. 可变参数

  1. *args 数组参数
  2. **kwargs 字典参数
  3. def test_1(*args):
  4. print args
  5. def test_2(**kwargs):
  6. print kwargs
  7. if __name__ == '__main__':
  8. a = [2,3,4,5]
  9. b = {'2':1,'3':2}
  10. test_1(*a)
  11. test_2(**b)
  12. ----------------------------------------------------
  13. (2, 3, 4, 5)
  14. {'3': 2, '2': 1}

4. 下划线约定

# 单下划线开头,类的内部函数、变量(约定建议),但是外部仍可以强制访问
class test():
    def _t():
        _a = jin()

# 双下划线开头双下划线结尾的是一些 Python 的“魔术”对象,如类成员的 __init__、__del__、__add__、__getitem__ 等,以及全局的 __file__、__name__ 等。 Python 官方推荐永远不要将这样的命名方式应用于自己的变量或函数,而是按照文档说明来使用。
class test():
    def __init():
        self.a = i()

5. 编码问题

unicode_escape  string_escape
将unicode编码字符转换为纯字符
u'\u6211'.encode('unicode_escape')='\u6211'