Loading

二:python基础

一:通用套路

  无论哪门语言,基本套路都是:

  1. 变量------------->为了反复使用数据起个别名,找起来更方便
  2. 数据类型------->亲儿子,让开发者可以直接使用的组织数据的不同方式,因为他们是使用频率最高的数据类型,因此放入了内置ns中,方便急拿急用。
  3. 运算符---------->数据运算相关
  4. 控制语句------->逻辑控制相关
  5. 函数------------->简单封装,反复使用
  6. 面向对象------->复杂封装,数据和行为都封装
  7. 并发------------->高效运行
  8. 异常和文件---->异常处理,IO
  9. 网络------------->一般不从事专门的例如服务器开发,基本不会让你编写socket
  10. 框架------------->脚手架,快速搭建和开发项目

基本都是这么个套路下来。

二:变量

普通变量,函数名,类名,对象名等都是变量名,数字字母下划线组成,数字不能开头。

编程存在两个角色,一个是编程者,另一个是语言本身(由解释器默默在背后帮我们做许多事)。例如ns,例如如何从变量名找到数据,因为解释器帮你做了地址内存和数据内存的映射。

语言本身的特性是规定死的,我们需要作出正确行为来和语言进行默契配合,否则就会导致错误.

图中a的地址叫变量名的内存地址,100的内存地址叫数据内存地址,

只是我们记不住他们的具体二进制地址但是计算机记得住且十分擅长,我们记得住变量名更符合我们的思维,

那么我们就各自做擅长的事情来协同工作,我知你所想你知我所意,输入a,计算机就知道你要100。

计算机它帮我我们维护和记忆内存地址,

python中地址都是4bytes,这就是为什么列表可以存放任意的数据类型,因为你开4bytes空间存放地址,而真正的数据游离在内存中,连续的是内存地址,数据是不连续的。

4bytes,32bit二进制位,232=4096MB=4G,存放地址绰绰有余前提是你的内存条大小够,还与操作系统的位数有关。

计算机的世界里KV几乎无处不在,k是别名,v是对应的具体数据,无论mysql,redis,mongdb等全都有它的影子,可以叫做KV理论(自己瞎编的).

三:常量

和变量基本无异,只不过约定是变量名全大写,定义后不能再修改值,非要改也没人拦的住,就像类中的私有,只是在namespace中修改了名字,让你找不到它了,但是你非要_类型.__私有名字去改它的值也没有人拦你.

四:注释

#单行注释
"""
多行注释
"""
'''
多行注释
'''

五:字符编码

python3默认的字符编码utf8,

内存中数据都是unicode编码形式存在,无论哪个国家的人输入的内容到内存中都是unicode,输入输入永远不会乱码。

unicode默认所有一个字母也用4bytes,232个符号标记完全可以枚举世界一切文字,原ascii一个字母就1bytes,这样扩充了4倍,当从内存存放到硬盘的时候IO压力变大了,IO是解决多数瓶颈问题首要考虑的,一旦长时间的IO就会导致CPU的闲置,大大降低了程序的执行效率。

出现了弹性的utf8编码,英文还和ascii一样1bytes,中文占3bytes,且utf8基本98%都是这个保存,期待有一天内存中数据编码全部变成utf8.

键盘输入内容以unicode的形式进入内存,看到的确实是输入的内容,是因为os把内存中的0101,又变成了输入内容显示到屏幕上。

 

当保存为utf8编码,说明os中有unicode到utf8的二进制转换对照表;打开文件编码格式为utf8,到内存是unicode说明os中还有utf8到unicode的转换对照表。

其他编码方式也可以说明,os中保存了很多编码方式和unicode互转的对照表.

乱码:1.保存的时候就是乱码,打开肯定还是乱码。例如编辑器输入了中文,到内存中是unicode编码,保存时用了韩语编码,韩语编码不认识你输入的中文,保存时就是乱码,下次打开肯定还是乱码,此时的乱码是无法解决的,即便你换了韩语编码打开还是乱码。

  2.保存时用utf8编码,打开时用gbk,也会乱码.(这种可以改变打开编码方式,解决乱码,但是第一种原因导致的乱码无法解决。)

六:数据类型

数据:用来表示状态。例如name用字符串表示,年龄用数字表示。

数据类型:用来表示不同的状态。

状态不是一成不变的,例如年龄会增加,名字可能会改名。

因此不同的数据类型会有不同的计算方式。

计算机对于不同的数据的计算方式是不一样的,例如字符串不能进行除法运算,减法运算,取余运算,以及符合运算符也不可以。

计算机必须知道是什么数据类型,才能进行运算,python中的数据类型可以自动推断。因此不用明确声明。

数据类型是对数据的进行描述的定义,才能分配合适的内存空间。计算机才会知道能够进行什么样的运算。

人类认识词语,成语,句子,段落,文章;而计算机认识数据类型,计算机用数据类型来组织数据,然后进行计算。

计算机只做两件事,计算和存储。

给与正确的数据类型,计算机才能进行正确的计算,改正确的更改状态。假如你给一个字符串进行除以2的操作,明显是不可以的。

之所以有数据类型一说,映射现实世界当中的数字 成语 段落,之所以一眼就能看出这是一个数字或者这是一个段落,是因为我们进行了学习,后天的条件反射。

计算机是不认识数字和str的,除非你告诉他,怎么告诉他?数据类型就是告诉他这是什么数据,怎么处理数,它内部都封装了方法。

数据类型在python就是内置对象,都是小写的类形式存在,封装了处理数据的方法.

int:python3中只有int,对python2中的长整型进行了整合.

float:用的比较少,6//5=1        6/5=1.2后者常见为小数,divmod(7,3)=(2,1),(除,余)

str  list  tuple  dict  set后面详解

可变数据类型:id变为前提,通过方法改变了value

不可变类型:就没有封装方法改变value,一旦value变了,就意味着id变了

重新赋值不是改变value,而是改变了id

id变了value自然也变。

七:运算符

  1. 算数运算

  2. 赋值运算=  +=  *=  //=  **=等
  3.  逻辑运算
    优先级:not>and>or
  4. 比较运算符:结果是bool  a>b
    三元运算a=true if a>b else false
  5. 成员运算符
    in , not in

  运算符优先级

                        

  


posted @ 2019-09-19 23:11  浅忆尘  阅读(228)  评论(0编辑  收藏  举报