函数基础(一)(day10整理)
目录
昨日内容
文件的基本应用
什么是文件
操作系统提供的虚拟概念,用来存储信息
操作文件的流程
- 打开文件(open)
- 修改文件(write/read)
- 保存文件(flush)
- 关闭文件(close)
打开文件的三种模式
- r(只读)
- w(清空后写入)
- a(追加写入)
文件打开的两种方式
- t 文本模式(文本文件)
- b 二进制模式(音频/图片/视频)
两种方式一般不单独使用
绝对路径和相对路径
绝对路径
从盘符开始
相对路径
相当于当前执行文件的文件夹下的所有文件
with管理文件上下文
跳出with缩进外,会自动关闭文件,可以一次性打开多个文件
文件的高级应用
新的打开文件的模式
- r+,覆盖光标后(文件头)的内容
- w+,w清空文件,读的功能失去了意义
- a+,a让光标移到文件位
如果真要即写又读,打开两次文件
光标移动的应用
- read,以字符为单位,读取n个字符,默认读取全部
以下三个方法以字节为单位
- seek:移动光标的位置,0表示文件头,1表示当前位置,2表示文件末尾
- tell:告诉光标当前位置
- 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的特性
- return返回一个返回值(所有数据类型)
- 没有return默认返回None,如果没有返回值也返回None
- return会终止函数,不运行下面代码,假设有多个return,运行到第一个就会终止
- return可以返回多个值,返回值以元组的形式接收
函数的参数
形参
定义函数阶段的产物,具有接受实参的作用,具有描述意义
def guess(x:int,y:int = 30)->list:
"""给定两个数,打印较大的数"""
if s > y :
print(s)
else:
print(y)
- :后面规定的参数的数据类型,约定俗成
- ->规定的是return的数据类型
位置形参
从左都右,依次接受实参的值
默认形参
- 如果调用时不传值,使用默认值:如果传值了,使用传的值
- 默认形参必须放在位置形参后面
实参
调用阶段的产物,传给形参一个具体的值,具有具体的值(可以为所有数据类型)
位置实参
从左到右依次给位置形参传值,一一对应
关键字实参
- 按照形参名给形参传值(使用情况基本没有)
- 关键字实参必须在位置实参后面
函数的参数一般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整理)的更多相关文章
- 函数基础(二)(day11整理)
目录 昨日内容 函数的定义 函数的三种定义方式 空函数 有参函数 无参函数 函数的调用 函数的返回值 函数的参数 形参 实参 今日内容 可变长参数 可变长形参 可变长实参(仅作了解) 函数对象 函数嵌 ...
- Linux 究级基础入门命令整理
Linux 究级基础入门命令整理 条条框框,三三两两,怎讷个这么多,哈哈!no zuo no die. 纯粹个人菜鸟笔记,望大神笑纳! 后续,未完!! 查看系统信息 uname -a - 查看内核/操 ...
- 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数
[源码下载] 速战速决 (3) - PHP: 函数基础, 函数参数, 函数返回值, 可变函数, 匿名函数, 闭包函数, 回调函数 作者:webabcd 介绍速战速决 之 PHP 函数基础 函数参数 函 ...
- JavaScript 函数基础
1. JavaScript 函数基础 1. 定义方法 2. 函数的调用方法 3. 函数方法 apply : 将函数作为数组的方法来调用 将参数以数组形式传递给该方法 call : 将函数作为对象的 ...
- Python 函数基础、有序集合、文件操作(三)
一.set 特点: set是一个无序且不重复的元素集合访问速度快:天生解决元素重复问题 方法: 初始化 >>> s1 = set()>>> print(type(s ...
- 【2017-03-05】函数基础、函数四种结构、ref和out参数、递归
一.函数基础 1.函数/方法:非常抽象独立完成某项功能的一个个体 2.函数的作用: 提高代码的重用性提高功能开发的效率提高程序代码的可维护性 3.分类 固定功能函数高度抽象函数 4.函数四要素:输入, ...
- PHP基础入门(三)---PHP函数基础
PHP基础入门(三)---函数 今天来给大家分享一下PHP的函数基础.有了前两章的了解,想必大家对PHP有了一定的基础了解.想回顾前两章的朋友可以点击"PHP基础入门(一)"&qu ...
- PHP基础入门(二)【PHP函数基础】
PHP基础入门(二)--函数基础 了解 PHP基础入门详解(一) 后,给大家分享一下PHP的函数基础. 这部分主要讲的就是: 函数的声明与使用.PHP中变量的作用域.静态变量.函数的参数传递.变量函数 ...
- 09-Python入门学习-函数基础与参数
一.函数基础 1.定义函数的三种形式 1.1 无参函数 def foo(): print('from foo') foo() 1.2 有参函数 def bar(x,y): print(x,y) bar ...
随机推荐
- Tomcat下java普通类IO文件路径问题
由于在windows和linux下文件路径的表示方式存在差异 而我们的项目大多是在windows下的eclipse中完成测试 然后部署到linux的tomcat服务器中 这个时候我们既不能把地址写死( ...
- Spring MVC学习 ( RESTful)
是一套规则,不同的系统之间(Vue java Python C# PHP)具体四种不同类型的HTTP 请求分别表示四种基本操作(CRUD) GET :查询(R) POST:添加(C) PUT:修改( ...
- js赋值,字典,数据类型和参数传递的简单熟悉
之所以这样分,原因是布尔类型和整数浮点数在内存里是直接赋值的,而数组实际上数组名指的是这个数组的地址 字符串同样是地址,字典也是. //熟悉赋值 var x=0; console.log(x); va ...
- spring5 源码深度解析----- Spring事务 是怎么通过AOP实现的?(100%理解Spring事务)
此篇文章需要有SpringAOP基础,知道AOP底层原理可以更好的理解Spring的事务处理. 自定义标签 对于Spring中事务功能的代码分析,我们首先从配置文件开始人手,在配置文件中有这样一个配置 ...
- 解决MVC中Model上的特性在EF框架刷新时清空的问题
MVC中关于前端数据的效验一般都是通过在Model中相关的类上打上特性来实现. 但是在我们数据库发生改变,EF框架需要刷新时会把我们在Model上的特性全部清除,这样的话,我们前端的验证就会失效. 因 ...
- Git设置分支保护实现CodeReview卡点
# Git设置分支保护实现CodeReview卡点 > From:https://blog.csdn.net/crisschan/article/details/100922668 > G ...
- .netCore+Vue 搭建的简捷开发框架 (5)
文章目录:.netCore+Vue 搭建的简捷开发框架--目录 上两节的内容介绍了一些关于.netCore 相关的一些基础知识.介绍这些的目的,最主要的还是为了我们的架构搭建服务. 上一节中,我们介绍 ...
- cocos2dx 3.2 内存管理
一.引用计数(cocos2d-x3.2的Node类中用到) 概念:记录当前对象被引用的次数.当次数为0时释放. 1 . retain 与 release 每调用一次retain()使计数+1 每调用 ...
- Vue中的循环以及修改差值表达式
0828自我总结 一.Vue中的循环 v-for 常见的4总情况 #第一种 <div v-for="item in items"></div> #第二种 & ...
- Vue-cli中的跳转
Vue-cli中的跳转 一.页面中跳转指定网页 写法一: <router-link :to="{name:'home'}"> 这里的name是在VUE路由里面的 写法二 ...