学习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 defco(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.py17 [{'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 deftest_filter(s):4 if s%2==0:5 returnTrue6 else:7 returnFalse8 print(list(filter(test_filter,a)))9
10
11 output:12
13 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py14 [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 importtime2 #print(time.strftime("%Y-%m-%d %X",time.localtime(int(time.time()))))
3 defnow():4 print(time.strftime("%Y-%m-%d %X",time.localtime(int(time.time()))))5 #f = now()
6 f =now7 #f()
8 #print(now.__name__)
9 #print(f.__name__)
10
11 deflogs(fuc):12 def wrapper(*args,**kw):13 print('call {}'.format(fuc.__name__))14 return fuc(*args,**kw)15 returnwrapper16
17 @logs18 defnow_2():19 print(now())20
21 now_2()22
23
24 ########OUTPUT##########
25
26 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py27 call now_228 2018-01-17 19:43:24
29 None30
31 Process finished with exit code 0
2).复杂一点
1 deflog_2(text):2 defdecorator(func):3 def wrapper(*args,**kw):4 print("{},{}".format(text,func.__name__))5 return func(*args,**kw)6 returnwrapper7 returndecorator8 @log_2('hello world !')9 defnow_3():10 print(now())11 now_3()12
13 #######OUTPUT########
14 F:\spark\python35\python.exe F:/learnPython/weixin/ML/sparklearn.py15 hello world ! ,now_316 2018-01-17 19:51:59
17 None18
19 Process finished with exit code 020 ##################
(3)class类型的装饰器
1 classmakeHtmlTagClass1(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 ""\
10 + fn(*args,**kwargs) + "" +self._tag+">"
11 returnwrapped
12 @makeHtmlTagClass1(tag="b",css_class="bold_css")
13 @makeHtmlTagClass1(tag="i",css_class="italic_css")
14 defhello(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 Hello , HqIWaS ChAlS
23 ##################