当前位置: 首页 > article >正文

Python中的函数(下)

函数返回值

返回单个值

函数可以通过 return 语句返回一个值。一旦执行到 return 语句,函数就会停止执行,并将指定的值返回给调用者。例如:

返回多个值

 
实际上,Python函数只能返回一个值,但可以通过返回一个元组来模拟返回多个值。例如:
def divide(a, b):
    quotient = a // b
    remainder = a % b
    return quotient, remainder
result = divide(7, 3)
print(result)
# 解包返回的元组
quotient, remainder = divide(7, 3)
print(f"Quotient: {quotient}, Remainder: {remainder}")
在  divide  函数中,返回了商和余数组成的元组。可以直接打印这个元组,也可以通过解包将元组的元素分别赋给不同的变量。

无返回值(返回None)


如果函数没有  return  语句,或者  return  语句后面没有值,函数将返回  None 。例如:
 def print_message(message):
    print(message)

result = print_message("Hello, world!")
print(result)
在这个例子中, print_message  函数只是打印一条消息,没有明确的返回值,所以  result  的值为  None 。


函数作用域


局部作用域
 

在函数内部定义的变量具有局部作用域只能在函数内部访问。例如:
def local_scope_example( ):
    local_variable = 10
    print(f"Inside function: {local_variable}")
local_scope_example()
# 下面这行代码会报错,因为 local_variable 超出了作用域
# print(local_variable)

在  local_scope_example  函数中定义的  local_variable  只能在函数内部使用,函数外部无法访问。

全局作用域


在函数外部定义的变量具有全局作用域,可以在整个模块中访问。例如:  
global_variable = 20
def global_scope_example( ):
    print(f"Inside function: {global_variable}")
global_scope_example( )
print(f"Outside function: {global_variable}")
 
 
在这个例子中, global_variable  在函数外部定义,具有全局作用域,函数内部和外部都可以访问它。

修改全局变量


如果要在函数内部修改全局变量,需要使用  global  关键字声明。例如:
count = 0

def increment_count():
    global count
    count += 1
    return count

new_count = increment_count()
print(new_count)
 
 
 increment_count  函数中,使用  global  关键字声明  count  是全局变量,这样就可以在函数内部修改它的值。
 

递归函数
 

递归函数是指在函数内部调用自身的函数。递归通常用于解决可以分解为相同问题的子问题的情况。例如,计算阶乘可以使用递归实现:
def factorial(n):
    if n == 0 or n == 1:
        return 1
    else:
        return n * factorial(n - 1)


result = factorial(5)
print(result)
 
 
在  factorial  函数中,当  n  为 0 或 1 时,函数返回 1,这是递归的终止条件。否则,函数返回  n  乘以  factorial(n - 1) ,即不断调用自身来计算阶乘。

 


http://www.kler.cn/a/525959.html

相关文章:

  • 基于阿里云百炼大模型Sensevoice-1的语音识别与文本保存工具开发
  • 你好!这是我自己的CSDN博客!
  • GSI快速收录服务:让你的网站内容“上架”谷歌
  • 剑指 Offer II 007. 数组中和为 0 的三个数
  • Unity 粒子特效在UI中使用裁剪效果
  • 128周二复盘(164)学习任天堂
  • Node.js 的底层原理
  • 【Node.js】Koa2 整合接口文档
  • 付费进群阿泽魔改源码 跳转不卡顿
  • 剑指 Offer II 009. 乘积小于 K 的子数组
  • HarmonyOS应用开发快速入门
  • 一种用于低成本水质监测的软传感器开源方法:以硝酸盐(NO3⁻)浓度为例
  • 知识管理系统塑造企业文化与学习型组织的变革之路
  • 再写最长上升子序列(简单dp)
  • Python 列表(组织列表)
  • linux——进程树的概念和示例
  • 力扣-数组-59 螺旋矩阵Ⅱ
  • 数据结构 队列
  • 深度大数据:从数据洪流到智能决策的革命性跨越
  • php接口连接数据库
  • 【狂热算法篇】探秘图论之Dijkstra 算法:穿越图的迷宫的最短路径力量(通俗易懂版)
  • Vue3的el-table-column增加跳转其他页面
  • 模型I/O功能之模型包装器
  • LeetCode题练习与总结:最长和谐子序列--594
  • 反向代理模块b
  • CF 764B.Timofey and cubes(Java实现)