感叹一下,学习Python的过程,就是在不断感叹“卧槽好厉害”,‘我去还有这种操作?’的过程。
过去的语言相比之下,变得繁复和冗余,python简洁好用的特点,震撼到了我
==================================================================================
特性1:
命名关键字
*args
是可变参数,args接收的是一个tuple;
**kw
是关键字参数,kw接收的是一个dict。
有默认参数值的函数,有了命名关键字后,更易阅读和使用
==================================================================================
特性2:
切片(Slice)操作符
>>> L[0:3]
['Michael', 'Sarah', 'Tracy']
L[0:3]
表示,从索引0
开始取,直到索引3
为止,但不包括索引3
。即索引0
,1
,2
,正好是3个元素。
用法包括但不限于:取全部值 L[:], 取后十个值 L[-10:], 每五个取一次 L[::5]
==================================================================================
特性3:
闭包(Closure)
def print_msg(): # print_msg 是外围函数 msg = "zen of python" def printer(): # printer 是嵌套函数 print(msg) return printer another = print_msg() # 输出 zen of python another()
another
就是一个闭包,闭包本质上是一个函数,它有两部分组成,printer
函数和变量 msg
。闭包使得这些变量的值始终保存在内存中。
==================================================================================
特性4:
作用域(private)
def _private_1(name): return 'Hello, %s' % name def _private_2(name): return 'Hi, %s' % name def greeting(name): if len(name) > 3: return _private_1(name) else: return _private_2(name)
greeting()
函数,而把内部逻辑用private函数隐藏起来了,这样,调用greeting()
函数不用关心内部的private函数细节。
优点:外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public。
==================================================================================
特性5:
动态语言(区别于Java的静态语言)
class Student(object): def __init__(self, name): self.name = name s = Student('Bob') s.score = 90
优点:定义了一个类属性后,这个属性虽然归类所有,但类的所有实例都可以访问到。
==================================================================================
特性6:
多继承
class Dog(Mammal, Runnable): pass