Python中@propery 使用

Python中@propery 装饰器的使用 python是面向对象的语言,当我们想在类中封装一个变量,并提供设置和获取值的时候,往往会使用如下方法。 class Student: def __init__(self, score): self.__score = score def get_score(self): return self.__score def set_score(self, score): self.__score = score 然后如下输出 >>> s = Student(99) >>> s.get_score() 99 >>> s.set_score(100) >>> s.get_score() 100 这是最简单的封装,但有没有像s.score这样属性直接调用s.score = 100直接赋值的呢,有!而且很简单。 class Student: def __init__(self, score): self.score = score 没错就是__init__方法直接设置。 >>> s = Student(99) >>> s.score 99 >>> s.score = 100 >>> s.score 100 以上的方法没有封装,而且如果我想要判断score的值范围(0~100)也无法做到,使用第一种set_score倒是可以做到。 class Student: def __init__(self, score): self.set_score(score) def get_score(self): return self....

October 8, 2017 · 1 min · 204 words · Fython

《在宇宙间不易被风吹散》

《在宇宙间不易被风吹散》 一日茶,一夜酒,一部毫不掩饰的小说,一次没有目的的见面,一群不谈正经事的朋友,用美好的器物消磨必定留不住的时间。所谓本质一直就在那里,本一不二。 《在宇宙间不易被风吹散》是冯唐2016年出版的杂文集。他是个高产的作家其实不止是个靠文字为生的读书人更是个投资人、前麦肯锡合伙人、战略管理顾问等等只是爱好文字业余写作,最近有《搜神记》在预售。 冯唐算是最近两年比较火的作家特别是翻译了《飞鸟集》从翻译到下架到召回之后。由于翻译的很青春荷尔蒙,诗中到处充斥着“裤裆”、“舌吻”、“他妈”等词不符合大众对诗“信、达、雅”的标准被出版商下架召回。有时也出现在各种电视节目上《铿锵三人行》《搜神记》。 书的封面骚气十足,他怀抱着一位他热爱的妇女,若隐若现够写意。嗯,很“冯唐”!不会是又一部《素女经》、《不二》吧。书名一开始不太理解,书中旧书店一文中说我想,每个像Moskowitz先生一样牛逼的人,都要有个笃定的核,这样在宇宙间才不易被风吹散,仿佛每个伟大的街区都要有家旧书店。而冯唐这本书就是证明他有一颗笃定的核的书。 书是一篇篇杂文、随笔组成的,在序分中他说这本书,就和各位简单分享我理解的东方美学。,书中大部分文章介绍他玩各种器物的心得和体会加冯唐体依旧自恋。当然逼格要高煮茶要用日本龙文堂造铁壶、喝茶要用北宋建窑兔毫盏、手表要戴百达翡丽、相机要莱卡M9全幅画旁轴加50mm定焦饼干镜头、戴白玉扳指用他的话说就是用美好的器物消磨必定留不住的时间。用他扎实的文字功底加非常人的见识描述出来,世俗绝不庸俗。挺喜欢他文字中的那点“坏”或者说那点“黄”和肿胀,带着点痞子气。 除了这些美好的器物他在“跑步,让自己和身体尽人力”中说坚持运动跑步的好处甜睡、去烦、放下等,在”大学教育 我在协和学到的十件事”中说硬着头皮学些暂时不觉的有用的知识有什么用所学过的知识,哪怕基本都忘了,如果需要,我们知道去哪里找。因为我们学过,我们知道这些知识存在,我们不容易狭隘,不狭隘往往意味着不傻逼。乔布斯说要相信会有一天这些零碎的知识会串联起来帮助你。在“财富观 富二代的自我修养”中如果我只能追求一种名牌,我一定追求教育上的名牌:上最好的大学,读最有名的名著。这些都是该汲取的地方。 还自恋地回应了下为什么这么自恋“能做到实事求是的自恋其实是自信和自尊,任何领域做到最好之后,人只能相信自己的判断,只能自恋。” 全文完。

July 27, 2017 · 1 min · 11 words · Fython

Python3 协程(Coroutine) 与 asyncio

Python3 Coroutine(协程) 与 asyncio 协程,又称微线程,纤程,英文名 Coroutine。协程的作用,是在执行函数 A 时,可以随时中断,去执行函数 B,然后中断继续执行函数 A(可以自由切换)。但这一过程并不是函数调用(没有调用语句),这一整个过程看似像多线程,然而协程只有一个线程执行。 优势 执行效率极高,因为子程序切换(函数)不是线程切换,由程序自身控制,没有切换线程的开销。所以与多线程相比,线程的数量越多,协程性能的优势越明显。 不需要多线程的锁机制,因为只有一个线程,也不存在同时写变量冲突,在控制共享资源时也不需要加锁,因此执行效率高很多。 说明:协程可以处理 IO 密集型程序的效率问题,但是处理 CPU 密集型不是它的长处,如要充分发挥 CPU 利用率可以结合多进程加协程。 有一篇David Beazley的课程A Curious Course on Coroutines and Concurrency详细讲解了协程和并发的用法,强烈推荐。本篇文章多处参考与此。 0x01. Generator 与 Coroutine 的区别 一开始我总是傻傻分不清Generator和Coroutine的区别感觉这两个东西差不多不一样吗,最近查了点资料并学习了下。在此做记录,我们先来看Generator。 def countdown(n): while n > 0: yield n n -= 1 c = countdown(5) print(c) for i in c: print(i) 返回一个generator object并且可以迭代,详细参考上一篇文章 <generator object countdown at 0x7f82a41739e8> 5 4 3 2 1 [Finished in 0.0s] 如下是Corountine...

May 18, 2017 · 4 min · 674 words · Fython

深入理解 Python中的yield

深入理解 Python3 yield yield是 python 内置的关键字,它能产生一个生成器(Generator)。 0x01. Generators 只要函数中有yield就会变成一个generator object生成器对象,生成器对象可以迭代,但与iterable不同的是它只能迭代一次。先来看一个简单的例子 >>> def foo(): ... yield 1 ... yield 2 ... yield 3 ... >>> g = foo() >>> g <generator object foo at 0x7ffb08326ca8> >>> for i in g: ... print(i) ... ... 1 2 3 >>> for i in g: ... print(i) ... ... >>> 当你调用foo这个函数的时候,函数内部的代码并不立马执行 ,这个函数只返回一个生成器对象,如果有庞大的数据它不像iterable占用内存,会每次调用时才计算产生值。 其实for循环隐式的调用__next__()方法,直到遇到StopIteration停止。 >>> def bar(): ... yield 'a' # 第一次调用next()代码运行到这,产生'a' ... yield 'b' # 第二次调用next()代码运行到这,产生'b' ....

April 28, 2017 · 4 min · 748 words · Fython

Python装饰器(decorators)

Python装饰器(decorators) 装饰器(decorators)是Python强大的功能之一,语法上就支持(@符号)使用起来更方便,不需要用OOP的设计模式实现。装饰器其实就是个返回函数的函数(类),但可以有很多的玩法,下面将一一介绍。 函数(Functions) 讲装饰器之前,先回顾下一些函数的基础知识,装饰器就是这些简单功能的组合 函数接收函数作为参数 python中定义一个函数很简单如下 >>> def foo(): ... pass ... >>> foo <function foo at 0x1054157a0> >>> bar = foo >>> bar <function foo at 0x1054157a0> 定义了foo函数,而bar是对foo的引用,这很简单 因为python中一切皆对象,函数也是对象,一个函数也可以使用函数作为参数传入,和传其他对象一样(字符串、数字、列表 …) >>> def foo(): ... print("hello world") ... ... >>> def bar(f): ... print(f"call {f.__name__}") ... f() ... ... >>> bar(foo) call foo hello world bar函数就接收foo函数作为参数,内部执行foo函数。 函数内部定义函数 也可以在函数内部定义一个新的函数 >>> def foo(): ... def bar(): ... print("inner func") ... bar() ... ....

April 10, 2017 · 5 min · 902 words · Fython