把Git Bash要记忆的东西整理了下
设置用户名邮箱
No results found
把Git Bash要记忆的东西整理了下
设置用户名邮箱
将组成函数的语句和这些语句的执行环境打包在一起时,得到的对象就是闭包。
我们看一个例子
foo.py
函数实际上是不执行任何有意义的计算,它只是创建和返回函数get()
如果需要在一个函数中保持某个状态,使用闭包是一种非常高效的行为。
|
|
语句yield使得函数返回一个生成器,每次调用next()时。生成器函数将不断执行语句,直至遇到yield语句。
这种使用yield语句的函数成为协程,它的执行是为了响应发送给它的值。
每次开始的next()函数时必不可少的
可以编写一个装饰器
可用.close()关闭。关闭后如果继续调用.send()就会引发StopIteration异常
可以使用throw(exctype[,value[,tb]])方法在协程内部引发异常。
exctype是指异常类型
value是指异常的值
tb是指跟踪对象
协程还可以同时接受和发出返回值
在这个例子中,程序要处理的是顶级目录“www”的所有子目录中的所有“access-log”文件中的所有行。程序将测试每个”access-log”文件的文件压缩情况,然后使用正确的文件打开器打开它们。程序将各行连接在一起,并通过查找子字符串”python”的过滤器进行处理。整个程序是由位于最后的for语句驱动的。该循环的每次迭代都会通过管道获得一个新值并使用之。此外,这种实现占用内存极少,因为它无需创建任何临时列表或其他大型的数据结构
在这个例子中每个协程都发送数据给在它们的target参数中指定的另一个协程。和生成器的例子不同,执行完全由將数据发送到第一个协程find_files()中来驱动。接下来,这个协程将数据转人下一阶段。这个例子有一个关键的地方,即协程管道永远保持活动状态,直到它显式调用close()方法为止。为此,只要需要,程序可以不断地给协程中注人数据。
|
|
|
|
|
|
先明确一点,在Python中类(是类Class,不是对象或实例Object)同样也是一种对象。
只要你使用关键字class,Python解释器在执行的时候就在内存中创建一个对象,名字就是ObjectCreator。这个对象(类)自身拥有创建对象(类实例)的能力,而这就是为什么它是一个类的原因。
类的本质是一个对象,这就意味着你能对它作如下操作:
1) 你可以将它赋值给一个变量
2) 你可以拷贝它
3) 你可以为它增加属性
4) 你可以将它作为函数参数进行传递
因为类也是对象,你可以在运行时动态的创建它们,就像其他任何对象一样。
使用class语句定义新类时,将会发生很多事情。首先,类主体将作为其自己的私有字典内的一系列语句来执行。语句的执行与正常代码中的执行过程相同,只是增加了会在私有成员(名称以_开头)上发生的名称变形。最后,类的名称、基类列表和字典将传递给元类的解构函数,以创建相应的类对象。下面的例子演示了这一过程:
type函数能够让你知道一个对象的类型是什么。
但是type函数还有一种完全不同的能力,它也能动态的创建类。
type(类名, 父类的元组(针对继承的情况,可以为空),包含属性的字典(名称和值))
元类就是用来创建类的“东西”。
我们已经学习到了Python中的类也是对象。好吧,元类就是用来创建这些类(对象)的,元类就是类的类。
函数type实际上是一个元类
那么,怎么样才能让python用元类来生成类呢。
你可以在写一个类的时候为其添加metaclass属性。
在Python中,创建Foo类的时候。Python会找Foo中有metaclass这个属性吗?如果是,Python会在内存中通过metaclass创建一个名字为Foo的类对象。如果Python没有找到metaclass,它会继续在父类中寻找metaclass属性,并尝试做和前面同样的操作。如果Python在任何父类中都找不到metaclass,它就会在模块层次中去寻找metaclass,并尝试做同样的操作。如果还是找不到metaclass,Python就会用内置的type来创建这个类对象。
问题是,我们可以在metaclass中放置些什么代码呢。
答案就是:可以创建一个类的东西。那么什么可以用来创建一个类呢?type,或者任何使用到type或者子类化type的东东都可以。
假想一个很傻的例子,你决定在你的模块里所有的类的属性都应该是大写形式。
|
|
现在回到我们的大主题上来,究竟是为什么你会去使用这样一种容易出错且晦涩的特性?好吧,一般来说,你根本就用不上它:
元类的主要用途是创建API。一个典型的例子是Django ORM。它允许你像这样定义:
这并不会返回一个IntegerField对象,而是会返回一个int,甚至可以直接从数据库中取出数据。这是有可能的,因为models.Model定义了metaclass, 并且使用了一些魔法能够将你刚刚定义的简单的Person类转变成对数据库的一个复杂hook。Django框架将这些看起来很复杂的东西通过暴露出一个简单的使用元类的API将其化简,通过这个API重新创建代码,在背后完成真正的工作。
阅读自爆栈网的一篇文章后有感做的笔记
原文:What is a metaclass in Python
今年夏天真不平静,厄尔尼诺现象带来了令人措手不及的洪涝。电视机上充斥着里约奥运与湖北洪水的消息。更想不到的是,刚回到宿舍就下起了大雨,看着大雨的阵势,仿佛要下一个星期。学校老旧的排水系统,使得暴雨不仅没有起到冲刷大地的作用,反而使得学校水漫金山起来。
舍友陆续回来,续而就是宵夜。没有长谈,也仅仅是寒暄几句。除了迷茫,还是迷茫。
儿时心情总是随着上学的到来而变坏,这种“习惯”直到今天还没有消失。雨天由甚。
我想大概没有比下着暴雨的仲夏夜更适合爵士的时候了。Toots Thielemans的一曲《Old Friend》似乎比欢快的Swing Jazz更适合这个夜晚。《Chez Tools》这张French味专辑里面最不French的曲,《Old Friend》让我好像看到了一年后身边朋友各奔东西的唏嘘场景。
回忆是美好,但是还没到来便开始起了回忆,似乎就有那么一点讽刺了。
就在写这篇文章的前几天,Toots Thielemans在家乡布鲁塞尔的一个医院里平静离世。享年94岁。
|
|
|
|
解压后
查看ini的位置。然后看看是否存在ini。如果没有去编译好的源码里面复制一个
|
|
也把php-fpm配置文件复制
|
|
运行php-fpm
|
|
nginx.conf配置文件
查看进程的权限
可以看到 使用nginx用户。
下面我们来设置nginx用户各个文件夹的具体权限
可见文件owner是root
我们把文件owner改为nginx
对于linux中的权限
7 | 4 | 4 |
---|---|---|
用户 | 组 | 任何人 |
r+w+x | r | r |
4+2+1 | 4+0+0 | 4+0+0 |
|
|
对于以下目录,要具有7的权限
多媒体上传的目录:/wp-content/uploads/
缓存目录:/.htaccess
/wp-content/cache/
|
|