博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

python 笔记(一)

Posted on 2018-01-17 20:28  哈哈丶大傻瓜  阅读(321)  评论(0编辑  收藏  举报

 

 学习Python基础知识笔记~~~~~~~~~~~~~~~~~

 

(1)generator    生成器

        通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们          仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

        所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,          这种一边循环一边计算的机制,称为生成器(Generator)。

(2)filter             选择器   

        filter函数,接受2个参数,一个已定义的函数或lambda表达式,和一个可迭代的对象

        他的作用过程是,将第二个可迭代对象的内部参数,一个一个传入function内部使用,如果返回值是True,则加入结果,反之,则不加入

        最终,生成一个迭代器,由所有返回结果为True的元素组成。

(3)decorator     装饰器 

        就是把一个函数当参数传到另一个函数中,然后再回调。根据《函数式编程》中的first class functions中的定义的,你可以把函数当成变量来使用,所以,decorator必需得返          回了一个函数出来给func。同样的,可以有多个decorator或是带参数的decorator。

 (1). yield 生成器
1
def co(n): 2 a, b= 0,1 3 4 while n<5: 5 yield {"{}".format('a'):a,"{}".format('b'):b} 6 a+=1 7 b+=1 8 n+=1 9 c = list(co(2)) 10 print(c) 11 for i in co(2): 12 print(i) 13 14 output: 15 16 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py 17 [{'a': 0, 'b': 1}, {'a': 1, 'b': 2}, {'a': 2, 'b': 3}]18 {'a': 0, 'b': 1} 19 {'a': 1, 'b': 2} 20 {'a': 2, 'b': 3} 21 22 Process finished with exit code 0



(2)filter选择器
 1 a = [i for i in range(10)]
 2 print(a)
 3 def test_filter(s):
 4     if s%2==0:
 5         return True
 6     else:
 7         return False
 8 print(list(filter(test_filter,a)))
 9 
10 
11 output:
12 
13 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py
14 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
15 [0, 2, 4, 6, 8]
16 
17 Process finished with exit code 0

 

 1 import time
 2 # print(time.strftime("%Y-%m-%d %X",time.localtime(int(time.time()))))
 3 def now():
 4     print(time.strftime("%Y-%m-%d %X",time.localtime(int(time.time()))))
 5 # f = now()
 6 f = now
 7 # f()
 8 # print(now.__name__)
 9 # print(f.__name__)
10 
11 def logs(fuc):
12     def wrapper(*args,**kw):
13         print('call {}'.format(fuc.__name__))
14         return fuc(*args,**kw)
15     return wrapper
16 
17 @logs
18 def now_2():
19     print(now())
20 
21 now_2()
22 
23 
24 ########OUTPUT##########
25 
26 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py
27 call now_2
28 2018-01-17 19:43:24
29 None
30 
31 Process finished with exit code 0



2).复杂一点

 1 def log_2(text):
 2     def decorator(func):
 3         def wrapper(*args,**kw):
 4             print("{},{}".format(text,func.__name__))
 5             return func(*args,**kw)
 6         return wrapper
 7     return decorator
 8 @log_2('hello world ! ')
 9 def now_3():
10     print(now())
11 now_3()
12 
13 #######OUTPUT########
14 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py
15 hello world ! ,now_3
16 2018-01-17 19:51:59
17 None
18 
19 Process finished with exit code 0
20 ##################

 

(3)class类型的装饰器

 1 class makeHtmlTagClass1(object):
 2     def __init__(self,tag,css_class=""):
 3         self._tag  = tag
 4         self._css_class = " class='{0}'".format(css_class) \
 5                                            if css_class  !=  ""  else ""
 6 
 7     def __call__(self,fn):
 8         def wrapped(*args,**kwargs):
 9             return "<"+self._tag + self._css_class+">" \
10                    + fn(*args,**kwargs) + "</" +self._tag+">"
11         return wrapped
12 @makeHtmlTagClass1(tag="b",css_class="bold_css")
13 @makeHtmlTagClass1(tag="i",css_class="italic_css")
14 def hello(str):
15     return "Hello , {}".format(str)
16 
17 print(hello("HqIWaS ChAlS"))
18 
19 ######OUTPUT########
20 
21 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py
22 <b class='bold_css'><i class='italic_css'>Hello , HqIWaS ChAlS</i></b>
23 ##################