zoukankan      html  css  js  c++  java
  • 内置函数和反射

    三元运算

    http://www.cnblogs.com/wupeiqi/articles/4276448.html

    常见的内置函数有:

    help()

    dir()

    vars()

    type()

    import temp

    reload temp()

    id()

    cmp()

    abs()

    bool()

    divmod(x,y)    返回的是他两的商和余数

    max()    只能传列表

    min()

    sum()

    pow(x,y)  x的y次方

    len()

    all()    判断是不是所有的都为真

    any()    判断是不是有真的

    chr()     数字转换成大写字母,从65开始,65代表的就是   A

    ord()    字母转换成数字

    hex()

    bin()

    oct()

    打印列表的下标

    l = ['a','b','c']
    for item in enumerate(l,1):
    print item
    打印出的效果是:
    (1, 'a')
    (2, 'b')
    (3, 'c')

    l = ['a','b','c']
    for item in enumerate(l,1):
    print item[0],item[1]
    打印出的效果是:
    1 a
    2 b
    3 c

    格式化的另一种方式:
    #我们平时格式化的时候用的方法都是%s
    #现在还有另外一种格式化的方法
    s = 'I am {0},{1},{2},{3}' #这就代表有四个可以格式化的参数
    print s.format('bao','zhong','zhao','sun') #这个后面直接传入参数就可以了
    #结果为I am bao,zhong,zhao,sun

    apply(函数名,函数参数)
    apply的作用是调用函数
    例如:
    def foo(arg):
      print arg
    foo('bao')

    还有一种调用函数的方式
    apply(foo,('bao',))
    注意这里的 ,
    号不要忘了


    map()
    用法:map(函数名,序列(即列表或元祖))
    作用:遍历序列中的元素,元素当做参数传入到函数中
    def foo(arg):
    return arg + 100
    l = [1,3,5,7,9]
    temp = map(foo,l)
    print temp

    或者

    Temp = map(lambda arg:arg+100,l)
    print Temp
    
    
    filter()
    作用:过滤序列,需要过滤的条件
    filter()接收一个函数和一个序列,把传入的函数依次作用于每个元素,然后根据返回值是True还是False来决定保留还是丢弃该元素,所以这里的关键是如何根据自己的需求定义一个筛选条件的函数
    def foo(arg):
    if arg > 20:
    return True
    else:
    return False
    print filter(foo,[102,20,1,23,18])


    得到的结果是:[102, 23]
    
    
    reduce()
    reduce是把一个函数作用在一个序列上,但是这个函数必须接收两个参数,reduce把结果接续和序列的下一个元素做累积运算,就看你函数怎么定义了,累加,累乘,累除等
    def fun(x,y):
    return 2**x+y
    print(reduce(fun,[1,2,3,4]))

    zip()
    x = [1,2,3]
    y = [4,5,6]
    z = [7,8,9]
    print zip(x,y,z)
    得到的结果是:
    [(1, 4, 7), (2, 5, 8), (3, 6, 9)]


    这里还有一点得注意了,我们这里x,y,z三个列表的元素个数是相同的,但是元素个数不相同的时候效果就会变成下面这样
    x = [1,2,3]
    y = [4,5]
    z = [7,8,9]
    q = [0,2]
    print zip(x,y,z,q)

    得到的结果就是遮掩的:
    [(1, 4, 7, 0), (2, 5, 8, 2)]


    
    
    eval()
    这个函数的作用就是字符串当做表达式用,
    比如说我们从文件取出一列类似
    2*2
    3*3
    4+8
    3/2
    等等的字符串时,但是现在有个需求要求出他们的数值运算,这个时候eval()函数就派上用场了
    print eval('3*3')

    得到的结果是9

    反射
    文章摘自:http://www.linuxidc.com/Linux/2015-03/115091.htm

    试想一下,当别的程序传入给你写的这段代码一个变量(var=“math”),这个变量是一个字符串,这个字符串是一个模块或者一个模块下的某个方 法,你需要通过变量来导入此模块或者方法,如何导入此模块或方法呢,如果直接执行 import var是会出错的,因为var在你的这段代码中是一个变量, 这时就需要反射, 如何使用反射呢。

    
    

    如果这个变量值是一个模块,可以使用MathModule=__import__(var), 导入后,你可以在你的代码中用MathModule.***来调用math模块下的任意方法

    
    

    当需要获得一个模块下的某个方法时,可以使用getattr,下面有具体的例子。

    
    

    例子,如何导入通过变量导入math模块

    通过变量导入模块

    
    

    module="math"
    MathModule=__import__(module)
    print MathModule.pow(2,4)

    通过变量调用方法

    
    

    例子,如何通过变量导入方法,接上边的代码

    func="pow"

    pow=getattr(MathModule,func)
    print pow(2,4)

    [root@git 724]# cat pow.py
    #!/usr/bin/env python
    module = "math"
    MathModule = __import__(module)
    #print MathModule.pow(2,4)
    func = "pow"
    Pow = getattr(MathModule,func)
    print Pow(2,3)





     
  • 相关阅读:
    Go:错误处理
    Go:闭包
    Go:内置函数
    Go:函数、defer
    mongodb 在PHP中常见问题及解决方法
    PHP 下载apk文件
    阿里云短信服务 PHP
    tp 创建文件并写入数据
    微信小程序中的加载更多(即列表分页)
    百度地图api逆地址解析 PHP
  • 原文地址:https://www.cnblogs.com/smail-bao/p/5661377.html
Copyright © 2011-2022 走看看