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)

image.png

如果函数内部局部变量和全局变量同名,那么在函数内部,局部变量会覆盖全局变量

对于嵌套函数,内部函数可以访问外部函数定义的变量,但无法直接修改,修改的话需要加上nonlocal关键字

def outer():
    x = "local"
    def inner():
        nonlocal x # nonlocal关键字表示这里的x就是外部函数outer定义的变量x
        x = 'nonlocal'
        print("inner:", x)
    inner()
    print("outer:", x)
outer()

image.png

闭包

闭包与嵌套函数类似
闭包:返回一个函数
嵌套函数:返回具体的值
举个栗子:👇👇👇

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的立方

image.png
闭包的作用:简化程序复杂度
(先简单记录一下闭包,后面复盘)

posted @ 2023-02-20 22:13  莫伊101  阅读(56)  评论(0编辑  收藏  举报