1.函数声明
注意:在同一个作用域,可以重新声明同名函数,后定义的函数声明会覆盖先定义的函数声明。
def 函数名(值形参名, 默认值形参名 = 默认值, *元组形参名, **字典形参名):
#函数体
2.lambda函数表达式
lambda 值形参名, 默认值形参名 = 默认值, *元组形参名, **字典形参名 : 表达式
3.函数作用域
3.1全局函数
名称 | 修饰符 |
全局函数 | —————— |
3.2成员方法
注意:Python 语言不支持类访问器属性和静态访问器属性。
名称 | 修饰符 |
类方法 | @classmethod 、cls |
静态方法 | @staticmethod |
实例访问器属性(getter) | @property |
实例访问器属性(setter) | @实例方法名.setter |
实例方法 | self |
构造函数 | self |
3.3局部函数
名称 | 修饰符 |
局部函数 | —————— |
4.函数名
函数名是第一次跟函数定义绑定的函数名或变量。
4.1函数声明的函数名
def f():
pass
print(f.__name__) # 'f'
函数声明是 function
类的实例,函数名就是存储这个实例的变量,因此在赋值后可以通过重新赋值更改其值。
def f():
return 1
print(f()) # 1
f = 2
print(f()) # 报错
print(f) # 2
4.2lambda函数表达式的函数名
lambda
函数表达式的函数名始终为 <lambda>
,变量名 f
仅是引用。
f = lambda : print(1)
print(f.__name__) # <lambda>
f() # 1
5.函数引用表达式
函数名
6.函数定义作为值
6.1作为值赋给变量
def sum(num1, num2):
return num1 + num2
print(sum(10, 10)) # 20
another_sum = sum
print(another_sum(10, 10)) # 20
6.2作为函数的实参(回调函数)或返回值
接受一个回调函数作为实参 或 返回值为函数定义,只要满足其一,函数 callSomeFunction
和 函数 returnSomeFunction
则称为高阶函数(Higher Order Function)。
作为实参的函数定义 add
则称为回调函数(Callback Function)。
作为返回值的函数定义 add2
不一定是回调函数,具体取决于函数定义 add2
是否作为实参。
#作为实参(回调函数)
def call_some_function(some_function, some_argument):
return some_function(some_argument)
def add(num):
return num + 10
print(call_some_function(add, 10)) # 20
#作为返回值
def return_some_function():
def some_function(num):
return num + 10
return some_function
add2 = return_some_function()
print(add2(10)) # 20
7.形参分类
注意:在函数体调用元组形参时,元组形参名的前面无 *
。
注意:在函数体调用字典形参时,字典形参名的前面无 **
。
名称 | 修饰符 |
值形参 | —————— |
默认值形参 | —————— |
元组形参 | * |
字典形参 | ** |
8.传递实参
实参的类型无需与默认值形参的类型兼容。
实参的个数可以小于、等于、大于形参的个数,甚至可以没有实参。
实参的传递不仅支持按位置从左往右依次传递方式,还支持按关键字传递方式。
9.函数调用表达式
#无实参
函数名()
#有实参
函数名(实参)
#按关键字传递方式
函数名(形参名 = 实参值)
10.函数返回值
参见 return
语句。
11.函数签名
Python 语言的函数签名由 修饰符、返回值的类型、函数名、形参类型、形参个数 组成。
12.函数重载(Overload)
在同一个作用域,可以重新声明同名函数,后定义的函数声明会覆盖先定义的函数声明。
因此,Python 语言不支持函数重载(Overload)。
13.函数递归(Recursion)
一个函数定义的函数体内有此函数的函数调用,此时便形成了函数递归(Recursion)。
def tri_recursion(k):
if(k > 0):
result = k + tri_recursion(k - 1)
print(result)
else:
result = 0
return result
print("Recursion Example Results:")
tri_recursion(6)
#输出
Recursion Example Results:
1
3
6
10
15
21
原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/python/pythonlang/35543.html