zoukankan      html  css  js  c++  java
  • 8.9(可变长参数,函数对象,函数嵌套,名称空间与作用域)

    复习

    文件的高级应用

    打开的高级模式

    1. r+: 可读可写,指针文件末
    2. w+: 可读可写,清空文件(极力不推荐)
    3. a+: 可读可写

    文件的高级方法

    1. seek: 单位字节
    2. tell: 单位字节
    3. read(n): 单位字符
    4. truancate: 单位字节
    # with open('test.py', 'rb') as fr:
        # fr.seek(1, 0)  # 0是从文件头开始,走1个字节
        # fr.seek(1, 1)  # 1是从当前位置开始,走1个字节
        # fr.seek(1, 2)  # 2是从文件末开始,走1个字节
        # fr.seek(0, 2)  # 2是从文件末开始,走1个字节  # 定位到文件末尾
        # print(f'fr.tell():{fr.tell()}')  # 告诉你当前指针的位置
        # print(fr.read())  # 中 --> xe4xb8xad
    
    
    # with open('test.py', 'a+b') as fa:
    #     fa.truncate(1)
    
    
    with open('test.py', 'rt',encoding='utf8') as fr:
        print(fr.read(3))  # 3个字符
    

    修改文件的两种方式

    # 文件没有修改这一说,只有覆盖
    
    
    # with open('test.py','r+',encoding='utf8') as fr:
    #     fr.seek(3)
    #     fr.write('中')
    #     fr.flush()   # 如果不加flush短暂的停留在内存中,然后再输入硬盘.如果加了会更快速刷入硬盘
    
    
    
    with open('test.py', 'r', encoding='utf8') as fr, 
            open('test_swap.py', 'w', encoding='utf8') as fw:
        data = fr.read()
        data = data.replace('sb', 'dsb')
        fw.write(data)
    
    import os
    
    os.remove('test.py')
    os.rename('test_swap.py', 'test.py')
    

    函数的定义

    函数定义阶段只检测语法,不执行代码

    def 函数名(<参数1,参数2...>):
        <代码块>
        
        return <返回值>
    

    函数的调用

    def 函数名(<参数1,参数2...>):
        <代码块>
        
        return <返回值>
    
    函数名()  # 调用阶段才会执行函数体代码
    

    定义函数的三种方式

    有参函数

    有参数的函数

    无参函数

    没有参数的函数

    空函数

    函数体代码是pass

    函数的返回值

    return返回返回值, 终止函数, 返回可以是多个(元组的形式返回)

    默认返回值是None

    def func():
        return 1
    
    res = func()  # 1
    

    函数的参数

    def func(name, age):
        print(name, age)
        return 1
    
    res = func('nick',18)  # 1
    

    形参

    具有描述意义

    实参

    真实存在的一个值

    位置形参

    从左到右一个一个的写下去

    位置实参

    从左到右一个一个的传给形参

    默认形参

    位置形参会有一个默认值, 默认形参必须得写在位置形参后面

    关键字实参

    按照形参名传值,关键字实参必须得写在位置实参后面

    可变长参数

    • *
      • *args: 接收多余的位置实参
      • *(): 打散元组内的元素当做位置实参传给形参
    • **
      • **kwargs: 接收多余的关键字实参
      • **{}:打散字典的元素作为关键字实参传给形参

    函数对象

    函数名和变量名是等同的

    1. 引用
    2. 函数的参数
    3. 函数的返回值
    4. 容器类元素

    函数的嵌套

    def f1():
        def f2():
            pass
    

    函数的调用

    def f1():
        pass
    
    f1()
    
    
    def f2():
        f1()
    
    # 函数必须得先定义后调用
    

    名称空间与作用域

    内置名称空间

    Python解释器的内置方法,如 len/int/float, python解释器启动的时候就有了

    全局名称空间

    python文件执行的时候生成

    局部名称空间

    函数调用的时候生成

    执行顺序 内置-->全局-->局部

    查找顺序 当前位置开始 局部-->全局-->内置

    全局作用域

    内置+全局

    局部作用域

    局部

    1. 全局作用域内的变量(x=1)和局部作用域内的变量(x=1),两个x没有任何关系,只针对不可变类型
    2. 局部作用域1内变量(x=1)和局部作用域2内变量(x=1),两个x也没有任何关系,只针对不可变类型
  • 相关阅读:
    permission 文档 翻译 运行时权限
    TabLayout ViewPager Fragment 简介 案例 MD
    Log 日志工具类 保存到文件 MD
    OkHttp 官方wiki 翻译 MD
    Okhttp 简介 示例 MD
    OkHttp 官方Wiki之【使用案例】
    DialogPlus
    倒计时 总结 Timer Handler CountDownTimer RxJava MD
    RecyclerView 判断滑到底部 顶部 预加载 更多 分页 MD
    CSS3的媒体查询(Media Queries)与移动设备显示尺寸大全
  • 原文地址:https://www.cnblogs.com/jiann/p/11340091.html
Copyright © 2011-2022 走看看