昨日内容

文件的基本应用

什么是文件

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

操作文件的流程

  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. jenkins构建maven项目:找不到本地依赖包的解决办法

    前言: 我们在构建maven项目时,常常会用到一些特殊的jar包(不能在中央仓库中直接下载到本地仓库如微软不允许以maven的方式直接下载com.microsoft.sqlserver:sqljdbc ...

  2. JAVA知识点总结(五)(常用类)

    第十八章:常用类 一.main方法解读: public static void main(String[] args) //当点击运行时,JVM会自动调用main方法 //public: 被JVM调用 ...

  3. 基于elasticsearch的自定义业务告警的设计思路

    A系统与B系统之间有很多接口交互,但是有一段时间接口经常报错,作为开发如果不能第一时间知道问题且及时解决的话就会收到业务投诉,当月绩效凉凉. 如果你也有这种场景,那么你就需要一个及时告警的功能. 实现 ...

  4. CMD的最佳“代替品”

    让CMD成为历史 Windows用户大多都使用过"cmd",cmd被称为"阉割版"的DOS系统~ 很多用户除此之外,还喜欢Linux命令行~但是CMD的命令和L ...

  5. ouc_software第一次作业:OUC二手物品交易

    一.前言 1.项目名称:ouc二手物品交易 2.项目简介 (1)创办一个网上校内二手物品交易平台,供校内师生进行交易二手物品. (2)经过身份认证的用户,可将自己想要交易的二手物品发布至平台,供其他用 ...

  6. Shell之脚本检查与调试

    目录 Shell之脚本检查与调试 参考 脚本语法检查 脚本运行调试 Shell之脚本检查与调试

  7. 由std::once_call 引发的单例模式的再次总结,基于C++11

    一个偶然的机会,知道了std::once_call这个东西. 了解了下,std::once_call支持多线程情况下的某函数只执行一次.咦,这个不是恰好符合单例模式的多线程安全的困境吗? 单例模式,经 ...

  8. Laravel 5 中文文档 CHM 版

    使用 Microsoft HTML Help Workshop 做了一个 Laravel 5.4 中文文档的 CHM 版本. 百度网盘下载地址:http://pan.baidu.com/s/1dFN2 ...

  9. 队列 & 栈---概述

    队列 是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表.进行插入操作的端称为队尾,进行删除操作 ...

  10. 【源码解析】自动配置的这些细节不知道,别说你会 springboot

    spring-boot 相对于 spring,很重要的一个特点就是自动配置,使约定大于配置思想成功落地.xxx-spring-boot-starter 一系列引导器能够开箱即用,或者只需要很少的配置( ...