python系列 - 自定义函数
函数基础
函数是为了实现某一段功能的代码段
def hhh_func(info):
print("get a info:{}'.format(info))
hhh_func('hello World')
def
:函数声明
hhh_func
:函数名称,括号内容为函数参数
print部分则是主体部分
🍄🍄🍄注意:
- python可以接受任何数据类型(整型、浮点、字符串等等),此即为多态,python不需要考虑输入的数据类型(方便是方便,但是在开头的时候需要加上数据的类型检查)
- python函数的另一特性:支持函数嵌套
- 可以保证内部函数的隐私,内部函数只能被外部函数所调用和访问,不会暴露在全局作用域
- 合理的使用嵌套函数,可以提高程序运行效率
函数变量作用域
局部变量:定义在函数内部,只在函数内部有效,一旦执行完毕,局部变量就会被回收
全局变量:定义在整个文件层次的,不能在函数内部随意改变全局变量的值
如果一定要在函数内部改变全局变量的值,必须加上gloabal
声明
MIN_VALUE = 1
MAX_VALUE = 10
def validation_check(value):
global MIN_VALUE
MIN_VALUE += 1
print(MIN_VALUE)
validation_check(5)
如果函数内部局部变量和全局变量同名,那么在函数内部,局部变量会覆盖全局变量
对于嵌套函数,内部函数可以访问外部函数定义的变量,但无法直接修改,修改的话需要加上nonlocal
关键字
def outer():
x = "local"
def inner():
nonlocal x # nonlocal关键字表示这里的x就是外部函数outer定义的变量x
x = 'nonlocal'
print("inner:", x)
inner()
print("outer:", x)
outer()
闭包
闭包与嵌套函数类似
闭包:返回一个函数
嵌套函数:返回具体的值
举个栗子:👇👇👇
def nth_power(exponent):
def exponent_of(base):
return base ** exponent
return exponent_of # 返回值是exponent_of函数
square = nth_power(2) # 计算一个数的平方
cube = nth_power(3) # 计算一个数的立方
print(square(2)) # 计算2的平方
print(cube(2)) # 计算2的立方
闭包的作用:简化程序复杂度
(先简单记录一下闭包,后面复盘)