内置函数和反射
三元运算
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)