1.调用函数时,函数名其实就是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”
>>> a = abs # 变量a指向abs函数 >>> a(-1) # 所以也可以通过a调用abs函数 12.定义函数:使用 def 语句,依次写出函数名、括号、括号中的参数和冒号: ,然后,在缩进块中编写函数体,函数的返回值用return 语句返回。
求绝对值的例子:
def my_abs(x): if x >= 0: return x else: return -x 3. 空函数如果想定义一个什么事也不做的空函数,可以用pass 语句:
def nop(): passpass 语句什么都不做,那有什么用?实际上pass 可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass ,让代码能运行起来。
pass 还可以用在其他语句里,比如:
if age >= 18: pass缺少了pass ,代码运行就会有语法错误。
4.定义函数时参数检查
数据类型检查可以用内置函数isinstance() 实现.
def my_abs(x): if not isinstance(x, (int, float)): raise TypeError('bad operand type') if x >= 0: return x else: return -x5.在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,python的函数返回多值其实就是返回一个tuple,但写起来更方便。
例子:
import math def move(x, y, step, angle=0): nx = x + step * math.cos(angle) ny = y - step * math.sin(angle) return nx, ny >>> x, y = move(100, 100, 60, math.pi / 6) >>> print(x, y) 151.96152422706632 70.0 >>> r = move(100, 100, 60, math.pi / 6) >>> print(r) (151.96152422706632, 70.0)6.函数执行完毕也没有return 语句时,自动return None 。
7.定义默认参数要牢记一点:默认参数必须指向不变对象!在编写程序时,如果可以设计一个不变对象,那就尽量设计成不变对象。
参考学习: 廖雪峰的官方网站