zoukankan      html  css  js  c++  java
  • Python全栈开发day5

    一、lambda表达式

        对于简单的函数,存在一种简便的表示方式,即:lambda表达式

    1
    2
    3
    >>> shaw = lambda x,y:x + y
    >>> shaw(1,2)
    3

    二、python内置函数

        http://www.cnblogs.com/opsedu/p/5573512.html

    三、文件操作

        打开文件--->操作文件--->关闭文件

        f.tell()   获取指针位置

        f.seek()   调整指针位置

        f.flush()  把内存中数据写入到磁盘

        f.read()   读取所有的内容,可以加从参数

        f.readline()      读取一行数据

        f.readlines()     生产一个列表(每行为一个元素)

        f.trncate()   截取指定内容(依据指针)

        open(文件名,模式,编码)

        文件打开模式:

            r   只读模式(默认)

            w   只写模式(不可读,不存在则创建,存在则清空内容)

            x   只写模式(不可读,不存在则创建,存在则报错)

            a   追加模式(不可读,不存在则创建,存在则只追加内容)

    1
    2
    3
    4
    5
    6
    7
    f = open('passwd.txt')
    data = f.read()
    f.close()
    print(data)
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    sam
    222

         ‘+’表示可以同时读写

           r+  读写(可读:按照指针位置读取,可写:按照指针的位置往后写)

           w+  写读(可读,可写)先清空文件,后来再写(写完指针到最后),然后才可以读

           x+  写读(可读,可写)文件存在,则报错

           a+  写读(可读,可写)文件打开的同时,指针已经移到最后,

    1
    2
    3
    4
    5
    6
    7
    8
    f = open('passwd.txt','r+')
    for line in f:      # 按行读取,直到文件被读完
        print(line)
    f.close()
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    sam
      
    222

        ‘b’表示以字节的方式操作

           rb == r+b

           wb  ==w+b

           xb  ==x+b

           ab  ==a+b

    1
    2
    3
    4
    5
    6
    f = open('passwd.txt','rb')
    data = f.read()
    f.close()
    print(data,type(data))
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    b'sam 222 ' <class 'bytes'>

        打开文件的另一种方式,不用手工关闭文件(并且支持同时打开两个文件)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    with open('passwd.txt','r+') as f,open('shaw.log','w+') ash:
        for line in f:
            h.write(line)
        h.seek(0)
        data = h.read()
        print(data)
    C:Python35python.exe F:/PyCharm/Python/PY_learn/lianxi.py
    sam
    222

    小结:函数可以作为另一个函数的参数传递

    1
    2
    3
    4
    5
    6
    7
    8
    9
    def shaw(args):
        print(args)
        return True
      
    def s2():
        print('haha')
        return True
      
    shaw(s2)

    四、冒泡排序

        它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误(即不符合你所需要的条件)就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。

      

    示例:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    s = [12,3,56,78,9,34]
    print(s)
    for l in range(len(s)):
        for i inrange(len(s) - 1):
            if s[i] >s[i + 1]:
                mid =s[i]
                s[i] =s[i + 1]
                s[i + 1]= mid
    print(s)

    五、递归

        程序不断调用自己,当完成某个条件,退出

      

    1
    2
    3
    4
    5
    6
    def s(a,b):
        print(a)
        c = a + b
        s(b,c)
      
    s(0,1)

    递归实例:利用递归获取斐波那契数列中的第 10 个数,并将该值返回给调用者

    1
    2
    3
    4
    5
    6
    7
    8
    def s(deep,a,b):
        if deep == 10:
            return a
        c = a + b
        h = s(deep +1,b,c)
        return h
    ret = s(1,0,1)
    print(ret) 

    六、python装饰器

        简单理解:在不改动原代码的情况下,对当前函数添加某些功能。

        原理:给原函数重新赋值到装饰器的内层函数,执行过程中装饰器的内层函数又调用了原函数,这样就做到了,在执行原函数之前和之后,还可以做些事情

      

    1、执行装饰器(函数),并且将原函数的函数名,当做参数

    2、将装饰器(函数)的返回值重新赋值给原函数

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    #!/bin/envpython
    #-*- coding:utf-8 -*-
    defwai(func):
        def nei(*args, **kwargs):
           print('在原函数前添加的新功能')
            ret = func(*args, **kwargs) # 原函数
            print('在原函数后添加的新功能')
            return ret
      
        return nei
      
    @wai
    defindex(a1, a2):
        print('函数主体')
        return a1 + a2
      
    index(1,2)
    C:Python35python.exeF:/PyCharm/Python/PY_learn/lianxi.py
    在原函数前添加的新功能
    函数主体
    在原函数后添加的新功能
  • 相关阅读:
    第一个springboot程序,初识springboot
    创建一个简单的springBoot项目的两种方式
    vue过程中遇到的Uncaught (in promise) TypeError: Cannot read property '$message' of undefined
    springboot redis的db动态切换没有作用
    docker redis chown: changing ownership of '.': Permission denied
    axios url携带参数问题(params与data的区别)
    docker安装mysql8.0并挂载到主机
    android与服务器的登录验证与安全设计
    团队冲刺10 5.11
    构建之法01
  • 原文地址:https://www.cnblogs.com/opsedu/p/5573534.html
Copyright © 2011-2022 走看看