函数
函数的定义
函数以def
关键词开头,后接函数名和圆括号()。函数执行的代码以冒号起始,并且缩进。return
[表达式] 结束函数,选择性地返回一个值给调用方。
函数的调用
def printme(str):
print(str)
printme("我要调用用户自定义函数!")
函数文档
def MyFirstFunction(name):
"函数定义过程中name是形参"
print('传递进来的{0}叫做实参,因为Ta是具体的参数值!'.format(name))
MyFirstFunction('老马的程序人生')
print(MyFirstFunction.__doc__)
函数参数
- 位置参数 (positional argument)
- 默认参数 (default argument)
- 可变参数 (variable argument)
- 关键字参数 (keyword argument)
- 命名关键字参数 (name keyword argument)
- 参数组合
函数的返回值
def add(a, b):
return a + b
print(add(1, 2))
变量作用域
局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
Lambda 表达式
匿名函数的定义
Python 使用 lambda
关键词来创建匿名函数。
lambda argument_list: expression
匿名函数的应用
匿名函数常常应用于函数式编程的高阶函数中。
类与对象
对象 = 属性 + 方法
对象是类的实例。类主要定义对象的结构。
self 是什么?
Python 的 self
相当于 C++ 的 this
指针。
Python 的魔法方法
类有一个名为__init__(self[, param1, param2...])
的魔法方法,该方法在类实例化时会自动调用。
公有和私有
在 Python 中定义私有变量只需要在变量名或函数名前加上“__”两个下划线。
继承
Python 同样支持类的继承。
组合
可以使用关键字 class
定义 Python 类。
类、类对象和实例对象
类对象:创建一个类,其实也是一个对象也在内存开辟了一块空间,称为类对象。
实例对象:就是通过实例化类创建的对象,称为实例对象。
什么是绑定?
Python 严格要求方法需要有实例才能被调用,这种限制其实就是 Python 所谓的绑定概念。
一些相关的内置函数(BIF)
issubclass(class, classinfo)
isinstance(object, classinfo)
hasattr(object, name)
getattr(object, name[, default])
setattr(object, name, value)
delattr(object, name)
property([fget[, fset[, fdel[, doc]]]])
魔法方法
魔法方法总是被双下划线包围,例如__init__
。
基本的魔法方法
__init__(self[, ...])
构造器__new__(cls[, ...])
在一个对象实例化的时候所调用的第一个方法__del__(self)
析构器
算术运算符
__add__(self, other)
定义加法的行为:+
__sub__(self, other)
定义减法的行为:-
__mul__(self, other)
定义乘法的行为:*
反算术运算符
反运算魔方方法,与算术运算符保持一一对应,不同之处就是反运算的魔法方法多了一个“r”。
增量赋值运算符
__iadd__(self, other)
定义赋值加法的行为:+=
__isub__(self, other)
定义赋值减法的行为:-=
一元运算符
__neg__(self)
定义正号的行为:+x
__pos__(self)
定义负号的行为:-x
属性访问
__getattr__(self, name)
定义当用户试图获取一个不存在的属性时的行为。__setattr__(self, name, value)
定义当一个属性被设置时的行为。
描述符
描述符就是将某种特殊类型的类的实例指派给另一个类的属性。
定制序列
协议(Protocols)与其它编程语言中的接口很相似,它规定你哪些方法必须要定义。
迭代器
迭代器是一个可以记住遍历的位置的对象。
生成器
使用了 yield
的函数被称为生成器。调用一个生成器函数,返回的是一个迭代器对象。