Python 函数使用指南:定义、参数设置与变量作用域详解
作者:敲代码不忘补水
- 2024-12-29 北京
本文字数:2900 字
阅读完需:约 10 分钟

本文详细介绍了 Python 中函数的定义与使用,包括如何通过定义函数减少重复操作、处理输入参数、设置默认值及返回结果。同时,还介绍了全局变量与局部变量的区别,展示了如何通过 global 关键字在函数内部修改全局变量。此外,文章还讨论了函数参数的传递方式,如按顺序传参和按名称传参。通过完整的代码示例,读者可以深入理解函数在 Python 编程中的重要作用,并灵活运用这些技术编写高效的代码。文章最后附有运行结果与 GitHub 源码地址,便于实践学习。
一 函数
1 未定义函数的常规操作
# 未定义多个文件名进行一种规则性修改f1 = "f1"f2 = "f2"
f1 += ".txt"f1 = "my_" + f1f2 += ".txt"f2 = "my_" + f2print(f1, f2)print()
复制代码
2 定义函数
定义函数将重复的工作逻辑集合起来,含输入参数
# 定义函数将重复的工作逻辑集合起来,含输入参数def modify_name(filename): filename += ".txt" filename = "my_" + filename print(filename)
复制代码
3 不含输入参数的函数
# 不含输入参数def my_func(): filename = "不含输入参数f1" ext = ".txt" total_name = filename + ext print(total_name)
复制代码
4 拿出函数处理的结果(有返回参数)
# 拿出函数处理的结果(有返回参数)def modify_name(filename): filename += ".txt" filename = "my_" + filename return filename
复制代码
5 参数设置
# 参数设置def f(x, a, b, c): return a * x ** 2 + b * x + c * 1
# 参数设置默认值, 调用函数的时候就不一定要给这个参数赋值,不赋值去默认值def f(x, a=1, b=1, c=0): return a * x ** 2 + b * x + c * 1
复制代码
二 全局和局部变量
1 私有变量
def modify_name01(): filename = "f1.txt" print("local filename:", filename)
复制代码
2 公有变量
filename01 = "f1.txt"def modify_name02(): print("在函数里调用全局变量 local filename:", filename01)
复制代码
3 变量值修改
filename03 = "f1.txt"def modify_name03(): # 在函数里修改全局变量 filename03 = "f2.txt" # 在本函数生效 print("函数里面 local filename:", filename03)
filename04 = "filename1.txt"def modify_name04(): # 必须要修改全局变量 则在变量前加 global 关键字 global filename04 # 提出申请 filename04 = "filename2.txt" print("修改全局变量 里面 local filename:", filename04)
复制代码
在函数里修改全局变量,其作用范围在当前函数生效。如果必须要修改全局变量,则在变量前加 global 关键字,
三 完整代码示例
# This is a sample Python script.
# Press ⌃R to execute it or replace it with your code.# Press Double ⇧ to search everywhere for classes, files, tool windows, actions, and settings.
def print_hi(name): # Use a breakpoint in the code line below to debug your script. print(f'Hi, {name}') # Press ⌘F8 to toggle the breakpoint. # 定义函数 # 未定义多个文件名进行一种规则性修改 f1 = "f1" f2 = "f2"
f1 += ".txt" f1 = "my_" + f1 f2 += ".txt" f2 = "my_" + f2 print(f1, f2) print()
# 定义函数将重复的工作逻辑集合起来,含输入参数def modify_name(filename): filename += ".txt" filename = "my_" + filename print(filename)
# 不含输入参数def my_func(): filename = "不含输入参数f1" ext = ".txt" total_name = filename + ext print(total_name)
# 拿出函数处理的结果(有返回参数)def modify_name(filename): filename += ".txt" filename = "my_" + filename return filename
# 参数设置def f(x, a, b, c): return a * x ** 2 + b * x + c * 1
# 参数设置默认值, 调用函数的时候就不一定要给这个参数赋值,不赋值去默认值def f(x, a=1, b=1, c=0): return a * x ** 2 + b * x + c * 1
# 全局和局部变量# 变量 特点# 全局 global 函数里外都能用 (公用)# 局部 local 仅在函数内有用 (私有)def modify_name01(): filename = "f1.txt" print("local filename:", filename)
filename01 = "f1.txt"
def modify_name02(): print("在函数里调用全局变量 local filename:", filename01)
filename03 = "f1.txt"
def modify_name03(): # 在函数里修改全局变量 filename03 = "f2.txt" # 在本函数生效 print("函数里面 local filename:", filename03)
filename04 = "filename1.txt"
def modify_name04(): # 必须要修改全局变量 则在变量前加 global 关键字 global filename04 # 提出申请 filename04 = "filename2GLO.txt" print("修改全局变量 里面 local filename:", filename04)
# Press the green button in the gutter to run the script.if __name__ == '__main__': print_hi('Function 函数') # See PyCharm help at https://www.jetbrains.com/help/pycharm/ # 调用函数 modify_name("F1") modify_name("F2") # 不含输入参数 my_func() print() new_filename = modify_name("有返回结果f1") print(new_filename) print() # 忽略参数名,按顺序传参 print("忽略参数名,按顺序传参 = ", f(2, 1, 1, 0)) # 写上参数名,按名字传参 print("写上参数名,按名字传参 = ", f(x=2, a=1, b=1, c=0)) # 若用参数名,可以打乱顺序传参 print("若用参数名,可以打乱顺序传参 = ", f(a=1, c=0, x=2, b=1)) print() print("有默认值的调用 a = ", f(2, a=2)) print("有默认值的调用 b = ", f(2))
modify_name01() # 这里会报错。这里不能调用 modify_name01 中的局部变量否则报错 # print("global filename:", filename)
modify_name02() # 调用共有变量 print("global filename:", filename01) print() modify_name03() # 函数外面的全局变量值未改变 print("函数外面 global filename:", filename03) print() # 修改全局变量 modify_name04() # 增加 global 关键字后,从结果来看修改成功了 print("修改全局变量 外面 global filename:", filename04)
复制代码
复制粘贴并覆盖到你的 main.py 中运行,运行结果如下。
Hi, Function 函数my_f1.txt my_f2.txt
不含输入参数f1.txt
my_有返回结果f1.txt
忽略参数名,按顺序传参 = 6写上参数名,按名字传参 = 6若用参数名,可以打乱顺序传参 = 6
有默认值的调用 a = 10有默认值的调用 b = 6local filename: f1.txt在函数里调用全局变量 local filename: f1.txtglobal filename: f1.txt
函数里面 local filename: f2.txt函数外面 global filename: f1.txt
修改全局变量 里面 local filename: filename2GLO.txt修改全局变量 外面 global filename: filename2GLO.txt
复制代码
四 源码地址
国内看 Gitee 之 Function 函数.py
国外看 GitHub 之 Function 函数.py
引用 莫烦 Python
划线
评论
复制
发布于: 刚刚阅读数: 5
版权声明: 本文为 InfoQ 作者【敲代码不忘补水】的原创文章。
原文链接:【http://xie.infoq.cn/article/469dcbf6b7613547308e91b56】。文章转载请联系作者。
敲代码不忘补水
关注
敲代码不忘补水 2018-04-26 加入
曾在互联网、金融、电商等多个领域工作,对各行的技术需求了如指掌。对新技术充满好奇,喜欢尝试新鲜事物,保持对生活的热情。









评论