python运维开发(十)----IO多路复用多线程、进程、协程

内容目录:

  • python作用域
  • python2.7和python3.5的多继承区别
  • IO多路复用
  • 多线程、进程、协程

python作用域

 python中无块级作用域

if 1 == 1:
    name = ‘jabe‘

    print(name)
#可以正常输出jabe

#在python中无块级作用域
#在c#或者java中是不能这样使用的,提示name未定义的

python中以函数为作用域

def func():
    name = ‘jbae‘
func()
print(name)

#会提示name为定义的报错,说明在python中以函数为作用域的

 python作用域链由内想外找,直到找不到报错

name = ‘jabe‘
def f1():
    # name = ‘a‘
    def f2():
        # name = ‘b‘
        print(name)
    f2()
f1()

#输出
jabe

函数执行前,作用域(链)已经确定

name = ‘jabe‘

def f1():
    print(name)

def f2():
    name = ‘ljb‘
    f1()

f2()
输出:
jabe
#===============================
name = ‘jabe‘

def f1():
    print(name)

def f2():
    name = ‘ljb‘
    return f1

ret = f2()
ret()
输出:
jabe  

lambda函数作用域

li = [lambda :x for x in range(10)]
r = li[0]()
print(r)
print(‘===================‘)
#输出为9,上面的例子等同于下面的代码

li = []
for i in range(10):
    def f1():
        return i
    li.append(f1)
#li 为列表,内部的元素为相同功能的函数
print(li[0]())
print(li[1]())
print(li[2]())
print(li[3]())

#输出:
# 9
# ===================
# 9
# 9
# 9
# 9

由于函数为被调用时是未被执行的,所以当循环结束时i为9,最后调用时候显示均为9

上面的函数我们稍作更改就可以打印的不为9了

li = []
for i in range(10):
    def f1(x=i):
        return x
    li.append(f1)

#li 为列表,内部的元素为相同功能的函数

print(li[0]())
print(li[1]())
print(li[2]())
print(li[3]())

#输出:
# 0
# 1
# 2
# 3

上面的例子中因为每次执行循环,将i值赋给x,因此打印的为0,1,2,3

python2.7和python3.5的多继承区别

我们从以前学过的知识中可以知道,python3.5类的多重继承顺序为从左到右,由下到上的顺序来继承寻找的。

在python2.7中,如果为新式类和py3.5中是寻找的顺序是一样的,但是经典类的继承顺序稍有不同,一直深层寻找,直到找到为止,不会向右边寻找。

不继承object是经典类,继承object是新式类 (和py3中一致)

IO多路复用

多线程、进程、协程

时间: 2024-08-04 18:37:58

python运维开发(十)----IO多路复用多线程、进程、协程的相关文章

python运维开发(十二)----rabbitMQ、pymysql、SQLAchemy

内容目录: rabbitMQ python操作mysql,pymysql模块 Python ORM框架,SQLAchemy模块 Paramiko 其他with上下文切换 rabbitMQ RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统.他遵循Mozilla Public License开源协议. MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它们.消

python运维开发(十六)----Dom&&jQuery

内容目录: Dom 查找 操作 事件 jQuery 查找 筛选 操作 事件 扩展 Dom 文档对象模型(Document Object Model,DOM)是一种用于HTML和XML文档的编程接口.它给文档提供了一种结构化的表示方法,可以改变文档的内容和呈现方式.我们最为关心的是,DOM把网页和脚本以及其他的编程语言联系了起来.DOM属于浏览器,而不是JavaScript语言规范里的规定的核心内容. 查找元素 直接查找 document.getElementById 根据ID获取一个标签 doc

python运维开发(十五)----scripts

内容目录: HTML补充 javascript HTML补充 1.display标签 display的inline-block 属性会自动带3px的宽度 <span style="display: inline-block;width: 80px;height: 50px;background-color: #00a2ca"> </span> <span style="display: inline-block;width: 80px;heigh

重磅|0元学 Python运维开发,别再错过了

51reboot 运维开发又双叒叕的搞活动了,鉴于之前 51reboot 的活动反馈,每次活动结束后(或者已经结束了很长时间)还有人在问活动的事情.这一次小编先声明一下真的不想在此次活动结束后再听到类似下面的话了 我之前不知道有活动 (这个锅小编我背了) 这个活动还有吗? 我想了解一下这个活动 跟我说可以给我按活动价算吗? .......... 针对以上类似的询问小编在此统一回复大家: 好了,接下来进入今天的重中之重 本次活动:Python 运维开发——18天训练营 本课程为:网络班+面授班(北

python运维开发笔记4

1.函数如何被调用,通过return返回值来调用 2.生成器和return区别 yield 生成器返回对象,可以迭代 可以执行 glob模块 类似shell中的正则匹配 shlex模块  Popen 将命令参数直接分词 cmd = "ps ax -o pid,ppid,cmd" shlex.split(cmd) ['ps','ax','-o','pid,ppid,cmd'] ['mysql','-u','root','-p123','-e','show processlist'] p

python运维开发笔记5

diff -Nur Diff和patch是Linux标配的工具.在Windows上,也有移植的版本可以使用. 使用中注意: 1.保证文件名完全相同,避免只有大小写不同的文件存在. 2.Diff只能比较文本文件,二进制文件只能判断是否相同,不能记录差异.Diff根据文件的前几个字节判断文件是不是文本文件. 使用方法: 可以对单个文件或者整个目录树进行处理. 以最实用的方式举例: diff –Nur dir_old dir_new > dir.patch patch –p0 < dir.patch

Python运维开发基础

Python基础知识分为以下几块 1.Python概述 2.基础语法 3.数据结构 4.Python进阶 5.实训案例 一.Python概述 1.Python简介 2.Hello World 3.搭建开发环境 4.习题 Python简介 尽管我是学计算机出身的,但是我对Python的认识是在毕业后.Python是我喜欢的语言,简洁,优美,容易使用.重要的一点是他是开源的项目. 官方网站 https://www.python.org 学习网站 http://www.okpython.com 对于简

Python运维开发基础01-语法基础【转】

开篇导语 整个Python运维开发教学采用的是最新的3.5.2版,当遇到2.x和3.x版本的不同点时,会采取演示的方式,让同学们了解. 教学预计分为四大部分,Python开发基础,Python开发进阶,Python网页编程,Python项目实战 Python开发基础分为语法基础篇,文件基础篇,函数基础篇,模块基础篇 语法基础篇中,我着重希望训练同学的是作为开发应该具备的一种逻辑思路. 文件基础篇中,我们需要练习的是如何将数据永久性的存储在硬盘上,提供读,写. 函数基础篇中,我重点是要引导同学们构

Python运维三十六式:用Python写一个简单的监控系统

市面上有很多开源的监控系统:Cacti.nagios.zabbix.感觉都不符合我的需求,为什么不自己做一个呢 用Python两个小时徒手撸了一个简易的监控系统,给大家分享一下,希望能对大家有所启发 首先数据库建表 建立一个数据库“falcon”,建表语句如下: 1 CREATE TABLE `stat` ( 2 `id` int(11) unsigned NOT NULL AUTO_INCREMENT, 3 `host` varchar(256) DEFAULT NULL, 4 `mem_fr