您的位置:威尼斯官方网站 > 威尼斯正规官网 >     b、提高代码的可读性

    b、提高代码的可读性

发布时间:2019-11-12 15:39编辑:威尼斯正规官网浏览(54)

    一、函数

    1、为啥要用函数

        a、幸免代码重用

        b、升高代码的可读性

    2、函数的调用

       返回值=函数名(参数1,参数2)

       函数定义---再次来到值

       关键字:return

    3、return的作用:

        a、甘休函数的实行

        b、重返要回去的值

    4、再次来到值的三种景况

        a、重回值为None

    图片 1图片 2

    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        print(length)
    
    
    str_len = mylen()
    print(str_len)
    

    不写return

    图片 3图片 4

    def ret():
        print(111)
        return
        print(222)
    
    re = ret()
    print(re)
    

    只写return

    图片 5图片 6

    def ret():
        print(111)
        return None
        print(222)
    
    re = ret()
    print(re)
    

    return None

        b、重回值不为None

             1、再次来到一个值

    图片 7图片 8

    def mylen():
        """计算s1的长度"""
        s1 = "hello world"
        length = 0
        for i in s1:
            length = length+1
        return length
    
    str_len = mylen()
    print(str_len)
    

    回来贰个值

              2、重临三个值

    5、函数的调用----选拔重回值

       a、重返值为None    不收受

       b、重返值不为None

           1、再次来到多少个值

                   用多少个变量选用

           2、再次来到七个值

                   a、用三个变量选择,选取的结果是二个元祖

                   b、有个别许个再次来到值就用略带个值接纳

    6、参数

        a、参数----站在概念函数的角度

             1、地方参数

             2、暗中同意参数

             3、动态参数

                  a、*args

                  b、**kwargs

    种种:地点参数、*args、暗中认可参数、**kwargs

         b、参数----站在调用函数的角度上

             1、依据岗位传参

             2、依据重点字传参

             3、动态传参*tup,**dic

    7、参数分为形参和实参   

         a、实参:调用函数的时候传出的参数

    8、地方参数

         a、地点参数必得传值

    图片 9图片 10

    def aaa(a,b):
        print(a,b)
    aaa(1,2)
    

    职分参数

    9、暗许参数

         a、私下认可参数能够不传值

    图片 11图片 12

    def bbb(x=10):
        print(x)
     bbb()     #x = 10
     bbb(20)  #x = 20
    

    暗中同意参数

    10、动态参数

    图片 13图片 14

    def ccc(*args):#1,2,3,4,5
        print(args)
    
    ccc(1,2,3,4,5)#按位置传参数
    
    t = (1,2,3,4,5)
    ccc(t)  ((1, 2, 3, 4, 5),)
    ccc(*t)  (1, 2, 3, 4, 5)
    复制代码
    

    动态参数

    图片 15图片 16

    def ddd(**kwargs):
        print(kwargs)
    
     ddd(k = 'a',j = 'b')#按关键字传参数
    

    动态参数+关键字参数

    图片 17图片 18

    def eee(*args,**kwargs):
        print(args,kwargs)
    
     eee(12,123)
    

    动态,先按岗位参数,再按首要性字参数

    11、命名空间

         a、命名空间分为三种

                1、全局命名空间

                2、局部命名空间

                3、内置命名空间

         b、三种命名空间的意气风产生机勃勃:内置命名空间>全局命名空间>局地命名空间

         c、取值

               1、在局部调用:局地命名空间->全局命名空间->内置命名空间

    图片 19图片 20

    x = 1
    def f(x):
        print(x)
    
    print(10)
    

    View Code

              2、在全局调用:全局命名空间->内置命名空间

    图片 21图片 22

    x = 1
    def f(x):
        print(x)
    
    f(10)
    print(x)
    

    View Code

    12、作用域

          a、  成效域正是意义范围,根据生效范围能够分为全局功用域和生龙活虎部分作用域。

          b、  全局效用域:富含停放名称空间、全局名称空间,在整个文件的猖獗地点都能被援用、全局有效

          c、局地功能域:局地名称空间,只可以在部分范围生效

    作用域:
    小范围的可以用大范围的
    但是大范围的不能用小范围的
    范围从大到小(图)
    在小范围内,如果要用一个变量,是当前这个小范围有的,就用自己的
    如果在小范围内没有,就用上一级的,上一级没有就用上上一级的,以此类推。
    如果都没有,报错
    

    13、闭包

           a、闭包分为:

                1、闭:内部函数

                2、包:满含对外表函数的效能域中变量的引用

           b、闭包常用的的款式

    图片 23图片 24

    def hei():
        x = 20
        def inner():
            print(x)  #局部的
        return inner
    
    i = hei()
    i()  #全局
    

    闭包常用方式

    14、函数值装饰器

          a、装饰器的本质:闭包函数

          b、装饰器的作用:正是在不转移原函数调用情势的图景下,在这里个函数的内外加上增添功效

    图片 25图片 26

    def timer(func):
        def inner(a):
            start = time.time()
            func(a)
            print(time.time() - start)
        return inner
    
    @timer
    def func1(a):
        print(a)
    
    func1(1)
    

    带参数的装饰器

    15、装饰器的开放密闭原则:

          a、对增添是开放的

          b、对纠便是密封的

    图片 27图片 28

    def timer(func):
        def inner(*args,**kwargs):
            '''执行函数之前要做的'''
            re = func(*args,**kwargs)
            '''执行函数之后要做的'''
            return re
        return inner
    

    装饰器的长久模式

    16、装饰器应用途景

          a、总结func的实行时间

          b、登陆认证

    17、可迭代

          a、字符串,列表,集结,字典,元祖那些度能够for循环,表达他俩是可迭代的

          b、迭代正是:将某些数据集内的数额多少个挨多个的抽出来,就 叫做可迭代

          c、可迭代对应标识:__iter__

    18、迭代商量

          a、指望以此数据类型里的事物也能够运用for被一个一个的收取来,那大家就非得满意for的渴求

          b、可迭代左券——凡是可迭代的个中都有贰个__iter__方法

    19、迭代器合同

          a、迭代器合同 : 中间贯彻了__iter__ __next__方法

     可迭代和迭代器的差别点 : 迭代器多完结了三个__next__方法

     可迭代和迭代器的相符点 : 都得以用for循环

    20、决断迭代器和可迭代的格局 

           a、第生机勃勃种:决断当中是否兑现了 __next__** **

                               '__next__' in dir(o)

           b、第二种

    from collections import Iterable  #可迭代
    from collections import Iterator  #迭代器
    isinstance(o,Iterable)
    isinstance(o,Iterator)
    

    21、生成器

          a、生成器函数:常规函数定义,但是,使用yield语句并非return语句重返结果。yield语句一次回到八个结出,在各样结果中间,

              挂起函数的事态,以便后一次重它离开之处继续奉行

          b、生成器表明式:相同于列表推导,可是,生成器再次来到按需产生结果的二个指标,并非二次营造一个结果列表**

    生成器函数

    图片 29图片 30

    def func():
        print('aaaa')
        a = 1
        yield a    #返回第一个值
        print('bbbb')
        yield 12   #返回第二个值
    ret = func()  #拿到一个生成器
    print(ret)
    print(next(ret)) #取第一个值
    print(next(ret)) #取第二个值
    print(next(ret)) #取第三个值 会报错 因为没有第三个值
    

    生成器函数

    22、列表推导式

    平常:

    图片 31图片 32

    for i in range(100):
        print(i*i)
    

    n*n

    列表推到:

    图片 33图片 34

    l =[i*i for i in range(100)]
    print(l)
    

    n*n

    23、递归函数

         a、在八个函数里调用自个儿

         b、Python递归最大层数节制997

         c、最大层数节制是python暗中认可的,能够做修正,不过不建议您改改

         d、递归实例

    图片 35图片 36

    def age(n):
        if n == 1:
            return 40
        else:
            ret = age(n-1)
            return ret + 2
    age(5)
    

    算年龄

         e、递归停止标记:return

    递归三级菜单

    图片 37图片 38

    menu = {
        '北京': {
            '海淀': {
                '五道口': {
                    'soho': {},
                    '网易': {},
                    'google': {}
                },
                '中关村': {
                    '爱奇艺': {},
                    '汽车之家': {},
                    'youku': {},
                },
                '上地': {
                    '百度': {},
                },
            },
            '昌平': {
                '沙河': {
                    '老男孩': {},
                    '北航': {},
                },
                '天通苑': {},
                '回龙观': {},
            },
            '朝阳': {},
            '东城': {},
        },
        '上海': {
            '闵行': {
                "人民广场": {
                    '炸鸡店': {}
                }
            },
            '闸北': {
                '火车战': {
                    '携程': {}
                }
            },
            '浦东': {},
        },
        '山东': {},
    }
    
    def threeLM(menu):
        for key in menu:
            print(key)
        k = input(">>>")
        if k in menu:
            threeLM(menu[k])
    
    threeLM(menu)
    

    三级菜单

    24、无名氏函数

         a、 无名氏函数 轻便的内需用函数去消除的主题材料 佚名函数的函数体 唯有一行,也叫lambda

         b、 函数名 = lambda 参数 :返回值

         c、参数能够有多个,用逗号隔离,佚名函数不管逻辑多复杂,只好写风流洒脱行,且逻辑实行实现后的内容就是再次来到值。再次来到值和常规的函数相近能够是随机数据类型

    图片 39图片 40

    add2 = lambda x,y : x+y
    ret = add2(1,2)
    print(ret)
    

    View Code

    图片 41图片 42

    l = [1,2,3,4]
    print(list(map(lambda x:x*x , l)))
    

    View Code

    图片 43

    25、内置函数

        a、isinstance  决断变量的数据类型

    temp = "asdfsdfs"  
    
    r = isinstance(temp, list)  
    
    print(r)
    

        b、lambda用法:

    def f1():  
    
        return 123  
    
    f2 = lambda :123  
    
    r1 = f1()  
    
    r2 = f2()  
    
    print(r1,r2)
    
    def f3(a1,a2):  
    
        return a1 + a2  
    
    f4 = lambda a1,a2: a1 + a2  
    
    r3 = f3(1,2)  
    
    r4 = f4(3,4)  
    
    print(r3,r4) 
    

        c、abs--取相对值

    i = abs(-123)  
    
    print(123)
    

        d、divmod  除商得余数---举个例子分页

    a = 10 / 3  
    
    print(a)  
    
    r = divmod(10,3)  
    
    print(r)  
    
    结果:  
    
    3.33333335  
    
    (3,1) 
    

       e、eval  -----强制不转移输入类型的格式

    ret = eval("1 + 3")  
    
    print(ret)  
    
    结果:4 
    

       f、filter (过滤)

    ret = filter(lambda x: x >22, [11,22,33,44])  
    
    for i in ret:  
    
        print(i)
    

      g、map  无论是map如故filter,得到的结果都是可迭代的目的,迭代器的实例

    def f1(x):  
    
        if x % 2 == 1:  
    
           return x + 100  
    
        else:  
    
           return x  
    
    ret = map(f1, [1,2,3,4,5])  
    
    ret2 = map(lambda x: x + 100if x % 2 == 1 else x ,[1,2,3,4,5])  
    
    print(ret)  
    
    for i in ret :  
    
        print(i) 
    

       h、max()最大数 min()  最小数

    li = [11,22,123,1]  
    
    r = max(li)  
    
    print(r)  
    
    a = min(li)  
    
    print(a) 
    

       g、pow(x,y) ----就是求x的y次方

    i = pow(2,100)  
    
    print(i) 
    

       k、zip ---意思便是取多个变量中索引相对应的值

    li1 = [11,22,33,44]  
    
    li2 =["a",'VV',"c","E"]  
    
    r = zip(li1,li2)  
    
    print(r)  
    
    for i in r :  
    
        print(i)
    

      l、、open---打开,关闭,close

    模式    描述
    r      打开一个文件为只读。文件指针被放置在文件的开头。这是默认模式。
    rb     打开一个文件只能以二进制格式读取。文件指针被放置在文件的开头。这是默认模式。
    r+     打开用于读和写文件。文件指针置于该文件的开头。
    rb+    打开用于读取和写入二进制格式的文件。文件指针置于该文件的开头。
    w      打开一个文件只写。如果文件存在覆盖该文件。如果该文件不存在,则创建写入新文件。
    wb     打开一个文件只能以二进制格式写入。如果文件存在覆盖该文件。如果该文件不存在,则创建写入新文件。
    w+     打开文件为写入和读取模式。如果文件存在覆盖现有文件。如果该文件不存在,创建用于读写操作的新文件。
    wb+    打开用于以二进制格式写入和读出文件。如果文件存在覆盖现有文件。如果该文件不存在,创建用于读写操作的新文件。
    a      打开用于追加的文件。文件指针是在文件是否存在该文件的末尾。也就是说,该文件是在追加模式。如果该文件不存在,它会创建一个用于写入的新文件。
    ab     打开文件用于二进制格式追加。文件指针是在文件是否存在该文件的末尾。也就是说,文件是在追加模式。 如果该文件不存在,它会创建一个用于写入的新文件。
    a+     打开文件为追加和读取方式。文件指针是在文件是否存在该文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建用于读写操作的新文件。
    ab+    打开一个文件以附加和二进制格式读取模式。如果该文件存在文件指针在该文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建读写操作的新文件。
    

     

     

     

     

     
    

     

            

     

     

       

     

     

     

           

     

       

    本文由威尼斯官方网站发布于威尼斯正规官网,转载请注明出处:    b、提高代码的可读性

    关键词:

上一篇:没有了

下一篇:如果按下面方法织造引用私有变量