• Python Day3


    本章内容:

    1.集合

    2.Python文件处理

    3.函数

    1.集合(set):

    集合是一个无序的,不重复的数据组合,它的主要作用如下:

    • 去重,把一个列表变成集合,就自动去重了
    • 关系测试,测试两组数据之前的交集、差集、并集等关系

    首先来创建个集合:

    a = set([3,5,6,9])#集合是无序的

    创建一个唯一字符的集合

    b = set("Hello")
    结果
    {'l', 'e', 'H', 'o'}

    发现Hello少了一个l,这是什么情况?

    因为在集合中,集合有一个特点就是去重,去重就是去掉重复的东西

    那咱们来看看集合的字符有哪些?

    | 并集 (就是将a和b的值合并起来) 

    print(a | b)
    s.union(t)  

    & 交集(将a和b之间重复的值打印出来)

    print(a & b)
    s.intersection(t)  

    - 差集(将a和b之间不一样的值打印出来)

    print(a - b)
    s.difference(t)  

    ^对称差集(将a和b所有重复的值去掉,然后把剩下的打印出来)

    print(a ^ b)
    s.symmetric_difference(t)  

    在集合里面添加元素(add)

    a.add(2222)

    批量添加(update

    a.update([1,2,3,444444])

    在集合里面删除元素(remove,pop)

    remove指定删除

    a.remove(2222)

    pop随机删除

    a.pop()
    

    二.Python文件处理

    在工作中,我们也会需要用到用python来打开文件,处理些文件内容,就像windows的记事本一样,可以添加,可以删除,可以修改

    通过python打开一个新文件(open):

    open("xiaohu",encoding="utf-8")
    # _author_=AbeoHu
    f=open("xiaohu",encoding="utf-8")#以utf-8格式打开文件
    f1=f.readline()#默认是第一行
    df = f.read()
    print(f1)#打印第一行
    print("------------------------")
    print(df)#打印剩下的

    那打开文件后,内容是空的,我需要将这个文件的内容写入东西,怎么写?

    我们先来看看文件处理权限的问题:

    打开文件的模式有:

    • r,只读模式(默认)。
    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
    • a,追加模式。【可读;   不存在则创建;存在则只追加内容;】

    "+" 表示可以同时读写某个文件

    • r+,可读写文件。【可读;可写;可追加】
    • w+,写读
    • a+,同a

    "U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

    • rU
    • r+U

    "b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

    • rb
    • wb
    • ab

    在这种模式中,打开文件的时候我们需要关闭文件(.close),还有一种方法是专门自动关闭文件的语法(with)

    with open("xiaohu",'w',encoding="utf-8") as f:
        f.write()

    OK,那我们现在先来实现一些小功能:

    1.在文件的第20行添加一串字符

    2.去掉文件第23行的空行(strip)

    3.打印一个小程序(进度条)(flush,time模块)

    flush刷新

    time模块(定义时间)

    import  sys,time
    for i in range(20):
        sys.stdout.write("#")
        sys.stdout.flush()
        time.sleep(0.1)

     三.函数

    什么是函数?

    函数

    在日常写代码的时候,我们有很多需要重复运用得代码,那每回调用相同代码的时候,我们就可以用函数来代替。

    函数的优势:

    1.减少重复代码

    2.使程序变得可扩展

    3.让程序变得易维护

    首先我们先来定义一个函数:

    def test():
        print("老狗去砍柴")
    test()

    这是一个简单的一个函数定义,那么我们来写一个程序,来调用这个函数:

    def test():
        print("老狗去砍柴")
    print("老狗干嘛去了?")
    test()

    那么,我能从另一个文件中调用函数吗?

    函数的3个面向:

    1 面向对象-------------类------------------class
    2 面向过程-------------过程----------------def
    3 函数编程-------------函数----------------def

    面向过程没有返回值,面向函数有返回值

    那如果函数嵌套函数怎么写?

    # _author_=AbeoHu
    def test():
        print("老狗去砍柴")
    def test1():
        print("老狗去吃饭")
    def test2():
        test()#嵌套第一个函数
        test1()#嵌套第二个函数
    test2()

    函数也可以应用传参:

    传参指的是自己可以传递参数:

    def test(x,y):
        print(x+y)
    test(1,2)

    那如果我在里面定义了x的参数,那他是按照里面的来,还是你传递的参数来指定呢?

    def test(x,y):
        x=4
        print(x+y)
    test(1,2)

    他是按照里面定义的参数来,因为函数在里面已经指定了x的值,所以在调取的时候也不会改变,只会改变没有的值

    2.函数的参数和局部变量:

    形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。因此,形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量

    实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形参。因此应预先用赋值,输入等办法使参数获得确定值

    def test(x,y):#行参
        print(x+y)
    test(1,2)#实参

    默认参数:

    def test(name,age,school):
        print(name,age,school)
    test("小虎","22","linux")
    test("呵呵","22","linux")
    test("AbeoHu","22","linux")

    默认参数指的是按照你函数定义参数的顺序来决定的,一一对应

    关键参数:

    正常情况下,你传递参数的时候按照正常顺序来传参的,那如果想自己定义,可以自己去定义关键参数:

    注意:关键参数一定要放到位置参数的后面

    def test(age,school,name="xiaohu"):
        print(name,age,school)
    test("22","linux")
    test("22","linux")
    test("22","linux")

    非固定参数:

    如果我想在函数后面加很多参数,而且我不是固定的,那么就要用到非固定参数了:

    *args 传入的参数变成元组格式

    def test(name,*args):
        print(name,args)
    test("xiaohu",1,2,3,4,5,6)

    *.arg传入的格式是元组,如果我想传入字典格式:

    **kwargs

    def test(name,**kwargs):
        print(name,kwargs)
    test("xiaohu",qiqi=1,meng=2)

    局部变量:

    局部变量的作用只是在一个作用域当中:

    name = "AbeoHu"
    def change(name):
        print(name)
        name = "AbeoHu bangbangbang"#定义新的变量
        print(name)
    change(name)
    print(name)#在外面打印看看变了没有

    输出:

    AbeoHu
    AbeoHu bangbangbang
    AbeoHu

    name值只是在里面变了,出去函数之后,还是原来的变量,这就是局部变量.

    那怎么将局部变量变成全局变量呢?

    global(慎用)

    全局与局部变量

    在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
    全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
    当全局变量与局部变量同名时:
    在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。
     
    3.返回值
    在函数运行的过程当中,想让他返回一个参数,看看函数运行的对不对(return)

    要想获取函数的执行结果,就可以用return语句把结果返回

    注意:

    1. 函数在执行过程中只要遇到return语句,就会停止执行并返回结果,so 也可以理解为 return 语句代表着函数的结束
    2. 如果未在函数中指定return,那这个函数的返回值为None

    4.递归函数

    什么是递归函数?

    递归函数指的是自己调用自己,咱们之前讲了函数调用其它的函数,那么我们来看看函数递归自己的函数

    5.高阶函数

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

    def add(x,y,f):
        return f(x) + f(y)
    
    
    res = add(3,-6,abs)
    print(res)

     

  • 相关阅读:
    双指针算法_最长连续不重复子列长度
    前缀和_子矩阵的和
    前缀和
    高精度算法_大数除以小数
    高精度算法_大数乘小数
    高精度算法_大数相减
    高精度算法_大数加法
    一维差分矩阵
    二维差分矩阵
    整数二分
  • 原文地址:https://www.cnblogs.com/AbeoHu/p/5747300.html
Copyright © 2020-2023  润新知