1.21~1.25学习笔记

1. 动态创建属性是一种元编程.
2. 通常把__init__称为构造方法,其实,用于构建实例的特殊方法__new__,这是个类方法(使用特殊方式处理, 因此不必使用@classmethod装饰器),必须返回一个实例.返回的实例会作为第一个参数(即self)传给__init__方法.因为调用__init__方法时要传入实例,而且禁止返回任何值,所以__init__方法其实是初始化方法,真正构造方法是__new__.它的第一个恶参数是类cls,因为创建的对象通常是那个类的实例.
3. 描述符:
描述符是对多个属性运用相同存取逻辑的一种方式.例如,Django orm中的字段类型是描述符,把数据库记录中字段里的数据与python对象的属性对应起来.
描述符是实现了特定协议的类,这个协议包括__get__,__set__和__delete__方法

4. 我的电脑联不上wifi, 查看了以下资料, 啊啊啊,还是没有解决....
无线驱动包
http://mirrors.kernel.org/ubuntu/pool/restricted/b/bcmwl/bcmwl-kernel-source_6.30.223.248%2bbdcom-0ubuntu8_amd64.deb

wicd用法
http://www.mintos.org/skill/wicd.html

ubuntu安装无线驱动
https://jingyan.baidu.com/article/ed2a5d1f3e0ed209f7be1779.html

https://blog.csdn.net/weixin_38883338/article/details/82153959

https://blog.csdn.net/fljhm/article/details/79281655

ubuntu 命令连接 wifi
https://blog.csdn.net/ywueoei/article/details/80329667

5. 查看网卡型号: lspci | grep Network
05:00.0 Network controller: Realtek Semiconductor Co., Ltd. RTL8821CE 802.11ac PCIe Wireless Network Adapter
查看机器位数: uname -a
Linux szkj-ThinkPad-E470 4.15.0-43-generic #46-Ubuntu SMP Thu Dec 6 14:45:28 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux


7. 在python中做元编程时,最好不用exec和eval函数.如果接收的字符串(或片段)来自不可信的源,那么这两个函数会带来严重的安全风险.

8. 导入时和运行时比较
python程序员会区分'导入时'和'运行时',不过这两个术语没有严格的定义,而且二者至间存在着灰色地带.在导入时,解释器会从上到下一次性解析完.py模块的源码,然后生成用于执行的字节码.如果句法有错误,就在此时报告.如果本地的__pycache__文件夹中有最新的.pyc文件,解释器会跳过上述步骤,因为已经有运行所需的字节码了.
编译肯定是导入时的活动,不过那个时候还会做些其他的事,因为python中的语句几乎都是可执行的,也就是说语句可能会运行用户代码,修改用户程序的状态,尤其是import 语句,他不只是声明,在进程中首次导入模块时,还会运行该模块中的全部顶层代码,以后导入相同的模块也使用缓存,只做名称绑定.

9. 元类基础知识
①元类是制造类的工厂,不过不是函数,而是类.元类是用于构建类的类.
②根据python对象模型,类是对象,因此类可定是另外某个类的实例.
③默认情况下,python中的类是type类的实例.也就是说,type是大多数内置的类和用户定义类的元类
④所有类都是type的实例,但是元类还是type的子类,因此可以作为制造类的工厂.
⑤类元编程是指动态创建或定制类.

10. 对象的引用计数增加:
①对象被创建
②另外的别名被创建
③被作为参数传递给函数
④称为容器对象的一个新元素

11. 减少引用计数
①一个本地引用离开了其作用范围
②对象的一个别名被赋值给其他对象
③对象被从一个窗口对象中移除
④窗口对象本身被销毁
⑤del语句

12. 垃圾回收
不再使用的内存会被一种称为垃圾回收集的机制释放.虽然解释器跟踪对象的引用计数,但垃圾收集器负责释放内存.垃圾收集器是一块独立代码,它用来寻找引用计数为0的对象.它也负责检查那些虽然引用技术大于0但也应该被销毁的对象.特定情形会导致循环引用.

13. 循环引用:
一个循环引用发生在当你有至少两个对象互相引用时,也就是说所有的引用都消失时,这些引用仍然存在,这说明只靠引用计数是不够的.python的垃圾收集器实际上是一个引用计数器和一个恶循环垃圾收集器.当一个对象的引用技术变为0,解释器会暂停,释放掉这个对象和仅有这个对象可访问的其他对象.作为引用计数的补充,垃圾收集器也会留心被分配的总量很大的对象.在这种情况下,解释器会暂停下来,试图清理所有未引用的循环.

分享一篇博客: https://blog.csdn.net/qq_33339479/article/details/81634990

14. 类就是类型,实例是对应类型的对象.

15. python有一个特殊的类型,被称为Null对象或者NoneType,它只有一个值,那就是None.它不支持任何运算也没有任何内建方法.None没有什么有用的属性,它的布尔值总是False.

16. 数据类型     存储模型       更新模型        访问模型
      数字        标量         不可更改        直接访问
     字符串        标量        不可更改        顺序访问
     列表          容器         可更改         顺序访问
     元祖          容器        不可更改         顺序访问
     字典          容器        可更改          映射访问

17.
eg1:

a = 10
    b = 10
    c = 10.0
    d = 10.0
print(a is b)    # 内存空间一样
print(c is d)    # 内存空间不一样

True
False

eg2:
与python对象有关的三个属性是: 身份, 类型和值


18.
eg: 有一个字符串, 需要通过循环方式显示它,每次都把位于最后一个字符砍掉:
 

s = 'abcde'
i = -1
for i in [None] + range(-1, -len(s), -1):  
       print s[:i]

19. enumerate()和zip()
eg1:
 

albums = ['table', 'robot', 'phone' ]
for i, album in enumerate(albums):
    print(i, album)
    
0 table
1 robot
2 phone

eg2:
 

f1 = ['a', 'b', 'c']
f2 = ['1', '2', '3']
for i, j in zip(f1, f2):
    print(i, j)
    
a 1
b 2
c 3

20. list类型内建函数
list.append(obj)  在末尾拼接
list.count(obj)
list.extend(seq)
list.index(obj, i=0,j=len(list))
list.insert(index, obj)   可以指定位置插入
list.pop(index=-1)
list.remove(obj)
list.reverse()
list.sort(func=None,key=None,reverse=False)

21. list的特殊属性: 堆栈(后进先出), 队列(先进先出)

22. 只有一个恶元素的元祖需要在元祖分隔符里面加一个逗号(,)

23. 哈希表是一种数据结构:它按照我们所要求的去工作.哈希表中存储的每一条数据,叫做一个值,是根据与它相关的一个被称作为键的数据项进行存储的.键和值合在一起被称为键值对.哈希表的算法是获取键值,对键执行一个叫做哈希函数的操作,并根据计算的结果,选择在数据结构的某个地址中来存储你的值.任何一个值存储的地址皆取决于它的键.正因为这种随意性,哈希表中的值是没有顺序的.你拥有的是一个无序的数据集.


24 . [(x+1, y+1) for x in range(3) for y in range(5)]
   [(x, y) for x in range(3) for y in range(5)]

25. GitKraken使用方法
https://www.jianshu.com/p/14a52064e6bf

猜你喜欢

转载自blog.csdn.net/liugaigai427/article/details/86642723