1.编译形与解释型
编译型语言
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境
编译不同的可执行文件。
解释型语言
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
2.Python运行过程
在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。
我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。
当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。
所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。
3.Python语言的优缺点
先看优点:
Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
开发效率高,Python有很多第三方库,下载后可直接调用;
高级语言,无需过多考虑管理程序使用的内存等底层细节;
可移植性,由于它的开源本质,兼容多系统;
可扩展性,部分程序支持C或C++编写;
可嵌入性,Python可嵌入到C或C++程序。
再看缺点:
运行速度较慢;
代码不能加密;
线程不能利用多核问题,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。
4.Python安装
5.Python编辑器
6.字符编码
python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill)
常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。
7.编码格式转换
常用字符编码转换参考:https://www.cnblogs.com/schut/p/8407258.html
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字符串转换成gb2312编码。
8.代码注释
单行注释:#hello python
多行注释:"""hello python"""
9.多行语句
Python 通常是一行写完一条语句,但如果语句很长,可以使用反斜杠来实现多行语句,而在 [], {}, 或 () 中的多行语句,不需要使用反斜杠;
Python 一行写多条语句,可用英文";"隔开。
10.转义字符
单\在Python中为转义字符,为了简化,Python还允许用"r''表示''内部的字符串默认不转义。
11.变量
变量,是用于在内存中存放程序数据的容器;
程序是从上到下执行的,所以变量必须先定义,后调用, 否则会报错;
变量名定义规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名[‘and’, ‘as’, ‘assert’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘exec’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘not’, ‘or’, ‘pass’, ‘print’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
常用定义方式:
# 驼峰体
AgeOfboy = 18
NumberOfStudents = 36
# 下划线
age_of_boy = 18
number_of_students = 36
变量定义不佳:
变量名为中文、拼音
变量名过长
变量名词不达意