博客
关于我
Python函数之返回值、作用域和局部变量
阅读量:797 次
发布时间:2023-03-08

本文共 2491 字,大约阅读时间需要 8 分钟。

函数返回值

函数返回值是一个程序设计中的重要概念,简单来说,就是函数执行后想要传递给外部的结果。要实现这一点,程序员会使用 return 语句。

return 的作用

return 语句的作用是告诉程序在某个点停止执行,并将一个值传递给调用者。这个值可以是任意类型的数据,包括简单的数据类型(如整数、字符串)或复杂的数据结构(如列表、字典、元组等)。

return 的使用场景

假设你有一个函数 stu_info,它接收三个参数:姓名、年龄和课程。函数的目的是根据年龄判断是否符合某个条件,并返回一个布尔值。

def stu_info(name, age, course):
print(name, age, course)
if age > 18:
return True
else:
return False

当调用 stu_info('hope', 19, 'life') 时,函数会输出 hope 19 life,然后因为 age > 18 为 True,所以返回值是 True。

如果函数没有使用 return 语句,那么它默认返回 None。例如:

def stu_info(name, age, course):
print(name, age, course)
return 'good', 'work'

在上述代码中,函数会返回一个元组 ('good', 'work')。需要注意的是,一旦 return 语句被执行,后续代码不会执行。因此,如果在函数中多次使用 return,只有最后一个返回值才会被发送到调用者。

注意事项

  • 函数执行终止:一旦 return 语句被执行,函数会立即停止执行,并将结果返回给调用者。
  • 默认返回值:如果函数中没有使用 return 语句,或者没有主动返回任何值,函数会默认返回 None。

  • 作用域

    作用域(scope)是程序设计中的一个核心概念,它决定了变量、函数和其他程序元素在代码中可以被访问和使用的范围。

    作用域的定义

    在程序中,变量和函数的名字并不总是有效可用的。作用域是限定这些名字可用范围的区域。比如,在函数内部定义的变量,其作用域仅限于该函数;而在程序顶层定义的变量,其作用域则覆盖整个程序。

    作用域与函数的关系

    在 Python 中,函数可以看作是一个独立的作用域。函数内部的变量和函数在其自身的作用域中定义,而外部的变量和函数则在全局作用域中定义。函数通过作用域链来查找变量和函数。

    代码示例

    age = 21  # 全局变量
    def func1():
    age = 19 # 局部变量
    print('func1输出:', age) # 输出:19
    def func2():
    print('func2输出:', age) # 输出:19
    return func2
    return func2
    val = func1() # 调用 func1 并将返回值赋给 val
    val() # 等价于调用 func2,并输出全局变量 age
    print('全局输出:', age) # 输出:21

    在上述代码中:

    • func1 定义了一个局部变量 age,其值为 19。
    • func2 也是一个局部函数,它使用 func1 中的 age 变量。
    • func1 返回 func2 函数名。
    • 调用 func1 会返回 func2,然后调用 val 会调用 func2,输出全局变量 age。

    函数局部变量和全局变量

    定义

    • 局部变量:在函数内部定义的变量。
    • 全局变量:在程序顶层定义的变量。

    区别

  • 作用域:全局变量的作用域是整个程序,而局部变量的作用域仅限于函数内部。
  • 查找规则:在函数内部,如果变量名既存在局部变量中,又存在全局变量中,则优先使用局部变量。
  • 全局变量的修改

    在函数内部,不能直接修改全局变量,除非使用 global 关键字。例如:

    name = 'life'  # 全局变量
    def change_name():
    global name
    name = 'poem' # 修改全局变量
    print('函数里面-》', name) # 输出:poem
    change_name()
    print('函数外面-》', name) # 输出:poem

    注意事项

    • 如果函数内部多次修改全局变量,可能会导致意外结果。
    • 不建议在函数内部频繁修改全局变量,除非有特殊需求。

    函数内部修改列表

    有时候,我们需要在函数内部修改列表中的元素。例如:

    names = ['dream', 'hope', 'life']
    def change_name():
    names[-1] = 'poem'
    print(names) # 输出:['dream', 'hope', 'poem']

    在上述代码中,names 是全局变量。函数 change_name 修改了 names 的最后一个元素,成功完成了修改。

    如果尝试在函数内部删除列表元素,可能会出现错误:

    names = ['dream', 'hope', 'life']
    def change_name():
    del names[1] # 这里会报错,因为 `names` 是全局变量,不能在函数内部删除
    names = ['Dream', 'Poem'] # 只能赋值全局变量,无法修改

    因此,在函数内部修改列表元素时,应当谨慎操作,确保不会破坏全局变量或其他相关逻辑。


    总结

    函数返回值、作用域、局部变量和全局变量是编程中的核心概念。理解这些概念有助于更好地设计和优化代码。

    • return 语句用于将函数的执行结果返回给调用者。
    • 作用域 决定了变量和函数的可用范围。
    • 局部变量 只在函数内部生效,而全局变量则在程序顶层生效。
    • 在函数内部修改全局变量时,应当谨慎操作,避免潜在问题。

    转载地址:http://ywlfk.baihongyu.com/

    你可能感兴趣的文章
    Python基础语法教程,零基础入门到精通,看完这一篇就够了
    查看>>
    Python基础语法与执行脚本的3种方式
    查看>>
    python基础语法
    查看>>
    python基础语法
    查看>>
    python系列【仅供参考】:python测试开发基础---multiprocessing.Pool
    查看>>
    Python基础综合练习
    查看>>
    Python基础练习之一输出10000以内的阿姆斯特朗数
    查看>>
    Python基础系列讲解—动态类型语言的特点
    查看>>
    python基础系列四:字符串,列表,字典,元组之间的转换
    查看>>
    python基础篇(9):模块
    查看>>
    python基础篇(8):异常处理
    查看>>
    python基础篇(8):字符串常用处理汇总
    查看>>
    python基础篇(7):函数进阶知识点
    查看>>
    python基础篇(6):global关键字
    查看>>
    python基础篇(5):None类型
    查看>>
    python基础篇(4):range语句
    查看>>
    python基础篇(3):print()补偿知识点
    查看>>
    python基础篇(2):字符串扩展知识点
    查看>>
    python基础篇(1):type()
    查看>>
    python基础篇(15):闭包
    查看>>