函数名其实是指向一个函数对象的引用,完全可以把函数名赋给一个变量,相当于给这个函数起了一个“别名”:
>>> a = abs # 变量a指向abs函数
>>> a(-1) # 所以也可以通过a调用abs函数
1
类似于C语言中的函数指针
def my_abs(arguments):
如果没有return
语句,函数执行完毕后也会返回结果,只是结果为None
如果你已经把my_abs()
的函数定义保存为abstest.py
文件了,那么,可以在该文件的当前目录下启动Python解释器,用from abstest import my_abs
来导入my_abs()
函数
如果想定义一个什么事也不做的空函数,可以用pass
语句
数据类型检查可以用内置函数isinstance()
实现:
if not isinstance(x, (int, float)):
raise TypeError('bad operand type')
Python的函数返回多值其实是返回一个tuple,但返回语法上可以省略括号
默认参数
def power(x, n=2):
当不按顺序提供部分默认参数时,需要把参数名写上。比如调用
enroll('Adam', 'M', city='Tianjin')
==默认参数必须指向不变对象!== 否则这个默认参数可能会发生变化 (毕竟一切对象皆指针)
def calc(*numbers):
sum = 0
for n in numbers:
sum = sum + n * n
return sum
在函数内部,参数numbers
接收到的是一个tuple