python_函数_文件

函数

1、面向对象的编程
2、面向过程的编程   #没有return的叫做过程
3、函数式编程       #有return的返回叫做函数  

传参的方式

1、可以定义默认传参的方式,位置调用的传参方式,与位置有关
def run(x=1,y=2)
     print (x,y)

run()
 
2、关键字调用,与位置无关,会输出 2,1

def test1(x,y):
    print (x)
    print (y)

test1(y=1,x=2)

ps : 关键参数不能在中间

3、参数组传参(单*)
接受的是N个位置参数,不能接受关键字参数,最终会转换成元祖
def  test1(*args):
    print (args,type(args))
    for data in (args):
        print (data,type(data))

test1(1,3,4,5)

def test1(x,*args):
    print (x)
    print (args)
test1(1,2,3,4,5,6)

4、参数组传参(双*) 接收的是字典,传入的关键子必须是key=value格式就是字典格式
**kwargs参数组必须往后放置
def test1(**kwargs):
    print (kwargs)

test1(name="alex",age="20",sex="nan")

 

小练习

def test1(x,y,z=1,*args,**kwargs):
    print (x)
    print (y)
    print (z)
    print (args)
    print (kwargs["name"])

test1(1,2,3,4,5,6,name="alex",age="20",sex="nan")
输出
1
2
alex
(4, 5, 6)
{‘name‘: ‘alex‘, ‘sex‘: ‘nan‘, ‘age‘: ‘20‘}

 

局部变量和全局变量

一、在函数内生效的变量叫全局变量

二、在全局生效的变量叫全局变量

三、递归函数

特性

1.必须有明确的结束条件

2.每次进入下一个递归层的时候都应该比上一层有所减少

3.递归层次不高,容易导致内存溢出

四、高阶函数

变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,这种函数就称之为高阶函数。

def add(x,y,f):
    return f(x) + f(y)

res = add(3,-6,abs)
print(res)

eval可以把str转成字典

比如说在python3中用input这个函数,传入的都是str类型,这样的话可以用
user_input = eval(uesr_input)
给转成字典再处理非常好使
case
{‘bakend‘: ‘www.old.org‘,‘record‘:{‘server‘: ‘100.1.7.9‘,‘weight‘: 20,‘maxconn‘: 30}}

练习如何在文件中替换修改字符

因为在用a+ r+等的时候都会向文件末尾进行追加,当需要修改一个文件的内容的时候只有2种方法

1、写到内存中修改,修改完毕用truncat清空文件再写回去

2、直接w+创建另外一个文件,把东西写到另外一个文件,再os.rename os.remove替换文件

case1 内存中修改

def run():    f = open("tmp1.txt","a+") #这里F打开文件后指针就已经去了末尾    f.seek(0)                 #将指针指会开始位置,否则f.read读不到东西    m = f.read()    print (m)    f.seek(0)          #读完后指针又去了末尾,把他再调回起始位置    f.truncate(0)        #截断文件,0代表从起始位置开始截断    s = m.replace("test\nabc","xxxxxxxxxt")   #这里替换一个字符串    f.write(s)                       #写入字符串run()
tmp1.txt的内容是testabc123

a+的方式

读写的方式打开文件,若文件不存在则创建文件

写的方式是指追加
with open("test.txt","a+") as f:
  f.write("123\n")
读的方式是指
with open("test.txt","a+") as f:
  f.seek(0)
  d = f.read()
  f.write("123\n")
  print (d) 

r+和a+的最大区别就是

r+如果先读后写,则是末尾追加,如果直接写则是覆盖

先读后写

with open("test.in", ‘r+‘)as f:
    f.readline()
    f.write("addition")

hello1
ok2
byebye3
addition

r+的方式

r+的方式是读写方式打开
读with open("test.txt","r+") as f:  print(f.tell())  #这里输出的位置是0  print(f.read())  #因为是0开始的所以这里会输出所有内容  print(f.tell())  #这里输出的是文件末尾

写的方式是覆盖原有内容,从0开始写入with open("test2.txt","r+") as f:
    print(f.tell())           #还是从0开始    f.write("aaaaaaaass\n")   #但是文件写入的方式是覆盖原有内容

tell()判断指针的方法

这里假设test2.txt文件内容是

1
2
3
with open("test2.txt","r+") as f:
    print (f.tell())
    d=f.read()
    print (len(d),f.tell())

输出结果如下,也就是说指针对这的是末尾的空字符,假设你有空格回车都要算上,最后len长度+1就是你指针的位置

0
5 7
时间: 2024-08-03 07:34:01

python_函数_文件的相关文章

Python_函数_内置函数02

Python的内置函数 zip()函数 zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表. 如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,可以将元组解压为列表. zip()示例 test = zip([1,2,3],[4,5,6]) print (test) # 结果为([1,4],[2,5],[3,6]) test1 = zip([1,2,3],[4,5,6,7]) print (test1) #

Python_函数_参数

def   是函数的关键字,Python解释器一旦执行到def,默认不执行 def li(): n = 8 n +=1 print(n) li() li2 = li li2() 结果: 9 9 return():用于函数返回值,用于中断函数操作 参数可以是数字,字符串,列表,元组,字典 默认参数:默认参数Python规定放在普通参数后面 def li(a1,a2=11) print(a1,a2) li(111) li(111,222) 结果: 111 11 111 222 指定参数:指定后按指定

python_字符_函数

一.字符集和字符编码 1.定义 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的英文.汉字等字符是二进制数转换之后的结果.通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码":反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密.在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码. 字符(Character):是一个信息单位,在计算机里面,一个中文汉字是一个字符,一个英文字母是

Day 3 函数 及文件读写操作

一.函数 日常生活中,要完成一件复杂的功能,我们总是习惯把“大功能”分解为多个“小功能”以实现.在编程的世界里,“功能”可称呼为“函数”,因此“函数”其实就是一段实现了某种功能的代码,并且可以供其它代码调用. 假设我们在编程过程中需要计算圆形的面积.如果我们不是用函数,每次需要计算原型面积的时候都需要这样 1 r1 = 12 2 r2 = 3.4 3 r3 = 3.1 4 s1 = 3.14 * r1 * r1 5 s2 = 3.14 * r2 * r2 6 s3 = 3.14 * r3 * r

重定向C库中stdio文件中的printf()函数,文件流-->串口USART1

6.4 一些说明 数据属性可以重写同名的方法属性.这是为了避免在大型系统中产生问题的意外名称冲突.所以用一些减少冲突的常用方法是很有效果的.常用的方法包括:大写字母方法名称,用唯一的字符串来做为数据属性的名称(可以是个下划线_)或者用动词命名方法和用名字命名数据属性. 数据属性就像和对象的普通用户一样可以被方法引用.换句话说,类不能用来实现纯净的数据类型.事实上,在python中不能强制数据隐藏,一切基于约定.(另一方面,如C中写的,python的实现可以做到完全隐藏实现细节并且在必要是可以控制

Python基础入门(三)深浅拷贝、函数、内置函数、文件处理、三元运算、递归

深浅拷贝 import copy copy.copy() #浅拷贝 copy.deepcopy() #深拷贝 num = 110 copynum = num #赋值 一.数字和字符串 对于 数字 和 字符串 而言,赋值.浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址. 1 import copy 2 #定义变量 数字.字符串 3 n1 = 123 4 #n1 = 'nick' 5 print(id(n1)) 6 7 #赋值 8 n2 = n1 9 print(id(n2)) 10 11 #浅

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30

Oracle SQL语言之常用函数_超越OCP精通Oracle视频教程培训30 本课程介绍: Oracle视频教程,风哥本套oracle教程培训是<<Oracle数据库SQL语言实战培训教程>>的第5/5套:Oracle SQL语言之常用函数.主要学习Oracle数据库SQL聚合函数,分组函数,字符函数,转换函数,日期字符数字转换,日期函数,集合函数,分析函数等. Oracle SQL语言之常用函数,课程内容详细如下: 聚合函数-数据统计 分组函数-使用group by与havin

第九篇:使用 lstat 函数获取文件信息

前言 在之前的文章中,描述过如何用 fcntl 函数改变文件的状态标记.但,文件还有很多信息,如文件类型,权限设置,设备编号,访问时间等等.如果要获取这些信息,则使用函数 lstat 可以轻松达到这个目的. 下面的程序将使用该函数获取文件类型信息并判断它的类型. 但在这之前,先要说明文件信息结构体和文件类型判定宏. 文件信息结构体 调用 lstat 函数将会把指定文件的信息存放到 stat 结构体中,这个结构体的定义大致如下: 文件类型判定宏 文件结构体中的文件类型字段是一个整数,对此,可以使用

第五篇:使用无缓冲IO函数读写文件

前言 本文介绍使用无缓冲IO函数进行文件读写. 所谓的无缓冲是指该IO函数通过调用系统调用实现,其实系统调用内部的读写实现也是使用了缓冲技术的. 读写步骤 1. 打开文件 open 函数 2. 读写文件 read write 函数 3. 修改文件指针 lseek 函数 ( 可能和 2 交替进行 ) 4. 关闭文件 close 函数 代码示例 1 // 2 // 本程序往一个文件中写入一个整型数组 3 // 然后读取这个数组并输出 4 // 5 6 #include <unistd.h> 7 #