大一python笔记_python 笔记(一)

学习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 ##################

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值