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 /
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
3. 可变参数
*args 数组参数
**kwargs 字典参数
def test_1(*args):
print args
def test_2(**kwargs):
print kwargs
if __name__ == '__main__':
a = [2,3,4,5]
b = {'2':1,'3':2}
test_1(*a)
test_2(**b)
----------------------------------------------------
(2, 3, 4, 5)
{'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'