研1转码自学黑马程序员Python第7天 | Python函数知识 - 指南
⭐持续记录,保持初心,python的学习笔记将会在这里持续更新,新手小白跟着黑马程序员up主上路,欢迎各位佬批评指正。大家一起进步!创作不易,您的点赞是我最大的动力!
目录
一、Python函数的基本概念
二、Python函数的语法
(一)函数的定义语法
(二)函数调用
(三)函数的参数类型
形参和实参
(四)函数的返回值
(五)函数说明文档
(六)函数嵌套调用
函数嵌套调用的概念
基本语法
嵌套调用的执行流程
实际应用示例
(七)变量在参数中的作用域
变量作用域的基本概念
全局作用域
局部作用域
参数的作用域
修改全局变量的方法
不使用 global 的情况
修改可变对象
注意事项
嵌套函数的作用域
作用域优先级规则
一、Python函数的基本概念
Python函数是一段已组织好、有特定功能,可重复调用的代码块,用于执行特定任务。通过定义函数,可以将复杂逻辑封装起来,提高代码的可读性和复用性,提升开发效率。
二、Python函数的语法
(一)函数的定义语法
def 函数名(传入参数):
函数体
return 返回值
def function_name(parameters):"""函数文档字符串"""# 函数体return value
(二)函数调用
函数名(参数),先执行函数调用,再回到定义。
注意事项:
- 参数如不需要,可以省略
- 返回值如不需要,可以省略
- 函数必须先定义后使用
(三)函数的参数类型
形参和实参
传入参数不限量,形参和实参一一对应:
(四)函数的返回值
- 函数可以通过return语句返回一个或多个值。
- 不写return语句时,函数默认返回None字面量。
- return后边的代码不执行。
(五)函数说明文档
函数说明文档是代码可读性和可维护性的关键部分,注释,中间回车,可以得到需要填补的说明文档,鼠标悬停可以查看实参的说明。
(六)函数嵌套调用
函数嵌套调用的概念
函数嵌套调用指的是在一个函数内部调用另一个函数。这种调用方式可以将复杂的问题分解为多个小问题,通过调用不同的函数逐步解决。嵌套调用有助于提高代码的可读性和模块化程度。
基本语法
在大多数编程语言中,函数嵌套调用的语法类似。以下是一个伪代码示例:
def outer_function():# 执行一些操作inner_function() # 嵌套调用# 执行其他操作
def inner_function():# 执行内部函数的操作
outer_function() # 调用外层函数
以下是一个嵌套语句的基本形式:
嵌套调用的执行流程
- 当外层函数(如
outer_function
)被调用时,程序会进入该函数的代码块。 - 在执行过程中遇到内层函数(如
inner_function
)时,程序会暂停外层函数的执行,转而执行内层函数。 - 内层函数执行完毕后,程序会回到外层函数继续执行剩余代码。
实际应用示例
以下是一个计算阶乘的嵌套调用示例:
def factorial(n):if n == 0:return 1else:return n * factorial(n - 1) # 递归嵌套调用
result = factorial(5) # 计算5的阶乘
print(result) # 输出120
(七)变量在参数中的作用域
变量作用域的基本概念
变量的作用域指变量在程序中可被访问的范围。根据声明位置不同,变量的作用域分为全局作用域和局部作用域。全局变量在函数外部声明,整个程序均可访问;局部变量在函数内部声明,仅限该函数内部使用。
全局作用域
全局变量在函数外部定义,生命周期从程序开始到结束。所有函数均可读取或修改全局变量,但过度使用可能导致代码难以维护。
global_var = 10 # 全局变量
def func():print(global_var) # 可访问
func()
局部作用域
局部变量在函数内部定义,仅在该函数内有效。函数执行结束后,局部变量会被销毁。不同函数的局部变量互不影响。
def func():local_var = 20 # 局部变量print(local_var)
func()
# print(local_var) # 报错:未定义
参数的作用域
函数参数属于局部变量,仅在函数内部有效。参数的作用域与局部变量相同,但初始值由调用时传入。
def add(a, b): # a和b为局部参数return a + b
result = add(3, 5)
# print(a) # 报错:a未定义
修改全局变量的方法
在函数内部修改全局变量需要使用global
关键字显式声明。否则,函数内部对变量的修改会被视为局部变量,而不会影响全局作用域中的同名变量。
x = 10 # 全局变量
def modify_global():global x # 声明使用全局变量xx = 20 # 修改全局变量
modify_global()
print(x) # 输出 20
不使用 global 的情况
如果未使用 global
关键字,函数内部对变量的赋值会创建一个新的局部变量,而不会修改全局变量。
x = 10 # 全局变量
def no_global():x = 30 # 创建局部变量x,不影响全局变量
no_global()
print(x) # 输出 10(全局变量未改变)
例如:
运行结果:
修改可变对象
对于可变对象(如列表、字典),即使不使用 global
关键字,也可以通过方法(如 append
、update
)直接修改全局变量。
my_list = [1, 2, 3] # 全局列表
def modify_list():my_list.append(4) # 直接修改全局列表
modify_list()
print(my_list) # 输出 [1, 2, 3, 4]
注意事项
- 过度使用全局变量可能导致代码难以维护和调试。
- 在大型项目中,建议通过函数参数传递数据,而非依赖全局变量。
- 如果必须使用全局变量,确保其命名清晰且仅在必要时修改。
嵌套函数的作用域
嵌套函数中,内部函数可访问外部函数的变量(非全局)。这种变量称为闭包变量,作用域介于全局和局部之间。
def outer():outer_var = 30 # 闭包变量def inner():print(outer_var) # 可访问inner()
outer()
作用域优先级规则
当变量名冲突时,访问优先级为:局部作用域 > 闭包作用域 > 全局作用域。使用global
或nonlocal
可显式指定作用域。
x = 100 # 全局变量
def test():x = 200 # 局部变量print(x) # 输出200
test()
print(x) # 输出100
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/941624.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!