knight_ka | 生活及学习笔记

Python核心基础

Python核心基础

Python数据类型

列表[]:students=['ww','rr','dd','aa','xx’]
元组():students=('666','55','44','11','22’)
集合set:集合中的元素不可重复。
    >>> a=set("abjksjkdhtljt")
    >>> b=set("stjnl")
    >>> x=a&b        交集
    x=a|b            并集
    x=a-b            差集
    set(a)           去除a 集合中的重复元素
字典{}:(关联数组)
    zidian={'name':'as','sex':'1’}
    print (zidian[’name'])
              >>> print (zidian)
     {'name': 'as', 'sex': '1'}
     >>> zidian['like']="music"
     >>> print (zidian['like'])
     music

python标识符

自定义的名字就是标识符。
1.不能以数字开头
   2.不能是python关键字
3.只能是符号_ + 字母 +数字 组成

Python对象

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
pickle腌制 : 持久化对象 —> 序列化对象 —> pockle腌制
反pickle腌制: 反序列化 —> 反pickle腌制
>>> import pickle
>>> pickle.dumps(['1','2','3'])
b'\x80\x03]q\x00(X\x01\x00\x00\x001q\x01X\x01\x00\x00\x002q\x02X\x01\x00\x00\x003q\x03e.’
>>> a = ['wo','shi','zhong','guo','ren']
>>> b=pickle.dumps(a)
>>> print (b)
b'\x80\x03]q\x00(X\x02\x00\x00\x00woq\x01X\x03\x00\x00\x00shiq\x02X\x05\x00\x00\x00zhongq\x03X\x03\x00\x00\x00guoq\x04X\x03\x00\x00\x00renq\x05e.'
>>> c=pickle.loads(b)
>>> print (c)
['wo', 'shi', 'zhong', 'guo', 'ren’]
将对象存储在文件中进行序列化实现持久:dump
>>> file = open('dump.pyt','wb’) #写入文件
>>> pickle.dump(a,file) #保存a对象到file文件中
>>> file.close()
>>> file=open('dump.pyt','rb’) #读取文件
>>> d=pickle.load(file)
>>> file.close()
>>> print (d)
['wo', 'shi', 'zhong', 'guo', 'ren']

Python运算符

1
2
3
4
5
6
7
8
9
10
/ 除法
// 两数相除后的整数部分
&(按位与)、|(按位或)、^(按位异或)、~ (按位取反)
% 两数相处后的余数部分
& 按位与 表示相对应的两位必须都为1,结果才为1,否则为0
| 按位或 表示相对应的每位至少有一个为1,则结果为1,只有两个都为0,结果才为0
~ 按位取反 按位取反运算是单目运算,用来求一个位串信息按位的反,即哪些为0的位,结果是1,而哪些为1的位,结果是0。例如, ~7的结果为0xfff8
位异或(^)比较特殊,它比较的是如果两个不同则值为1(如:(10)(01)),相同(如:(11)(00))则为0
>> 右移符号 除以2的n次幂
<< 左移符号 乘以2的n次幂

运算符优先级排行:

1.函数调用、寻址、下标
2.幂运算**
3.翻转运算~
4.正负号 如:2+4*-2
5. 乘除取余:* / % 如:2+4*2/4
6.加号减号 如:3<<2+1 先加减后<<
7.<<、>>
8.& ^ |
9.比较运算符:如:2*3+5<=5+1*2

Python表达式:

a=5或者a=“this’s my girl”这就是个表达式。

Python的模块:

如何导入模块:

from xxx import xxx

Python字节编译:

1.直接编译成二进制执行。
2.先编译成二进制,后执行。

字节编译会产生一个.pyc文件,这个文件就是二进制文件。
.pyc文件加快了模块的运行速度。

字节编译与编译的区别:

python是解释性语言。字节编译,在解释器中发生的,而不是直接发生的。
name 属性:用于判断是不是主模块。

如果直接方式执行的话就是主模块,如果是其他模块引入后执行的话 就不是主模块

自定义模块:

1.保存在python的根目录下的lib目录下即可。一些版本需要保存在lib下的python模块
2.sys.path.append() 动态导入一个目录为系统目录
3.在/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages下创建.pth文件,文件中内容自己写的库路径。

模块传递参数:

调用模块方法的时候传递参数。如:tnp.add(1,2)

Dir()函数

Dir函数来查看指定函数的功能列表。宏观认识模块的功能。

1
2
3
4
5
查看任意指定的对象的功能列表。
>>> d=[]
>>> dir(d)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
查看的属性的列表,而不携带数据。

Python数据结构
内置数据结构:列表 元组等。
python的扩展数据结构:栈 队列等。

自定义的栈和队列

栈:先进后出,桶结构。
队列:先进先出 排队买票。

数据结构之树

树是非线性结构。可以节省公共元素的存储空间。

二叉树是每个节点只有左右两个子节点。

自平衡点二叉树是每个节点左边小 右边大。