PythonStudy_day01

python学习的整体流程:

Python基础---->网络编程---->Web框架---->设计模式 + 算法---->项目实战 

 
程序帮助我们自动在内部完成很多操作,而在完成这个操作的时候就需要编程语言执行。

编程语言是为减少人工操作复杂性而得来的抽象层(把用二进制编码这种底层操作方式经过层层封装后得到)

 

高级语言:开发效率高、执行效率低(相比低级语言),对硬件的可控性弱,维护性高,移植性好

低级语言:开发效率低、执行效率高(相比高级语言),对硬件的可控性高,维护性低,移植性差

 

为什么高级语言和低级语言的执行效率会存在区别呢?

1、因为低级语言更接近底层,也就意味着对硬件访问的能力更强,比如汇编语言可以直接访问寄存器,这种对硬件的直接操作可以将程序的运行效率最大化,而高级语言用的一些内存结构都是对硬件设备抽象层的操作,访问速度自然不及寄存器。

2、高级语言或多或少存在工作冗余,会造成效率损失

 高级语言通过编译器翻译成机器语言中由于语言和机器指令的耦合度高低会产生工作冗余,耦合高,冗余低,耦合低,冗余高。

3、取决于程序员对语言的理解程度 

 

高级语言本质上都依赖于低级语言(C语言、汇编语言),因为由高级语言解释器执行的程序生成的字节码会交给低级语言转换成机器码,最后再交给操作系统

机器码:计算机能直接识别的语言

 

人工操作方便了意味着机器要处理的东西更多,运算效率就会被进一步压缩,但是由于摩尔定律的规则,这种压缩显然是值得的。

 

新手学低级语言为什么困难?

因为低级语言往往要程序员自己做内存管理,而且要对计算机底层要非常了解,学习成本较高。而高级语言设计的时候就将抽象出来的这一层可以让人编写程序的过程更符合人类的思维习惯。

 

java和python的比较

java优势:可能比python执行效率高,以及没有java开启企业级应用技术的成熟

python优势:能快速搭建起一个项目,在很大程度上优化开发效率。而且虽然执行效率上可能没有那么高,但是却可以用硬件的价格成本来换取开发效率,这还是很值得的。

 

python版本:cpython(平常说的python)、 jpython、Ironpython

 为什么会有不同的python版本?

 由于python的火热,许多大公司觉得他非常有发掘的价值,所以许多公司用他们自家开发的语言又写了一个python,这样的优点在于他们写的python与他们开发的语言更容易交互,但缺点在于用他们的python运行的程序经过他们的python解释器后要先跟他们的语言交互转换最后才交给低级语言去转换机器码。(多了一层,cpython是在经过解释器后直接交给低级语言去转换机器码了)

 

pypy:cpython开发的python,是python的一个变种(升级),使得程序不用每次都把字节码交给c去生成机器码,可以直接将保存的机器码直接给c交给操作系统(但第一次要等待机器码生成留给python解释器)。

pypy比cpython快很多,但是功能还不够完善,不稳定。

 

安装python是安装编译器

python软件其实就是python解释器(执行等于把文件交给python解释器让他来解释这个文件)
python2和python3的跨度非常大,他舍弃掉了python2的一些功能,好处是程序员变方便了,坏处是版本向下兼容这条规则不适用了,要让python2的程序转换为3要修改很多东西。因此现在的情况是python2和python3同时升级,让python2逐渐向python3转换,这样程序员的负担就变小了。
 
python最好安装在一些容易寻找的目录(比如某个分区下的根目录),这样以后安装模块会比较方便。
 
安装了两个python并都添加到环境变量那么cmd里面输入python到底会执行哪一个?
优先级是先按安装顺序决定的,会执行先安装的。
 
同时装多个版本但又想让cmd区分识别:可以将两个文件里面的python.exe改成python2.exe

 

----------------------------------------

 

 
python代码文件的后缀名没有什么用,但是不代表可以任意写。(导入模块的时候,不是.py文件就会出错)

 

.py代表是python的程序
 
两种执行方式
1、python 文件路径
2、进入解释器,实时检测输入并获取执行结果
 
在Linux里运行一个python程序的时候需要在文件里面添加#!/usr/bin/env python,声明当前文件需要用哪个解释器去执行。如果用"python 文件名.py"的形式去执行文件那么这句声明就可有可无了。
 
计算机存储数据是以位为单位存储的。
 
python2解释器默认编码是Ascll编码,需要加上编码声明。但在python3里面加不加这句声明都一样(python3无需关注中文编码)

Linux系统中使用Python2要在/usr/bin/env python路径添加这条声明才支持中文编码

# -*- coding:utf8 -*-
 
unicode(万国码):最少用16位表示一个字符,容易造成内存浪费
utf-8:能用多少表示就用多少位表示,中文用3个字节表示
GB2312-80:中国第一个汉字编码标准,1980年颁布
GBK:95年颁布,GB2312的扩展,还支持繁体中文、日文等,中文用2个字节表示
------------------------------------------------------------------------------------------
如果编码不一样且存储位数不一致会导致取数据的时候出现乱码
文件声明为UTF-8但是在终端使用python2来进行编译会出现中文乱码的原因?
数据读到内存还是UTF-8,UTF-8存储中文时是3个字节,GBK是2个(UTF-8和GBK之间不能相互转换)
 
python3为什么不会出现这个问题?
因为python3将数据读到内存会转换成unicode,而unicode是能转成其他任何编码的。
 
------------------------------------------------------------------------------------------
 
python解释器是将文件从上往下一行一行执行。
 
单行注释#号
多行注释"""号
1 #这是一段注释
2 """
3 我们是注释
4 我们是注释
5 我们是注释
6 
7 """

 

 python编译器转换成字节码交给c语言,c语言最后在内部会将变量名字去掉替换成他真实代表的值
 
变量只能有字母、数字、下划线组成(不能数字、关键字开头)
最好变量名不要和python内置的东西重复
 
一个级别是一个代码块,一定要有缩进的才能算代码块,且同一个代码块里面的内容需要缩进一致
 
如果条件语句里面想在符合条件的时候什么都不执行(不添加任何语句),需要在里面加pass关键字,否则报错。

 

if 1==1:
    pass
else:
    print("null...")

 

字符串支持加法和乘法(乘法相当于要让字符串出现多少次)
 
在算术表达式中 “//” 代表取商的值,%是取余数,**代表后面的数字是前面数字的几次方
print(40 // 3)    //13
print(2 ** 2)     //2的2次方

 这四种引号引起来的才算注释

name = "sewellhe"
name = 'sewellhe'
name = """sewellhe"""
name = '''sewellhe'''

 input()   程序遇到input会永久等待,直到用户输入一个值(这个值无论是什么最终返回的都是字符串类型的)

 

 

 

 

posted @ 2018-05-17 22:16  sewell  阅读(74)  评论(0)    收藏  举报