函数
函数的特点
- 功能性:一个函数要有明确的功能
- 隐藏细节:调用者不需要关注函数的细节
- 函数的目的:减少重复代码
Python 中函数的定义
1 | def funcname(parameter_list): |
- 参数列表可有可无
- 函数内可以
return value
,如果没有 return,则默认返回 None - 函数必须先定义才能使用
- 函数名不能与 Python 内置的函数名重名,否则会覆盖内置函数
Python 中关于递归函数:
- Python 默认的递归次数是有限的
- 可以通过
sys.setrecursionlimit(10000)
方法来修改递归次数
关于 print 函数:
1 | a = b = c = 1 |
Python 中函数可以返回多个值
1 | def func(num): |
Python 中的序列解包和链式赋值
1 | a, b, c = 1, 2, 3 |
必须参数和关键字参数
- 必须参数:函数参数列表中定义的,必须传递的参数,如果不传则会编译错误
- 关键字参数:明确指定参数的值,可以无视参数的顺序
- 如果参数列表中既有必须参数,又有关键字参数,则关键字参数必须位于必须参数之后
1 | def add(num1, num2): |
默认参数
- 默认参数必须位于参数列表的最后
- 默认参数既可以使用关键字参数,也可以使用必须参数,也可以不传
1 | def add(num1, num2, num3=3, num4=4): |
可变参数
- 可变参数,给参数名前加一个星号
*
- 传递参数是,可以传一个元组或列表,前面要加一个星号
*
- 可变参数之后可以有关键字参数,但不能有必须参数,必须参数必须位于可变参数之前,默认参数也要使用关键字参数的形式进行调用
- 可以参数也可以什么都不传,相当于传一个空的元组
1 | def fun(*param): |
关键字可变参数
- 参数前加两个星号
**
- 传递参数时需要传一个字典或使用关键字参数进行调用
- 可以参数也可以什么都不传,相当于传一个空的字典
- 关键字可变参数必须位于参数列表的最后
1 | def fun(**param): |
变量的作用域
1 | c = 50 # 全局变量 |
global 关键字
1 | def fun(): |