在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化。如何在运行时根据对象的状态来透明地更改对象的行为?而不会为对象操作和状态转化之间引入紧耦合?允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了其行为。一,结构:二,示例代码:publicinterfaceState{publicvoidhandle(Contextcontext);}classConcreteStateAimplementsState{publicvoi
系统 2019-08-12 09:29:27 1940
上一章中已经讲到连接两个字符串的一种方法。复习一下:复制代码代码如下:>>>a='py'>>>b='thon'>>>a+b'python'既然这是一种方法,言外之意,还有另外一种方法。连接字符串的方法2在说方法2之前,先说明一下什么是占位符,此前在讲解变量(参数)的时候,提到了占位符,这里对占位符做一个比较严格的定义:来自百度百科的定义:顾名思义,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号。根据这个定义,在python里面规定了一些占位符
系统 2019-09-27 17:56:04 1939
最近新需求来了,要给系统增加几个资源权限。尽量减少代码的改动和程序的复杂程度。所以还是使用装饰器比较科学之前用了一些登录验证的现成装饰器模块。然后仿写一些用户管理部分的权限装饰器。比如下面这种defpermission_required(permission):defdecorator(f):@wraps(f)defdecorated_function(*args,**kwargs):ifnotcurrent_user.can(permission):ab
系统 2019-09-27 17:55:30 1939
__str__的用法在python中方法名如果是__xxxx__()的,那么就有特殊的功能,因此叫做“魔法”方法当使用print输出对象的时候,只要自己定义了__str__(self)方法,那么就会打印从在这个方法中return的数据e.g1classCat:"""定义了一个Cat类"""#初始化对象def__init__(self,new_name,new_age):self.name=new_nameself.age=new_agedef__str__
系统 2019-09-27 17:55:09 1939
当我们的函数接收参数为任意个,或者不能确定参数个数时,我们,可以利用*来定义任意数目的参数,这个函数调用时,其所有不匹配的位置参数会被赋值为元组,我们可以在函数利用循环或索引进行使用deff(*args):#直接打印元组参数print(args)print('-'*20)#循环打印元组参数[print(i)foriinargs]...#传递一个参数f(1)print('='*20)#传递5个参数f(1,2,3,4,5)示例结果:(1,)----------
系统 2019-09-27 17:55:07 1939
Python函数编程——函数简介引子现在老板让你写一个监控程序,24小时全年无休的监控你们公司网站服务器的系统状况,当cpu\memory\disk等指标的使用量超过阀值时即发邮件报警,你掏空了所有的知识量,写出了以下代码whileTrue:ifcpu利用率>90%:#发送邮件提醒连接邮箱服务器发送邮件关闭连接if硬盘使用空间>90%:#发送邮件提醒连接邮箱服务器发送邮件关闭连接if内存占用>80%:#发送邮件提醒连接邮箱服务器发送邮件关闭连接上面的代码实
系统 2019-09-27 17:55:03 1939
本文原创并首发于公众号【Python猫】,未经授权,请勿转载。原文地址:https://mp.weixin.qq.com/s/-f...Python是一门强大的动态语言,那动态体现在哪里,强大又体现在哪里呢?除了好的方面,Python的动态性是否还藏着一些使用陷阱呢,有没有办法识别与避免呢?沿着它的动态特性话题,猫哥有几篇文章依次探及了:动态修改变量、动态定义函数、动态执行代码等内容,然而,当混合了变量赋值、动态赋值、命名空间、作用域、函数的编译原理等等内
系统 2019-09-27 17:55:00 1939
文章目录1.函数的执行流程1.1.字节码了解压栈过程1.2.嵌套函数的压栈2.递归2.1.递归函数2.2.递归的性能2.3.递归的优化2.4.间接递归2.5.递归总结3.匿名函数4.Python生成器4.1.基本结构4.2.使用场景4.3.协程coroutine4.4.yieldfrom1.函数的执行流程函数的执行需要对函数进行压栈,什么是压栈呢,简而言之就是在函数执行时在栈中创建栈帧存放需要的变量以及指针的意思。具体涉及的知识非常多,这里就以一个Pyth
系统 2019-09-27 17:54:56 1939
阅读更多注:笔记2已补全#首字母大写.title()#.append()方法:可在列表或元组末尾添加元素主要在for循环中常用#在提列表元素是的索引是从0开始,负数表示倒数,没有索引则默认是第一个元素或者最后一个元素#列表排序详细在笔记1中###for循环##可参考笔记2#for**in**:下的代码缩进则表示要循环,没缩进则不循环#“:”一定要带上#创建不同类型的数值列表a=list(range(2,5,1))#(A,B,c)指的是从A开始数(包括A)往
系统 2019-09-27 17:54:54 1939
先来说一说HTTP的异常处理问题。当urlopen不能够处理一个response时,产生urlError。不过通常的PythonAPIs异常如ValueError,TypeError等也会同时产生。HTTPError是urlError的子类,通常在特定HTTPURLs中产生。1.URLError通常,URLError在没有网络连接(没有路由到特定服务器),或者服务器不存在的情况下产生。这种情况下,异常同样会带有"reason"属性,它是一个tuple(可以
系统 2019-09-27 17:54:51 1939