美文网首页
day11_文件操作

day11_文件操作

作者: 逆流而上_2eb6 | 来源:发表于2018-10-12 12:41 被阅读0次

    1.recode

    1.匿名函数

    函数名= lambda 参数列表:返回值
    匿名函数也是函数。
    func1 = lambda a,b:pint(a,b)
    函数体是一条语句,并且这条语句是有结果的(赋值语句没有结果)
    2.变量的作用域

    全局变量:没有声明在函数或类中的变量;从声明开始到文件结束,任何位置。
    局部变量:声明在函数或者类中的类的变量。从声明开始到函数、类结束
    global:在函数中声明一个全局变量/想要在函数中修改一个全局变量的值
    nonlocal: 在局部的局部修改局部变量的值的声明
    3.函数作为变量

    声明函数就是在声明一个类型是function的变量。变量能做的,函数都能做。

    函数名:一个函数
    函数名():调用函数,得到返回值
    函数作为参数:闭包
    函数作为返回:装饰器(python特色)
    

    4.函数的调用

    调用过程就是一个压栈的过程,调用函数的时候系统会自动在栈区间开辟空间存储数据(变量)。

    a,b=10,20
    def fun1(a,b):
        a,b=b,a
    fun1(a,b)
    print(a,b) #10,20
    
    a,b=10,20
    def fun1():
        global a,b
        a,b=b,a
    fun1()
    print(a,b) #20,10
    

    5.递归函数

    自己调用自己的函数,循环能做的递归都可以做,但是能用循环的就不要用递归。

    2.模块的使用

    1.import

    模块:python中一个py文件就是一个模块。
    使用模块:可以通过import或者from-import在一个模块中去使用另一个模块的内容
    语法
    import 模块名--->将模块中的所有的内容导入,并且可以在当前模块中通过“模块名. ”的方式去使用导入模块中的内容
    from 模块名 import 变量1,变量2--->将模块中所有的内容都导入,但是只能使用导入的变量。
    from 模块名 import * ---->将模块中所有内容模块导入,所有的全局变量
    补充
    import 可以检查被导入的内容是否已经导入过,如果导入过,不会重复导入,导入多次,只执行一次。多种导入的效果可以同时生效(如重命名,导入的部分变量可直接使用)
    代码执行到import的时候,会将import后面的模块的内容执行一遍

    2.重命名

    import 模块名 as 模块的新名字-->使用时用新名字
        import test1 as TS
    from 模块名 import 变量名 as 新名字,变量名2 as 新名字
        from test1 import name as newname,name2 as newname2
    

    3.选择性导入(阻止导入)

    1.语法
    if name=="main":
    代码块
    说明:
    if name=="main":--->固定写法("main"+enter快捷键)
    代码块-->执行当前模块时代码块可以执行,被别人导入这个模块时,不会导入这个代码块
    2.name
    每个模块都有这个属性,这个属性的默认值是当前模块对应py文件的文件名,当前模块正在被执行时,系统会自动将模块的name属性变成'main'

    import shiyan12
    print(shiyan12.__name__)  #shiyan12
    print(__name__)  #main
    

    **3.什么时候使用模块
    将具有相同的功能的函数和数据封装到一起

    3.迭代器

    1.什么是迭代器(itemr)
    迭代器是python中一种数据类型。属于序列。没有具体的字面量,可以将其他的序列转成迭代器:
    语法
    iter(序列)
    next(迭代器) 或者迭代器.next()
    2.迭代器特点
    只能通过next方法一个一个的获取迭代器中的元素(栈),取出后迭代器中就不存在这个元素了,相当于pop()。

    iter1=iter("abcdefghijklmnopqrstuvwxyz")
    print(iter1)
    print(next(iter1))
    print(next(iter1))
    print(next(iter1))
    print(next(iter1))
    

    取完后在去会报错:StopIteration(没有找到结果)
    3.遍历迭代器

    for n in iter1:
        print(n)
    

    4.生成式和生成器

    1.什么是生成器(generator)
    生成器就是迭代器,但迭代器不一定是生成器
    生成式就是生成器的一种特殊形式:(变量 for 变量 in 序列)o

    gel=(x for x i range(10))
    print(gel)
    print(next(gel))
    

    其他写法
    ge1=(x for x in range(20))
    ge2=(x for x in range(20) if x%2)
    ge3=([x,x**4] for x in range(20))
    生成式()中的相当于函数,需要时才执行,一次next()执行循环直到得到一个结果。
    2.生成器就是函数体中有yield关键字的函数
    函数中只要有yield,那么调用这个函数不再是执行函数且获得返回值,而是得到一个生成器
    通过next获取生成器的元素时,会执行生成器对应的函数的函数体,执行到yield为止,并返回yield后面的值,然后保存当前结束位置,下次获取元素时接着上一次位置执行,执行到yield,取完在去会报错,StopIteration

    def a():
        for n in range(2):
            yield n
            if n>=0:
                yield n
    b=a()
    print(next(b))
    print(next(b))
    print(next(b))
    print(next(b))
    #0  0  1  1 
    

    生成器可以当成序列来使用
    生成器a(),m=a(),n=a()生成了2个序列m,n

    def a():
        for n in range(2):
            yield n
    
    b=a()
    d=a()
    print(next(d))
    print(next(b))
    

    5.文件操作

    使用本地文件可以做数据的持久化(本地化)--->数据库文件\txt文件\json文件\plist文件\二进制文件

    1.文件操作--读写操作

    :取出文件中的数据
    :将数据写到文件中
    所有的文件的操作过程:打开文件-->操作文件-->关闭文件

    2.打开文件和关闭文件

    1.打开文件
    open(file)
    返回值是打开的文件

    file-->文件路径,
        绝对路径(不推荐使用):
        相对路径:./相对路径(相对当前py文件对应的文件夹)
            ./--->代表当前文件夹,
            ./某文件A/--->代表当前文件夹中文件A的子目录
            ../--->代表当前文件的上一层
    mode-->文件打开方式(不同的操作对应不同的打开方式)
        "r"-->以只读的形式打开文件,得到文本
            "rb"/""br"-->读,得到的数据是二进制形式
        "w"-->以写的形式打开文件
            "wb"/bw"-->将二进制数据写入文件
        "a"-->写操作,追加
    encoding-->文本的编码方式
    utf—8:几乎支持所有的语言文字
    gbk:只支持英文
    

    2.读文件
    文件对象.read() 返回读到的内容(字符串或者二进制)
    文件对象.redline() 读一行
    文件对象.readlines()返回一个列表,列表中的内容是文件中的每一行
    读文件会有位置信息,读完文件后再读就是空
    3.写文件
    "w"-->将字符串写入文件中,会覆盖原来的内容
    文件对象.write("")
    "a"-->追加内容(文件末尾)

    4.关闭文件
    文件对象.close()

    相关文章

      网友评论

          本文标题:day11_文件操作

          本文链接:https://www.haomeiwen.com/subject/egowaftx.html