写点什么

Python 函数使用指南:定义、参数设置与变量作用域详解

  • 2024-12-29
    北京
  • 本文字数:2900 字

    阅读完需:约 10 分钟

Python 函数使用指南:定义、参数设置与变量作用域详解

本文详细介绍了 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
复制代码

四 源码地址

国内看 GiteeFunction 函数.py

国外看 GitHubFunction 函数.py

引用 莫烦 Python

发布于: 刚刚阅读数: 5
用户头像

敲代码不忘补水 2018-04-26 加入

曾在互联网、金融、电商等多个领域工作,对各行的技术需求了如指掌。对新技术充满好奇,喜欢尝试新鲜事物,保持对生活的热情。

评论

发布
暂无评论
Python 函数使用指南:定义、参数设置与变量作用域详解_Python_敲代码不忘补水_InfoQ写作社区