python教程

python进阶

Tips:编程是工科,百问不如一试,百看不如一练。

  • type元类、object基类、内置类的关系

    type类就是所谓的元类(metaclass),它有一种能力,能动态的创建类,type类可以接受一个类的描述作为参数,然后返回一个类。听起来很抽象,我们一步步的来研究,先看下面的代码: # -*- coding: utf-8 -*-class Person(): def __init__(self,name,age): self.name = name self.age = agep = Person(老董,28)print(type(p)) print(type(Person)) class ...

    人气指数:41120-08-02
  • GIL全局解释器锁正确解读

    全局解释器锁GIL,大多数人都听过说。网上的言论大多说python的多线程是鸡肋(其实说的并不对): 网上帖子: 尽管Python完全支持多线程编程,但是解释器的C语言实现部分在完全并行执行时并不是线程安全的。实际上,解释器被一个全局解释器锁保护着,它确保任何时候都只有一个Python线程执行。GIL最大的...

    人气指数:24220-04-09
  • 实现生成器的方法,生成器表达式,生成器函数yield,send

    一、什么是生成器 通过列表生成式可以直接创建一个列表。但是受到内存限制,列表容量肯定是有限的。如果创建一个非常大的列表比如包含100万个元素内存空间可能就不足,而且操作系统未必会允许这样操作!即使有这么大的列表,一开始如果只用前面几个元素,那后面绝大多数元素占用的空间都白白...

    人气指数:14020-08-15
  • 生成器、迭代器、可迭代对象的关系

    先把生成器、迭代器、可迭代对象三者的关系总结下,再解释概念。一图胜千言: 一、什么是可迭代对象 迭代是访问集合元素的一种方式。直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等,另一类是generator,包括生成器和带yield的generatorfunction。这些可以直接...

    人气指数:38619-06-06
  • python装饰器详解,装饰器原理解析

    python装饰器并不是什么神奇之物,更像是python作者的装逼之物,python装饰器实际上是python作者对函数做了一层封装,让一个函数在执行前先发生点别的事!某些场景会让我们写代码的人用起来更加简洁。 为了了解装饰器,我们从一个现实的场景中来感受:技术部需要给运营部seo优化师和sem优化师提供数据...

    人气指数:32020-05-18
  • 在python中实现链式调用-小技巧

    链式调用在js的JQuery框架中很常见,看起来也很帅气,比如$(text).setStyle(color, red).show(),一般的函数调用和链式调用的区别是链式调用完方法后,return返回调用该方法的对象。 那么链式调用在python里面如何实现呢。按照传统的方式定义1个类然后测试下: class Person: def __init__(self,name,age): self.name = name self.a...

    人气指数:24919-06-06
  • python循环引用内存泄漏案例

    内存泄漏只是一个名词,代表程序运行时候碰到的一种现象,如果不理解内存泄漏请查看 内存泄漏是什么 。本文介绍python的循环引用内存泄漏的案例。 一.循环引用增减 1、导致引用计数+1的情况 对象被创建,例如a=23 对象被引用,例如b=a 对象被作为参数,传入到一个函数中,例如func(a) 对象作为一个元素...

    人气指数:21520-08-02
  • python垃圾回收gc模块

    gc模块提供一个接口给开发者设置垃圾回收的选项。 一、有三种情况会触发垃圾回收: 1、调用gc.collect(), 2、当gc模块的计数器达到阀值的时候。 3、程序退出的时候 常用函数: 1、gc.set_debug(flags)设置gc的debug日志,一般设置为gc.DEBUG_LEAK 2、gc.collect([generation])显式进行垃圾回收,可以输入参数,0代表只检查...

    人气指数:25319-07-13
  • functools模块2个常用函数

    functools是python2.5被引人的,一些工具函数放在此包里,python3中增加了更多工具函数,业务开发时大多情况下用不到,此处介绍使用频率较高的2个函数。 partial函数(偏函数) 这个函数在基础教程篇介绍过,可查看 偏函数 ,partial函数可以把一个函数的某些参数预先设置默认值,返回一个新的函数,调用这个新...

    人气指数:32520-05-08
  • 并发并行、同步异步、阻塞非阻塞的区别与联系

    并发、并行、同步、异步、阻塞、非阻塞、协程这些概念网上众说纷纭,有时经常混为一体,本文尽量从本质上做一下解释。 并发:一个时间段内,有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在cpu上运行 并行(多核cpu实现):任意时刻上,多个程序同时运行在多个cpu上 【 并发是交替执行,...

    人气指数:23720-09-19
  • 浅拷贝、深拷贝、==和is介绍

    浅拷贝与深拷贝: 浅拷贝是对于一个对象的顶层拷贝,通俗的理解是:拷贝了引用,并没有拷贝内容 深拷贝是对于一个对象所有层次的拷贝(递归) # -*- coding: utf-8 -*-import copyprint(以下是浅拷贝,a变化后b也变化)a = [1,2,3]b = aprint(a,id(a))print(b,id(b))a.append(哈哈)print(a,id(a))print(b,id(b))print(以下是深拷贝,a变化后b未变...

    人气指数:15019-06-06
  • 异步和多线程的区别?有什么关系

    这问题我想了很久,计算机界有太多的术语和名词,他们掩盖了事物的本质让本来不难的问题变得朦胧,造成了很多混淆。尤其是人类喜欢随心所欲的使用概念,不分场景不管对错的顺嘴一说让本来简单的概念变得复杂! 首先明确: 异步(同步)是说的代码执行方式,表达的是多个任务按顺序依次等待执...

    人气指数:38620-05-02