昨日内容

文件的基本应用

什么是文件

操作系统提供的虚拟概念,用来存储信息

操作文件的流程

  1. 打开文件(open)
  2. 修改文件(write/read)
  3. 保存文件(flush)
  4. 关闭文件(close)

打开文件的三种模式

  1. r(只读)
  2. w(清空后写入)
  3. a(追加写入)

文件打开的两种方式

  1. t 文本模式(文本文件)
  2. b 二进制模式(音频/图片/视频)

两种方式一般不单独使用

绝对路径和相对路径

绝对路径

从盘符开始

相对路径

相当于当前执行文件的文件夹下的所有文件

with管理文件上下文

跳出with缩进外,会自动关闭文件,可以一次性打开多个文件

文件的高级应用

新的打开文件的模式

  1. r+,覆盖光标后(文件头)的内容
  2. w+,w清空文件,读的功能失去了意义
  3. a+,a让光标移到文件位

如果真要即写又读,打开两次文件

光标移动的应用

  1. read,以字符为单位,读取n个字符,默认读取全部

以下三个方法以字节为单位

  1. seek:移动光标的位置,0表示文件头,1表示当前位置,2表示文件末尾
  2. tell:告诉光标当前位置
  3. truncate:阶段处理,truncate(0),清空文件

文件的修改

文件没有插入,只有覆盖的说法

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','s')

    fw.write(data)
    fw.flush

#    for line in fr:
#        line = line.replace('sb','s')
#        fw.(line)
#        fw.flush

import os

os.remove('test.py')
os.rename('test_swap.py','test.py')

今日内容

函数的定义

def 函数名(等同于变量名):
    """对函数的描述信息"""
    代码块

函数定义的特性:函数定义过程,只检测语法,不执行代码

示例:

def guess():
    """给定两个数,打印较大的数"""
    s = 10
    y = 20

    if s > y :
        print(s)
    else:
        print(y)

print(guess._doc_)  # 打印注释内容
print(len._doc_)  # 打印len内置方法的作用

定义函数的三种形式

空函数

def func():
    pass

有参函数

def guess(x,y):
    """给定两个数,打印较大的数"""

    if x > y :
        print(x)
    else:
        print(y)

无参函数

def guess():
    """给定两个数,打印较大的数"""
    s = 10
    y = 20

    if s > y :
        print(s)
    else:
        print(y)

函数的调用

使用函数 guess(),加括号可以区分变量名

guess()  # 调用函数
print(guess)  # 函数的地址

函数的返回值

返回值:返回一个值

def guess():
    """给定两个数,打印较大的数"""
    s = 10
    y = 20

    if s > y :
        return s
    else:
        return y

num = guess()
print(num)  # 20

return的特性

  1. return返回一个返回值(所有数据类型)
  2. 没有return默认返回None,如果没有返回值也返回None
  3. return会终止函数,不运行下面代码,假设有多个return,运行到第一个就会终止
  4. return可以返回多个值,返回值以元组的形式接收

函数的参数

形参

定义函数阶段的产物,具有接受实参的作用,具有描述意义

def guess(x:int,y:int = 30)->list:
    """给定两个数,打印较大的数"""

    if s > y :
        print(s)
    else:
        print(y)
  1. :后面规定的参数的数据类型,约定俗成
  2. ->规定的是return的数据类型

位置形参

从左都右,依次接受实参的值

默认形参

  1. 如果调用时不传值,使用默认值:如果传值了,使用传的值
  2. 默认形参必须放在位置形参后面

实参

调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)

位置实参

从左到右依次给位置形参传值,一一对应

关键字实参

  1. 按照形参名给形参传值(使用情况基本没有)
  2. 关键字实参必须在位置实参后面

函数的参数一般0~3个,一般,不要超过三个

可变长参数

*把多余的值接收

可变长形参

def min_4(*lt):  # 把所有传过来的实参全部接收,并且以元组的形式存储
    a,b,c,d,*_ = lt
    res1 = min_2(a,b)
    res2 = min_2(c,d)

    return min_2(res1,res2)

res = min_4(1,2,3,4)
print(res)

    

可变长实参

def min_4(a,b,c,d):
    res1 = min_2(a,b)
    res2 = min_2(c,d)

    return min_2(res1,res2)

lt = [1,2,3,4]
res = min_4(*lt)  # 相当于做了解压缩,也就是把lt内的元素一个一个取出来传给形参

函数基础(一)(day10整理)的更多相关文章

  1. 函数基础(二)(day11整理)

    目录 昨日内容 函数的定义 函数的三种定义方式 空函数 有参函数 无参函数 函数的调用 函数的返回值 函数的参数 形参 实参 今日内容 可变长参数 可变长形参 可变长实参(仅作了解) 函数对象 函数嵌 ...

  2. Linux 究级基础入门命令整理

    Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...

  3. 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数

    [源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...

  4. JavaScript 函数基础

    1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call   : 将函数作为对象的 ...

  5. Python 函数基础、有序集合、文件操作(三)

    一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...

  6. 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归

    一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...

  7. PHP基础入门(三)---PHP函数基础

    PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...

  8. PHP基础入门(二)【PHP函数基础】

    PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...

  9. 09-Python入门学习-函数基础与参数

    一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...

随机推荐

  1. Apache Thrift 的基本使用

    Apache Thrift 的基本使用 可以先看看官网是如何介绍的 The Apache Thrift software framework, for scalable cross-language ...

  2. Ubuntu使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母解决方案

    原因是系统只装了vi,没有装vim.因为vi是不能直接按退格键删除字符的.所以重新装下vim指令即可: # sudo apt-get install vim 重新使用vi命令进行文件编辑.

  3. mybatis <=或这个>=提示错误Tag name expecte问题解决

    解决方案: 1.将<号或者>号进行转义 DATE_SUB(CURDATE(), INTERVAL 31 DAY) <= DATE(created) 2.使用<![CDATA[ ...

  4. 记录一次redis cpu异常升高的排插思路

    好久没有写博客  现在重新捡起来  记录工作中遇到的问题  方便以后在遇到类似的问题也有一个参考. 背景:有一天生产服务器redis  cpu 频繁报警    单核cpu 所以在想是不是业务量上来了. ...

  5. SpringBootSecurity学习(17)前后端分离版之 OAuth2.0 数据库(JDBC)存储客户端

    自动批准授权码 前面我们授权的流程中,第一步获取授权码的时候,都会经历一个授权是否同意页面: 这个流程就像第三方登录成功后,提问是否允许获取昵称和头像信息的页面一样,这个过程其实是可以自动同意的,需要 ...

  6. ELK 学习笔记之 Kibana入门使用

    Kibana入门使用: 第一次导入索引: 修改展示时间,不然查不到数据: 点Discover,查阅数据: 如果要添加新的index: 点击Visualize, 创建chart: 点击Dashboard ...

  7. Android NDK(二) CMake构建工具进行NDK开发

    本文目录 一Androidstudio中需要的插件 二项目配置 ①build.gardle配置 ②CMakeLists.txt ③Android和Cpp的代码 ④so文件生成 ⑤so文件的位置 一.A ...

  8. Spring Boot 2.X(六):Spring Boot 集成Redis

    Redis 简介 什么是 Redis Redis 是目前使用的非常广泛的免费开源内存数据库,是一个高性能的 key-value 数据库. Redis 与其他 key-value 缓存(如 Memcac ...

  9. Feign【入门】

    feign简介: feign是一种声明式,模板化的HTTP客户端,spring cloud对feign进行了增强,使其支持SpringMvc的相关注解,并整合了ribbon做负载均衡.在spring ...

  10. Spring5源码解析5-ConfigurationClassPostProcessor (上)

    接上回,我们讲到了refresh()方法中的invokeBeanFactoryPostProcessors(beanFactory)方法主要在执行BeanFactoryPostProcessor和其子 ...