Python文件指针与Python函数
文件内指针移动:f.seek()
强调:只有t模式下read(n),n代表字符的个数,除此以外都是以字节为单位。
- """
- 文件内容:哈哈哈哈
- 呵呵呵呵
- """
- with open(r'C:\Users\test.txt', mode='rt', encoding='utf-8') as f:
- res = f.read(4)
- print(res)
- 哈哈哈哈
f.truncate(size):从文件的首行首字符开始截断,截断文件为 size 个字节,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 Widnows 系统下的换行代表2个字节大小
- with open(r'C:\Users\test.txt', mode='at', encoding='utf-8') as f:
- f.truncate(3)
f.seek(offset,whence):指针移动是以字节为单位的
offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
三种模式:只有0模式下既可以在t下用也可以在b模式下用,而1、2两种模式只能在b模式下用。
0(默认):参照文件开头
- with open(r'C:\Users\test.txt',mode='rt',encoding='utf-8') as f:
- f.seek(3,0) # offset:3字节;whence:0
- print(f.tell()) # 查看文件指针位置
- print(f.read())
1:参照指针当前所在位置
- with open(r'C:\Users\test.txt', mode='rb') as f:
- f.read(2) # 文件指针读到第二字节
- f.seek(4, 1) # 从指针当前位置再往右移动4字节
- print(f.tell())
- print(f.read().decode('utf-8')) # b模式下,将读出的二进制码进行解码。
- # 注:当指针移动到某字符中间位置时,打印内容会报错
2:参照文件文件末尾
- with open(r'C:\Users\test.txt',mode='rb') as f:
- f.seek(-5, 2) #从文件末尾操作指针时,往前操作注意偏移量为负数
- print(f.tell())
- print(f.read().decode('utf-8'))
- # 注:当指针移动到某字符中间位置时,打印内容会报错
函数
什么是函数
在程序具备某一功能的工具—>函数
事先准备好工具—>定义函数
遇到应用场景,拿来就用—>函数的调用
两大类:
内置函数
自定义函数
为何要用函数
没有用函数的三个问题
代码冗余
程序的组织结构不清晰,可读性差
扩展性差
如何用函数
函数的使用必须遵循一个原则:
先定义
定义语法:
- def 函数名(参1,参2,参3……):
- ""
- 文件注释
- ""
- 代码1
- 代码2
- 代码3
- ……
- return
后调用
函数名
- def 函数名(参1,参2,参3……):
定义阶段:只检测语法,不执行代码(定义不分先后,存在即可)
调用阶段:开始执行函数体代码
定义先后顺序不受执行顺序的的影响,时两个独立的模块,但前提是必须在执行前有定义。
- def func1():
- print('Jason is a XX')
- func2() # 虽然func2在func1之后定义但不影响程序的运行
-
- def func2():
- print('yeah,your are right !')
-
- func1()
-
- Jason is a XXX
- yeah,your are right !
定义函数的三种形式:
无参函数:函数功能不需要与用户交互
- def func1():
- print('Jason is xxx')
- def func1():
有参函数:与用户交互,按照用户输入参数执行相应功能
- def max(x,y):
- if x > y:
- print(x)
- else:
- print(y)
- def max(x,y):
空函数:
- def func():
- pass
调用函数的三种形式:
语句形式:调用来单纯执行功能
- def func():
- 相应功能
- ……
- def func():
表达式形式:调用起来进行相应运算
- def add(num1,num2):
- add_r = num1 + num2
- return add_r
-
-
- data = add(45, 55)*1000
- print(data)
- def add(num1,num2):
函数调用可以当做另一个函数的参数传入:调用来当做另一函数的参数,类似于嵌套
- def max1(x,y):
- if x > y:
- return x
- else:
- return y
-
- res=max2(max2(1,2),3)
- print(res)
- def max1(x,y):
函数的返回值:返回值是函数体代码的运行结果
为什么要有返回值:需要拿到函数的处理结果做进一步处理,则函数必须要有返回值
如何用返回值:
return 返回值的特点
返回值没有类型限制,也没有个数限制
return或者函数没有return,返回值为none
return值:返回的就是该值本身
return(多个值)值1,值2,值3:则返回元组形式(值1,值2,值3)
return是函数结束运行的标志,函数内可有多个return,但只要执行一次函数就立即结束,并且将return后的值当做本次调用的结果返回
函数参数的使用
函数参数的分类
形参:在定义函数时括号内指定的参数(变量名),称之为形参
实参:在调用函数时括号内传入的值(变量值)称之为实参
二者关系:在调用函数时,实参值(变量值)会在函数调用时绑定给形参(变量名),在调用结束时解除绑定
函数参数详解
1.形参
位置形参:在定义阶段,按照从左到右的顺序依次定义的形参
特点:必须被传值(多传值或者少传值都会报错)
- def func(x,y): # x,y:形参,必须被传值
- print(x, y)
-
- func(1,2) # 1,2,:实参,必须与形参一一对应
默认参数:在定义阶段,就已经为某个形参赋值,该形参称之为默认形参
如有 与默认值不同,则以实参为准
特点:在定义阶段就已经有值,意味着调用阶段可以不用为其传值
注意点:默认形参必须在位置参数之前
- def register(name, age, gender='male'):
- print(name, age, gender)
-
-
- register('egon', 18)
- register('alice', 16, gender='female')
-
- egon 18 male
- alice 16 female
- def register(name, age, gender='male'):
形参中*与 * * 的用法(可变参数)
用来接收溢出的位置实参和关键字实参
形参中带* : *会将溢出的位置实参存成元组的形式然后赋值其后变量名
- def func(x,y,*args):
- print(x,y,args)
-
- func(1,2,3,4,5,6)
-
- 1 2 (3, 4, 5, 6)
- def func(x,y,*args):
形参中带** : ***会将溢出的关键字实参存成字典的形式然后赋值其后变量名
- def func(x, y, **kwargs):
- print(x, y, kwargs)
-
- func(1,y=2,z=3,m=1,n=2)
-
- 1 2 {'z': 3, 'm': 1, 'n': 2}
- def func(x, y, **kwargs):
2.实参
位置实参:在调用阶段,按照从左到右的顺序依次传入的值
特点:这种传值方式会与形参一 一对应
关键字参数:在调用阶段,按照key-value的格式传值
特点:可以完全打乱位置,但仍然能为指定形参传值
注意:可以混用关键字实参与位置实参,但是
同一位置形参只能被赋值一次
位置实参必须跟在关键字实参的前面
实参中* 与* *的用法(可变参数)
打散你需要赋值的容器类型
实参中带*:(当实参是可被for循环的数据结构)先将实参打散成位置实参,然后与形参做对应
- def func(x,y,z):
- print(x,y,z)
-
- func(1,*[2,3])
- func(*[1,2,3])
-
- 1 2 3
- 1 2 3
- def func(x,y,z):
实参中带** :先将实参打散成关键字实参,然后与形参做对应
- def func(x,y,z):
- print(x,y,z)
-
- func(**{'x':1,'z':3,'y':2})
-
- 1 2 3
- def func(x,y,z):
Python文件指针与Python函数的更多相关文章
- 将python文件加入到python的环境变量中
在python中,把一个python文件加入到python环境变量中,以方便其他python文件调用.有两种方式,下面对其进行简单的介绍 方式一: 导入系统自带的sys模块,然后将文件的路径进行追加或 ...
- python 文件指针及文件覆盖
1.文件纯净模式延伸 r+t:可读.可写 w+t:可写.可读with open('b.txt','w+t',encoding='utf-8') as f: print(f.readable()) pr ...
- python 文件和路径操作函数小结
1: os.listdir(path) //path为目录 功能相当于在path目录下执行dir命令,返回为list类型 print os.listdir('..') 2: os.path.walk( ...
- python文件及路径管理函数
glob模块 说明: 1.glob是python自己带的一个文件操作相关模块,用它可以查找符合自己目的的文件,就类似于Windows下的文件搜索, 支持通配符操作 *.?.[] 这三个通配符,*代表0 ...
- python文件之间变量和函数的 获取/调用 的方法
- [Vim]新建python文件自动添加python header
使用vim脚本来实现的,使用了模板,几行代码就能实现很实用. ~/.vimrc 中的代码 "auto add pyhton header --start autocmd BufNewFile ...
- Python基础篇【第2篇】: Python文件操作
Python文件操作 在Python中一个文件,就是一个操作对象,通过不同属性即可对文件进行各种操作.Python中提供了许多的内置函数和方法能够对文件进行基本操作. Python对文件的操作概括来说 ...
- Python文件读写机制
Python提供了必要的函数和方法进行默认情况下的文件基本操作 文件打开方式: open(name[,mode[buf]]) name:文件路径 mode:打开方式 buf:缓冲buffering大小 ...
- Python之旅Day4 闭包函数 模块及模块倒入
闭包函数 闭包函数就是在内部函数当中有对外部函数名字的引用 ###代码示例1### def f1(): x =1 def f2(): print(x) return f2 f=f1() f() ### ...
随机推荐
- HDU 1233(最小生成树)
HDU 1233(最小生成树 模板) #include <iostream> #include <algorithm> #include <cstdio> usin ...
- [软件工程基础]PhyLab 功能规格说明书
前言 Sigma 团队想要在 PhyLab 上做的增量改进见需求分析.六个功能中只有题库和图文流程需要对界面进行大的改动,剩下的功能在用户看来仅仅是在原有界面上有内容上的扩充,因此不在功能规格说明书的 ...
- TensorFlow 模型保存/载入
我们在上线使用一个算法模型的时候,首先必须将已经训练好的模型保存下来.tensorflow保存模型的方式与sklearn不太一样,sklearn很直接,一个sklearn.externals.jobl ...
- Java之file操作
File类既可以表示文件,也可以表示为文件夹 文件的创建.删除.重命名 1.文件的创建 File file=new File("new Hello.txt");//当前工程目录下 ...
- 101 Symmetric Tree 判断一颗二叉树是否是镜像二叉树
给定一个二叉树,检查它是否是它自己的镜像(即,围绕它的中心对称).例如,这个二叉树 [1,2,2,3,4,4,3] 是对称的. 1 / \ 2 2 / \ / \3 4 4 3但是 ...
- JMeter--PerfMon Metrics Collector监控内存及CPU
1.需要准备的软件及插件 ServerAgent-2.2.1.zip JMeterPlugins-Standard-1.3.1.zip 2.jmeter上JMeterPlugins-Standard- ...
- Oracle如何创建表空间
create user frame identified by tiger; grant create session to frame; grant create table to frame; g ...
- java 并发容器一之BoundedConcurrentHashMap(基于JDK1.8)
最近开始学习java并发容器,以补充自己在并发方面的知识,从源码上进行.如有不正确之处,还请各位大神批评指正. 前言: 本人个人理解,看一个类的源码要先从构造器入手,然后再看方法.下面看Bounded ...
- Sass基本特性
Sass扩展/继承@extend 代码的继承,声明方式:.class;调用方式:@extend 如: .btn { border: 1px solid #ccc; padding: 6px 10px; ...
- Vue-router 的练习
使用了vue-cli 生成了一套webpack的模版. 之后在其中练习 vue-router. 以下是一些记录. 1.动态路由的配置 import Vue from 'vue' import Rout ...