内置函数和反射

三元运算

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)





 
posted @ 2016-07-11 19:17  BigBao的博客  阅读(251)  评论(0编辑  收藏  举报