Python 基础2

1. __import__的用法

我们知道import语句是用来导入外部模块的,当然还有from...import...也可以,但是其实import实际上是使用builtin函数__import__来工作的。 

    在一些程序中,我们可以动态地去调用函数,如果我们知道模块的名称(字符串)的时候,我们可以很方便的使用动态调用。 

Python代码   收藏代码
  1. import glob,os  
  2.   
  3. modules = []  
  4. for module_file in glob.glob("*-plugin.py"):  
  5.     try:  
  6.        module_name,ext = os.path.splitext(os.path.basename(module_file))  
  7.        module = __import__(module_name)  
  8.        modules.append(module)  
  9.     except ImportError:  
  10.        pass #ignore broken modules  
  11.     #say hello to all modules  
  12.     for module in modules:  
  13.        module.hello()  


使用__import__函数获得特定函数 
Python代码   收藏代码
  1. def getfunctionbyname(module_name,function_name):  
  2.     module = __import__(module_name)  
  3.     return getattr(module,function_name)  


还可以使用这个函数实现延迟化的模块导入 
Python代码   收藏代码
  1. class LazyImport:  
  2.       def __init__(self,module_name):  
  3.           self.module_name = module_name  
  4.           self.module = None  
  5.       def __getattr__(self,name):  
  6.           if self.module is None:  
  7.              self.module = __import__(self.module_name)  
  8.           return getattr(self.module,name)  
  9. string = LazyImport("string")  
  10. print string.lowercase 


1. chain的使用
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. for item in  itertools.chain(listone,listtwo):  
  5.     print item  
输出:a b c 11 22 abc

2. count的使用 
[python]  view plain copy print ?
  1. i = 0  
  2. for item in itertools.count(100):  
  3.     if i>10:  
  4.         break  
  5.     print item,  
  6.     i = i+1       
功能:从100开始数10个数,cout返回一个无界的迭代器,小菜鸟我不会控制了,就引入了一个计数I,让它计数10次。。
输出:100 101 102 103 104 105 106 107 108 109 110
3.cycle的使用
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']   
  4. for item in itertools.cycle(listone):  
  5.     print item,  
打印出a b c a b c a b c a b c a b c a b c a b c a b c a b c...
功能:从列表中取元素,到列表尾后再从头取...
无限循环,因为cycle生成的是一个无界的失代器

4.ifilter的使用
ifilter(fun,iterator)
返回一个可以让fun返回True的迭代器,
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. def funLargeFive(x):  
  5.     if x > 5:  
  6.         return True      
  7. for item in itertools.ifilter(funLargeFive,range(-10,10)):  
  8.     print item,  

结果:6 7 8 9
5. imap的使用
imap(fun,iterator)
返回一个迭代器,对iterator中的每个项目调用fun
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. listthree = [1,2,3]  
  5. def funAddFive(x):  
  6.     return x + 5  
  7. for item in itertools.imap(funAddFive,listthree):  
  8.     print item,  
返回:6 7 8  对listthree中的元素每个加了5后返回给迭代器

6.islice的使用
islice()(seq, [start,] stop [, step])
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. listthree = listone + listtwo  
  5. for item in itertools.islice(listthree,3,5):  
  6.     print item,  
功能:返回迭代器,其中的项目来自 将seq,从start开始,到stop结束,以step步长切割后
打印出:11 22

7.izip的使用
izip(*iterator)
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. listtwo = ['11','22','abc']  
  4. listthree = listone + listtwo  
  5. for item in itertools.izip(listone,listtwo):  
  6.     print item,  
结果:('a', '11') ('b', '22') ('c', 'abc')
功能:返回迭代器,项目是元组,元组来自*iterator的组合

8. repeate
repeate(elem [,n])
[python]  view plain copy print ?
  1. import itertools  
  2. listone = ['a','b','c']  
  3. for item in itertools.repeat(listone,3):  
  4.     print item,  
果:['a', 'b', 'c'] ['a', 'b', 'c'] ['a', 'b', 'c']

9.python里有i++这种语法吗?

python并不支持i++这种整数自增的语法。如果您想要达到类似的效果,您可以使用如下语句。首先,如果您想要使整数i,每次增加1,则有语句 i += 1;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

anssummer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值