美文网首页
python高级之路

python高级之路

作者: Dalvik_ | 来源:发表于2019-01-10 14:20 被阅读0次

== 和 is 的区别

==比较的是值是否相等 is 比较的是id是否相等


两者的比较.png

深拷贝 浅拷贝

浅拷贝:只是单纯的拷贝地址(指向数据的引用)
深拷贝:新开辟内存地址存放数据


深拷贝的实现.png

使用copy模块的copy功能的时候,会根据拷贝的内容是可变类型或者不可变类型拷贝的内容不一样

进制之间的转换

十进制转化二 八 十六进制.png

私有化

  • xx: 公有变量
  • _x: 单前置下划线,私有化属性或方法,from somemodule import *禁止导入,类对象和子类可以访问
  • __xx:双前置下划线,避免与子类中的属性命名冲突,无法在外部直接访问(名字重整所以访问不到)
  • xx:双前后下划线,用户名字空间的魔法对象或属性。例如:init , __ 不要自己发明这样的名字
  • xx_:单后置下划线,用于避免与Python关键词的冲突
    通过name mangling(名字重整(目的就是以防子类意外重写基类的方法或者属性)如:_Class__object)机制就可以访问private了。

生成器(需要时生成数据,不需要占用大量内存空间)

列表生成式

a  = [x*2 for x in range(10)]

生成器实现方式
第一种方式

b = (x*2 for x in range(10))

第二种方式

def fib(times):
    n = 0
    a,b = 0,1
    while n<times:
        yield b     #print(b)
        a,b = b,a+b
        n+=1
  return 'done'

生成器生成元素

next(b)

生成器可以用for循环

for a in fib(5):
    print(a)

迭代器

1.可迭代对象
以直接作用于 for 循环的数据类型有以下几种:
一类是集合数据类型,如 list 、 tuple 、 dict 、 set 、 str 等;
一类是 generator ,包括生成器和带 yield 的generator function。
这些可以直接作用于 for 循环的对象统称为可迭代对象: Iterable 。

  1. 判断是否可以迭代
from collections import Iterable

isinstance([], Iterable)
True

3.迭代器
可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。
注:生成器肯定是迭代器 迭代器不一定是生成器
4.iter()函数
生成器都是 Iterator 对象,但 list 、 dict 、 str 虽然是 Iterable ,却不是 Iterator。
把 list 、 dict 、 str 等 Iterable 变成 Iterator 可以使用 iter() 函数

isinstance(iter([]), Iterator)

True

闭包

在函数内部再定义一个函数,并且这个函数用到了外边函数的变量,那么将这个函数以及用到的一些变量称之为闭包

def test(number):
    def test_in(number_in):
        print("in test_in 函数, number_in is %d"%number_in)
        return number+number_in
    #其实这里返回的就是闭包的结果
    return test_in

装饰器

def w1(func):
    def inner():
        print("正在验证...")
        func()
    return inner

@w1  # @w1 == f1= w1(f1)
def f1():
    print("-------f1------")
def f2():
    print("-------f2-------")
# f1= w1(f1)
f1()

通用的装饰器

def func(function_name):
    def func_inner(*args, **kwargs):
        ret = function_name(*args, **kwargs)
        return ret

    return func_inner

可是实现对有返回值 无返回值 不定常参数的函数进行装饰

相关文章

网友评论

      本文标题:python高级之路

      本文链接:https://www.haomeiwen.com/subject/tzgvrqtx.html