• 内置函数


    内置函数

    内置函数之一:lambda表达式

    前面知识回顾:

    三目运算:

    #普通条件语句

      1: if 1 == 1:
    
      2:     name ='曹小贱'
    
      3: else:
    
      4:     name = '曹高田'

    #使用三目运算

      1: name1 = '曹小贱' if 1 == 1 else '曹高田'

    同样的简单的函数也可以使用一种简单的方式,即:lambda表达式

    普通函数:

      1: def func(arg):
    
      2:     return arg + 1
    
      3: result = func(100)
    
      4: print result

    lambda函数:

      1: func1 = lambda a: a + 1
    
      2: result1 = func1(200)
    
      3: print result1

    特性:

    1:处理简单逻辑的函数

    2:自动返回数据,默认使用return

    内置函数之二:map函数

    遍历序列,对序列中的每个元素进行操作,最终获取到新的序列。

    范例:

      1: li = [11,22,33,343]
    
      2: def func(a):
    
      3:     return a + 10
    
      4: new_li = map(func,li)
    
      5: print new_li

    范例:二个序列相加

      1: li = [11,22,33,343]
    
      2: li_1 = [1,2,3,4]
    
      3: new_li = map(lambda a,b:a+b,li,li_1)
    
      4: print new_li

    内置函数之三:filter函数

    对序列的中的元素进行筛选但是只取内容为真的值

      1: li = [11,22,33,343,0,""] 
    
      2: print filter(None,li)
    
      3: 结果:[11, 22, 33, 44, 55, 66]
    
      4: print filter(lambda a:a>33,li)
    
      5: 结果:[44, 55, 66]

    注释:

          0:它是None;空字符串也是None

    内置函数之四:reduce

    对序列中的元素进行累计操作

    特性:

    # reduce的第一个参数,函数必须要有两个参数

    # reduce的第二个参数,要循环的序列

    # reduce的第三个参数,初始值

    image

    范例:

      1: li = [11,22,33,343]
    
      2: result = reduce(lambda a,b:a + b,li)
    
      3: print result
    
      4: 结果:409

    范例二:

      1: li = [11,22,33,343]
    
      2: result = reduce(lambda a,b:a + b,li,1000)
    
      3: print result
    
      4: 结果:1409

    注释:

            给定一个初始值,从1000开始加,想当于1000+第一个数字,然后再加第二个数字

    yeild生成器

    当执行yeild的时候吗,首先冻结函数,记住冻结的位置,下次执行的时候,直接从冻结的地方开始继续执行。

    实例一:不带参数

      1: def func():
    
      2:     yield 1
    
      3:     yield 2
    
      4:     yield 3
    
      5: for i in func():
    
      6:     print i
    
      7: 结果:1 2 3

    实例二:带参数

      1: def func(arg):
    
      2:     seed = 0
    
      3:     while True:
    
      4:         seed += 1
    
      5:         if seed > arg:
    
      6:             return 
    
      7:         else:
    
      8:             yield seed
    
      9: for i in func(4):
    
     10:     print i
    
     11: 结果: 1 2 3 4

    装饰器

    装饰器是函数,只不过该函数可以具有特殊的含义,装饰器用来装饰函数或类,使用装饰器可以在函数执行前和后添加相应的操作

    注释:

           一定要搞清楚,函数中的返回值是一个函数还是一个对象(函数的内存地址)

    范例一:

      1: def wrapper(arg):
    
      2:     if login("cgt"):
    
      3:         return arg
    
      4: def login(user):
    
      5:     if user == "cgt":
    
      6:         return True
    
      7:     else:
    
      8:         print "invalid username"
    
      9: def home():
    
     10:     print "showing the home page"
    
     11: 
    
     12: home = wrapper(home)
    
     13: home()
    
     14: 结果:showing the home page

    注释:

           1:函数home直接写,什么都不加,是他的内存地址。

           2:使用wrapper函数将home的内存地址传给arg

           3:在wrapper中调用login函数进行用户名的判断

    执行过程:

           1:home = wrapper(home),括号中的home是home函数的内存地址,wrapper函数将home的内存地址当作一个实参传递给形参,传给arg。

           2:调用wrapper函数执行,函数中调用login函数,login函数传入的实参cgt传递给login的形参user。执行login函数,判断是否正确,正确返回True给wrapper函数,不正确输出“invalid username”。

           3:wrapper函数接收到login的True返回值后,继续执行,返回arg(还是home函数的内存地址)

           4:home = wrapper(home)接收到wrapper的返回值,home函数的内存地址,将其赋值给home。

           5:home()。执行home函数。

    范例二:

      1: def wrapper(arg):
    
      2:     if login("cgt"):
    
      3:         return arg
    
      4: def login(user):
    
      5:     if user == "cgt":
    
      6:         return True
    
      7:     else:
    
      8:         print "invalid username"
    
      9: @wrapper
    
     10: def home():
    
     11:     print "showing the home page"
    
     12: home()

    注释:

          @wrapper 等于 home = wrapper(home)

    范例三:

    带参数的装饰器

      1: def wrapper(func):
    
      2:     def wrappre2(*args,**kwargs):
    
      3:         user = args[0]
    
      4:         if user == 'cgt':
    
      5:             return func(*args,**kwargs)
    
      6:         else:
    
      7:             return error(user)
    
      8:     return wrappre2
    
      9: 
    
     10: def error(user):
    
     11:     print "authentication failed"
    
     12: 
    
     13: @wrapper
    
     14: def home(username):
    
     15:     print "showing the home page",username
    
     16: 
    
     17: @wrapper
    
     18: def host_list(username,host):
    
     19:     print "showing the  user list page",username,'',host
    
     20: 
    
     21: home('cgt')
    
     22: host_list('cgt','192.168.1.1')
    
     23: 结果:
    
     24: showing the home page cgt
    
     25: showing the  user list page cgt  192.168.1.1

    注释:

          1:home和host_list函数调用的时候,因为他们的函数前面有装饰器,所以要先通过装饰器函数。

    冒泡算法

    范例:

    两个数值或者字符串的进行交换,使用中间变量进行过度

      1: li = [99,22,44,11,77,23]
    
      2: print len(li)  #6
    
      3: for x in range(1,len(li)):
    
      4:     #循环的x等于1,2,3,4,5
    
      5:     for y in range(len(li)-x):
    
      6:         #循环的y等于5,4,3,2,1
    
      7:         num1 = li[y]
    
      8:         num2 = li[y+1]
    
      9:         if num1 > num2:
    
     10:             tmp = num1
    
     11:             li[y] = num2
    
     12:             li[y+1] = tmp
    
     13: print li

     

    作者:曹小贱
             
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
  • 相关阅读:
    What the key facts to choose Row Store and Column Store 沧海
    自定义数据源(ECC>BW) 沧海
    What is SAP HANA appliance software 沧海
    安装BI_CONT时遇到Open Data Extraction Requests的问题 沧海
    Process Chain\DTP\Infopackage相关的几个table和function module 沧海
    Note 741478 FAQ: Materialized views 沧海
    HANA 与 Exalytics 的对比 沧海
    SAP HANA database and how to improve performance 沧海
    SAP HANA 已实施的客户清单 沧海
    BW BEx的VBA开发接口介绍 沧海
  • 原文地址:https://www.cnblogs.com/caoxiaojian/p/4976351.html
Copyright © 2020-2023  润新知