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

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

文章目录

  • Python 函数使用指南:定义、参数设置与变量作用域详解
      • 一 函数
        • 1 未定义函数的常规操作
        • 2 定义函数
        • 3 不含输入参数的函数
        • 4 拿出函数处理的结果(有返回参数)
        • 5 参数设置
      • 二 全局和局部变量
        • 1 私有变量
        • 2 公有变量
        • 3 变量值修改
      • 三 完整文件示例
      • 四 源码地址

本文详细介绍了 Python 中函数的定义与使用,包括如何通过定义函数减少重复操作、处理输入参数、设置默认值及返回结果。同时,还介绍了全局变量与局部变量的区别,展示了如何通过 global 关键字在函数内部修改全局变量。此外,文章还讨论了函数参数的传递方式,如按顺序传参和按名称传参。通过完整的代码示例,读者可以深入理解函数在 Python 编程中的重要作用,并灵活运用这些技术编写高效的代码。文章最后附有运行结果与 GitHub 源码地址,便于实践学习。

一 函数

1 未定义函数的常规操作
# 未定义多个文件名进行一种规则性修改
f1 = "f1"
f2 = "f2"

f1 += ".txt"
f1 = "my_" + f1
f2 += ".txt"
f2 = "my_" + f2
print(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

二 全局和局部变量

变量 特点
全局 global 函数里外都能用 (公有)
局部 local 仅在函数内有用 (私有)
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 =  6
local filename: f1.txt
在函数里调用全局变量 local filename: f1.txt
global filename: f1.txt

函数里面 local filename: f2.txt
函数外面 global filename: f1.txt

修改全局变量 里面 local filename: filename2GLO.txt
修改全局变量 外面 global filename: filename2GLO.txt

四 源码地址

代码地址:GitHub 之 Function 函数.py

详情见:莫烦 Python

你可能感兴趣的:(Python,编码,python,开发语言)