作用域:作用域(Scope)是指在程序中,变量、函数和对象的可访问范围。一个程序的所有的变量并不是在哪个位置都可以访问的。访问权限决定于这个变量是在哪里赋值的。变量的作用域决定了在哪一部分程序你可以访问哪个特定的变量名称。

  1. 全局变量:
    a = 10
    # 定义全局变量
    def func():
        print(a)
    func()
    # 函数的内部和外部都是可以获取到全局变量的
  2. 修改全局变量:全局变量不能直接在函数内部修改。
    # a = 10
    # # 定义全局变量
    # def func():
    #     a += 10
    #     # 当我们要修改全局变量时,这样修改会报错
    #     print(a)
    # func()
    # 想要在函数内部修改全局变量,需要借助关键字:global
    a = 10
    # 定义全局变量
    def func():
        global a
        a += 10
        # 修改全局变量,现在就可以正常打印了
        print(a)
    func()
    print(a)
    # 这里不论是函数内部打印的a。还是函数外部打印的a,结果都是20,
    # 因为全局变量a已经在函数内部进行了修改。
  3. 函数嵌套:函数嵌套就是一个函数里面嵌套另一个函数,跟if嵌套,for循环嵌套是一样的原理。函数嵌套就是将代码模块化,使得代码更易读、易维护,同时提供了一些隐私和复用的好处,就像是搭积木一样,一块一块地建立起你的程序。
    def outer(a):
        a += 1
        # 外部函数的a变为4(初始传入3)
        def inner(a):
            b = a + 1
            # 内部函数的a接收外部传递的值,计算后b = 5
            return b
            # 让inner返回计算结果b
        return inner(a)
        # 调用inner时传入外部函数的a=4
    res = outer(3)
    # 调用函数outer(),并传了一个参数3
    print(res)
    # 输出:5
  4. 局部变量:所谓局部变量,可以理解成是定义在函数内部的变量。只有在函数内部才可以使用。
    a = 10
    # 定义全局变量a
    def func():
        a = 20
        # 定义局部变量a
        print(f"局部:{a}")
        # 打印局部变量a
    func()
    print(f"全局:{a}")
    # 打印全局变量a
    # 由于函数内部自己本身有局部变量a,那么就不会使用全局变量a了,
    # 此时的运行结果分别是20(局部变量a),10(全局变量a)
  5. 修改局部变量:如果要修改局部变量,要使用关键字nonlocal。
    # 定义全局变量a
    def outer():
        a = 10
        def inner():
            nonlocal a
            # 声明局部变量a
            a += 20
            # 修改局部变量a的值,不能直接修改
            return a
        return inner()
        # 调用内层函数
    i = outer()
    print(i)
  6. 匿名函数:没有函数名的函数,当你需要一个临时函数,但是又没想好用什么名字的时候,可以使用。语法: lambda 形参:表达式。
    # 普通函数
    def func(a ,b):
        return a + b
    res = func(1,2)
    print(res)
    
    # 匿名函数
    func2 = lambda a,b : a+b
    print(func2(1,2))
    # 匿名函数的表达式自带返回值,不需要自己写return

文件与上下文管理器:在 Python 中,文件操作是常见的 I/O 任务,而上下文管理器(Context Manager)则是一种优雅管理资源(如文件、网络连接等)的机制,尤其在文件处理中应用广泛。下面分别介绍两者及它们的结合使用。

  1. 文件:操作文件的核心函数是 open(),它用于打开文件并返回一个文件对象(file object),通过该对象可以进行读写等操作。
    模式 描述
    r 以只读方式打开,文件指针默认放在文件开头,文件不存在则报错
    r+ 打开一个文件用于读写,文件指针默认放在文件开头,文件不存在则报错
    w 打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果不存在,创建新文件
    w+ 打开一个文件用于读写,如果该文件已存在则将其覆盖,如果不存在,创建新文件
    a 打开一个文件,用于追加,如果文件存在,文件指针会放到文件结尾(也就是说,新的内容将会被写入到已有内容之后),如果不存在,创建新文件进行写入
    a+ 打开一个文件用于读写,如果文件存在,文件指针会放到文件结尾,如果不存在,创建新文件进行写入
    其他模式:`rb  rb+  wb  wb+  ab  ab+`   加b的作用,以二进制的格式打开文件,进行上述操作。
    语法:
    f = open(r'小说.txt', 'r')
    # 打开文件(模式:r-读,w-写,a-追加,b-二进制模式等)
    print(f.read())
    # 操作文件(读/写)
    f.close()
    # 关闭文件(释放资源)
    操作 方法
    读取指定大小的内容 f.read()
    读取一行的内容 f.readline()
    读取多行内容 f.readlines()
    写入内容 f.write(data)
    写入多行(需要自己加换行符) f.writelines(lines)
    获得游标位置 f.tell()
    调整游标位置 f.seek(position)
  2. 上下文管理器:with 语句与文件操作的结合是最典型的应用,它会自动处理文件的关闭,即使中间发生错误也能保证资源释放。
    语法:
    with open('小说02.txt','w') as f:
        f.writelines(['hello world\n','hello python'])
  3. OS模块:
    import os
    os.remove("小说01.txt")
    操作 方法
    显示当前路径 os.getcwd()
    展示当前目录内容 listdir(path)
    改变当前路径 os.chdir(path)
    创建目录 os.mkdir(文件名)
    删除目录 os.rmdir(文件名)
    使用Linux命令 os.system()
    删除文件 os.remove(文件名)
    重命名 os.rename

更多推荐