黄朝忆的个人博客
登录|注册

5. 函数

创建 2026-10-17 02:091836 字6 浏览0 评论

 什么是?

    函数(function) 是组织好的、可重复使用的、用于执行特定任务的代码块。



分类

  • 内置函数:无需任何操作,直接就能使用
  • 模块提供的函数:需要导入指定模块后,才能使用
  • 自定义函数:程序员自己定义的函数(先定义后再使用)

    内置函数: https://docs.python.org/zh-cn/3.13/builtins/functions.html

    模块: https://docs.python.org/zh-cn/3.13/py-modindex.html



定义函数

def hello():
    ...
    函数体



函数调用

    函数名()



参数的使用

    传参当前不能多也不能少

def order(age, name):
   函数体
   
# 调用
order(25, '张三') # 位置参数
order(age=25, name='张三') # 也可以这么写、可以不按形参顺序来
order(25, name='张三') # 写法3:有名字的参数放在后面

image.png

image.png

可选参数必须放在后面



可变参数

    定义函数时,在形参名前加*,可以接收任务数量的位置参数,并打包成一个元组

def test(*args):
    print(args)

test(1, 2, 3, 4)


    定义函数时,在形参名前加**,可以接收任意数量的关键字参数,并打包成一个字典

def test(**keywords):
    # {'name': 'PyCharm', 'age': 18, 'height': 176}
    print(keywords)

test(name = 'PyCharm', age = 18, height = 176)


可变位置参数、可变关键字参数,可以同时使用,但必须先写可变位置参数

image.png



返回值

    函数执行完毕后,会把执行结果交给调用者,这个执行结果就是返回值

    通过return 关键字返回结果(return 会结束函数执行,并把return 后的值,作为函数的返回值)

    一般来说,一个函数没有return 的话,默认就是返回None的,此时说函数没有返回值也行,但准确的说:应该是返回了None(空值)


def test(n1, n2):
    return n1 + n2

res = test(1, 2)
# 3
print(res)



全局作用域 VS 局部作用域


什么是?

    变量能起作用的范围(变量在哪里能用,在哪里不能用)


全局作用域

    整个.py文件最外层的范围,就是全局作用域

    全局作用域和全局变量,会在程序开始时创建,在程序结束后销毁


局部作用域

    函数的内部范围,就是局部作用域

    局部作用域和局部变量,会在函数调用时创建,在函数执行结束后销毁


global在函数使用方式

    在函数内部声明 n 是全局变量,允许函数修改外面的 n

n = 100

def test ():
    # 声明n是全局的n
    global n
    n = 200
    print(n, '我是test函数的n')

test()
# 200
print (n)



嵌套函数

image.png



递归调用

    是指函数内部调用自己的一种操作


def print_callback(n):
    print(n)
    if (n - 1 > 0):
        print_callback(n - 1)

print_callback(5)
# 5 4 3 2 1


    在函数体内调用了自身后,如果后面还有代码,就会把待执行放进“收集器”中等待执行、是一个栈结构,采用先进后出的;

    这里准确的说:叫函数调用栈;每次递归调用,都会在调用栈里压入对应的信息,因此递归必须涉及到:多次压栈和出栈。

def print_callback(n):
    if (n - 1 > 0):
        print_callback(n - 1)
    print(n)


print_callback(5)
# 1 2 3 4 5



函数的文档说明

def print_callback(n):
    """
    递归例子
    :param n: 递归次数
    :return: int
    """
    if (n - 1 > 0):
        print_callback(n - 1)
    print(n)


print_callback(5)

鼠标放到调用函数上

image.png


评论(共 0 条)

编辑器加载中...