内置函数 接下来,我们就一起来看看python里的内置函数。截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。它们就是python提供给你直接可以拿来使用的所有函数。...这些函数有些我们已经用过了,有些我们还没用到过,还有一些是被封印了,必须等我们学了新知识才能解开封印的。那今天我们就一起来认识一下python的内置函数。这么多函数,我们该从何学起呢?...#返回值和正常的函数一样可以是任意数据类型 我们可以看出,匿名函数并不是真的不能有名字。...匿名函数的调用和正常的调用也没有什么分别。...在和其他功能函数合作的时候 l=[3,2,100,999,213,1111,31121,333] print(max(l)) dic={'k1':10,'k2':100,'k3':30} print
number number += step ranger = my_range(1,5) for x in ranger: #可以对它进行迭代 #装饰器 不改变源码的情况下修改已存在函数...把一个函数作为输入并返回另一个函数。...): return a + b cooler_add_ints = document_it(add_ints) #人工赋值 cooler_add_ints(3, 5) #装饰器可以直接写在要被装饰的函数前面...按顺序执行 @document_it def add_ints(a, b): return a + b add_ints(3, 5) #命名空间 locals() 返回一个局部命名空间内容的字典 #只能函数内打印...__name__ #函数名称 function.__doc__ #函数文档 __main__ #主程序
在socket中,如果直接创建的话,是只能接受一个用户的请求 需要实现socketserver中的handle方法,可以实现多进程并发访问 SocketServer内部使用 IO多路复用 以及 “多线程...” 和 “多进程” ,从而实现并发处理多个客户端请求的Socket服务端。...socketserver.BaseRequestHandler): def handle(self): conn = self.request conn.sendall("我是一个多线程...ThreadingTCPServer ThreadingTCPServer实现的Soket服务器内部会为每个client创建一个 “线程”,该线程用来和客户端进行交互。
而在pypy和jpython中是没有GIL的。 Python多线程的工作过程: python在使用多线程的时候,调用的是c语言的原生线程。...),所以python下的多线程对CPU密集型代码并不友好。...所以python的多线程对IO密集型代码比较友好。 使用建议? python下想要充分利用多核CPU,就用多进程。...因为每个进程有各自独立的GIL,互不干扰,这样就可以真正意义上的并行执行,在python中,多进程的执行效率优于多线程(仅仅针对多核CPU而言)。...并且由于GIL锁存在,python里一个进程永远只能同时执行一个线程(拿到GIL的线程才能执行),这就是为什么在多核CPU上,python的多线程效率并不高。
---恢复内容开始--- 一、多进程 1、multiprocessing模块用来开启子进程,并在子进程中执行我们定制的任务(比如函数),该模块与多线程模块threading的编程接口类似。...:42 2018 *所有函数并发执行(注意:在windows中Process()必须放到# if __name__ == '__main__':下#方法二(和上面效果一样) import time...p1=Piao('one') p2=Piao('two') p3=Piao('three') p4=Piao('four') #p.daemon = True(进程守护和线程守护一样...queue.put方法用以插入数据到队列中,queue.get方法用来冲数据队列去除数据(先进先出) 产者消费者模式 生产者消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。...生产者和消费者彼此之间不直接通讯,而通过阻塞队列来进行通讯,所以生产者生产完数据之后不用等待消费者处理,直接扔给阻塞队列,消费者不找生产者要数据,而是直接从阻塞队列里取,阻塞队列就相当于一个缓冲区,平衡了生产者和消费者的处理能力
函数 曾经有一句非常出名的话是 In Unix Everything Is A File,在unix中所有的一切都是文件 在这里可以借鉴一下 In Python Everything Is A Function...,在python程序中,所有的一切都是函数,把所需的功能写成一个一个的函数,然后由函数调用函数,以此类推,最终完成整个程序的功能 记得之前提过暴力破解,不管用什么工具,暴力破解都少不了一个合适的字典,下面编写一个简单的程序... print(u"已在当前目录创建密码文件dict.txt") else: print(u"尚未创建密码文件") def clear(): '''清屏函数
文章目录 函数的参数 用模块管理函数 None 值 关键字参数和 print() 局部和全局作用域 global 语句 定义函数:def 关键字。...函数的参数 在python中,函数的参数可以有默认值,也支持使用可变参数,所以python中并不需要其他语言一样支持 函数的重载(因为定义一个函数的时候可以让它有多种不同的使用方式)。...关键字参数和 print() 关键字参数是由函数调用时加在它们前面的关键字来识别的。关键字参数通常用于可选变元。...在被调用和函数内部定义的变量,属于该函数的局部作用域。...局部变量不能在全局作用域内使用 局部作用域不能使用其他局部作用域内的变量 全局变量可以在局部作用域中读取 Python 在查找一个变量时会按照“局部作用域”、“嵌套作用域”、“全局作用域”和”内置作用域
参考链接: Python中的numpy.not_equal numpy数学函数和逻辑函数 算术运算numpy.add()numpy.subtract()numpy.multiply()numpy.divide...numpy.sin()numpy.cos()numpy.tan()numpy.arcsin()numpy.arccos()numpy.arctan() 指数和对数numpy.exp()numpy.log...()numpy.exp2()numpy.log2()numpy.log10() 加法函数、乘法函数numpy.sumnumpy.cumsumnumpy.prod 乘积numpy.cumprod... numpy.sin() numpy.cos() numpy.tan() numpy.arcsin() numpy.arccos() numpy.arctan() 指数和对数 numpy.exp...聚合函数 是指对一组值(比如一个数组)进行操作,返回一个单一值作为结果的函数。因而,求数组所有元素之和的函数就是聚合函数。ndarray类实现了多个这样的函数。
reduce() reduce函数必须接收两个参数,把一个函数作用在一个序列[x1, x2, x3, ...]上,然后再把结果继续和序列的下一个元素做累积计算。...不同,虽然reduce也是作用于每个元素,但是reduce的作用结果要用在下次和另一个元素做累积计算。...map()和reduce()的结合使用 1 from functools import reduce 2 3 def fn(x, y): 4 return x * 10 + y 5...,接收一个函数和一个序列。...和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返回值是True还是False决定保留还是丢弃该元素。
内置函数 截止到python版本3.6.2,现在python一共为我们提供了68个内置函数。...模块相关__import__ __import__ :函数用于动态加载类和函数 。...,返回当前范围内的变量、方法和定义的类型列表;带参数时,返回参数的属 性、方法列表。...结果为 4 float:函数用于将整数和字符串转换成浮点数。...(calc(10)) 匿名函数格式的说明 函数名 = lambda 参数 :返回值,实参 参数可以有多个,用逗号隔开 匿名函数不管逻辑多复杂,只能写一行,且逻辑执行结束后的内容就是返回 返回值和正常的函数一样可以是任意数据类型
Python多线程,thread标准库。都说Python的多线程是鸡肋,推荐使用多进程。 ? Python为了安全考虑有一个GIL。...并且由于GIL锁存在,python里一个进程永远只能同时执行一个线程(拿到GIL的线程才能执行),这就是为什么在多核CPU上,python的多线程效率并不高。 下面使用多线程加队列做的一个demo。...使用Thread对象的Lock和Rlock可以实现简单的线程同步,这两个对象都有acquire方法和release方法,对于那些需要每次只允许一个线程操作的数据,可以将其操作放到acquire和release...锁有两种状态——锁定和未锁定。...线程优先级队列 Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。
Python学习记录-多进程和多线程 [TOC] 1....4)调度和切换:一个线程可以控制和操作同一进程里的其它线程,但是进程只能操作子进程;线程上下文切换比进程上下文切换要快得多。 5)在多线程OS中,进程不是一个可执行的实体。...2. threading模块 线程有2种调用方式,如下: 直接调用 import threading import time def sayhi(num): # 定义每个线程要运行的函数...__init__(self) self.num = num def run(self): # 定义每个线程要运行的函数 print("running on number...python多线程不适合CPU密集型的任务,适合IO密集型的任务。
Python多任务其实有多线程、多进程和协程三种实现方法,但是协程一般只在性能要求特别高的情况下使用,并且在实现上相对于多线程和多进程要复杂一些,所以不在这里写,以后单独为协程写一篇笔记。...多线程 目标函数 在实际编写多线程之前,要先编写一个函数作为多任务的目标函数。在这里我以一个爬虫函数作为目标函数。...下面的样例代码中同时写了有互斥锁和没有互斥锁两种函数 以下代码写在multi_thread_lock.py中 ```python """ 对一个数字进行多次累加,可以观察到在多线程情况下, 如果不加互斥锁...编发编程》 这个教程非常详细的介绍了关于python多任务的细节和案例,十分推荐 Python的官方文档 毕竟所有的其他文档都来源这里 廖雪峰的Python教程——进程和线程 这里面关于进程和线程本身的解释比较好...,但是关于Python中的多人介绍有点旧了 刘江的Python教程——多线程和多进程 示例代码比较好,对于各种常见的方法也有比较详细的解释
多线程 基本实现: 第一种,函数方式 # -*- coding:utf-8 -*- import thread import time def print_time(threadName, delay)...queue_lock.release() while not work_queue.empty(): pass exit_flag = 1 for t in threads: t.join() 这里的join函数重点解释下...: join的原理就是依次检验线程池中的线程是否结束,没有结束就阻塞主线程直到其他线程结束,如果结束则跳转执行下一个线程的join函数 接下来看看多线程实际的案例: 多线程访问网站 # -*- coding
冒号分开键和值,逗号分开组。...但是在这里花括号里面并别用键值,其实这是一个没有value的dict:set,set和key类似,但是set中不储存value,set中没有重复的key(经过实验dict中也没有重复的key,如果初始化时出现重复的...key,前面的key和value会被后面的覆盖)。...s{1, 2.3} 如果传入重复的key值,set会自动清楚重复元素: >>> a=[1,1,1,1]>>> a={x+1 for x in a}>>> a{2} 接下来我们来介绍set的操作函数...是Python常用的结构类型,List可以看成是一个数组,而set就是数学上的集合,它们搭配起来还有一些妙用: 去重 >>>line = ['a','b','a']>>> list(set(line)
set() 函数 set() 函数创建一个无序不重复元素集,可进行关系测试,删除重复数据,还可以计算交集、差集、并集等。 set()函数:返回新的集合对象。...frozenset()工厂函数分别用来生成可变和不可变的集合。...obj) 如果 obj 是集合 s 中的元素,从集合 s 中删除对象 obj; s.pop() 删除集合 s 中的任意一个对象,并返回它 s.clear() 删除集合 s 中的所有元素 集合类型操作符、函数和方法...函数/方法名 等价运算符 说明 所有集合类型: len(s) 集合基数: 集合 s 中元素的个数 set([obj]) 可变集合工厂函数; obj 必须是支持迭代的,由 obj 中 的元素创建集合,...否则创建一个空集合 frozenset([obj]) 不可变集合工厂函数; 执行方式和 set()方法相同, 但它返回的是不可变集合 obj in s 成员测试:obj 是 s 中的一个元素吗?
python enumerate()函数 用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中,可同时得到数据对象的值及对应的索引值。...中 map()函数 map()是 Python 内置的高阶函数,它接收一个函数 f 和一个 list,并通过把函数 f 依次作用在 list 的每个元素上,得到一个新的 list 并返回。...也就是说会根据提供的函数对指定序列做映射。Python 2.x 返回列表。python3返回的是一个迭代器。...*x, [1, 2, 3, 4, 5])) Python filter() 函数 filter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。...: newlist = filter(lambda x:x%2==1, [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]) Python reduce() 函数 reduce() 函数会对参数序列中元素进行累积
Python 支持通过 eval 函数执行字符串命令,本文记录相关内容。 eval eval() 函数用来执行一个字符串表达式,并返回表达式的值。...可以执行更复杂的 Python 代码。...语法 exec(object[, globals[, locals]]) 参数 object:必选参数,表示需要被指定的 Python 代码。它必须是字符串或 code 对象。...'z': 4}) func() >>> 60 33 34 区别示例 eval 仅执行表达式,复杂的语句无法执行,但可以使用 exec,以导入模块为例 导入模块时不可以使用 eval 函数.../python-func-eval.html https://www.runoob.com/python3/python3-func-exec.html
函数属性 python中的函数是一种对象,它有属于对象的属性。除此之外,函数还可以自定义自己的属性。注意,属性是和对象相关的,和作用域无关。 自定义属性 自定义函数自己的属性方式很简单。...import b b.b_func.var1="hello" print(b.b_func.var1) # 输出hello 查看函数对象属性 python函数是一种对象,是对象就会有对象的属性。...+i)) 下面将根据上面查看的结果解释各属性: co_name 函数的名称。 上例中该属性的值为外层函数f和闭包函数g,注意不是f1。 co_filename 函数定义在哪个文件名中。...co_cellvars内容: ('a', 'b', 'c') g()的co_freevars内容: ('a', 'b', 'c') co_code co_flags co_lnotab 这3个属性和python...属性和字节码对象PyCodeObject 对于python,通常都认为它是一种解释型语言。
#导入模块 import xxx #调用 xxx.dd() from xxx import xx as dd #导入某个函数,as给函数加别名,调用xx() #包 mkdir sources touch...bestiary = defaultdict(no_idea) #传递的是函数 bestiary = defaultdict(lambda: 'Huh?')...#lambda也可以默认值 #标准函数 def hello(): print("dasd") user_name(a='xx',b='dd') #位置参数和关键字参数、 def user_name(a...__doc__) #得到文档字符串 #返回函数的名称和文档 fuction.__name__ fuction....def xx(): global cc cc = 'sdas' #闭包是一个可以由另一个函数动态生成的函数,并且可以改变和存储函数外创建的变量的值。