一、计算机组成
基本组成:主板+cpu+内存(编程后续需要关注的是CPU和内存的使用率)。
二、编程语言的类型
编程语言主要从以下几个⻆角度为进行分类,编译型和解释型、静态语言和动态语言、强类型定义语言和弱类型定义语言。
1、编译(使用编译器实现)和解释(使用解释器实现)的区别:
(1)编译器是把源程序的每一条语句(每一个源代码文件)都编译成机器语言,并保存成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序(编译好的二进制文件),速度很快。(感觉就是咱们看一本外国名著的时候,咱们直接看到的是翻译好的中文版,翻译出版的出版社就是编译器)
(2)解释器是只在执行程序时,才一条一条的解释成机器语言给计算机来执行,所以运行速度是不如编译后的程序运行的快的。(感觉就是咱们看一本外国名著的时候,咱们是请一个翻译在边上,边读边翻译。翻译官就是解释器)
(3)优缺点:
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高,可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成二进制文件,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中,只要安装了解释器(虚拟机),都可以运行。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
2、静态语言和动态语言的区别:
(1)静态语言(静态类型语言):静态类型语言的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
(2)动态语言(动态类型语言):动态类型语言是指在运行期间才去检查数据类型,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来,语言自动定义变量类型。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
(3)优缺点:对于动态语言与静态语言的区分,套用一句流行的话就是:Static typing when possible, dynamictyping when needed。
3、强类型定义语言和弱类型定义语言的区别:
(1)强类型定义语言:强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。例如:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
(2)弱类型定义语言:数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。例如:如果你定义了一个变量a,赋值为1,则程序就会把变量a当作int类型处理,一会我赋值"1"给变量a,那么程序就会把变量a当作str类型处理。
(3)优缺点:强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
例如:Python是动态语言,是强类型定义语言(类型安全的语言); VBScript是动态语言,是弱类型定义语言(类型不安全的语言);JAVA是静态语言,是强类型定义语言(类型安全的语言)。(有争议)
三、Python的简介
1、Python是解释型语言
2、Python是弱类型语言(有争议)
3、Python的优缺点:
优点:
1. Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。
2. 开发效率非常高,Python有非常强大的第三方库,基本上你想通过计算机实现任何功能,Python官方库里都有相应的模块进行支持,直接下载调用后,在基础库的基础上再进行开发,大大降低开发周期,避免重复造轮子。
3. 高级语言——当你用Python语言编写程序的时候,你⽆无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
4. 可移植性——由于它的开源本质,Python已经被移植在许多平台上(经过改动使它能够工作在不同平台上)。如果你小心地避免使用依赖于系统的特性,那么你的所有Python程序无需修改就几乎可以在市场上所有的系统平台上运行。
5. 可扩展性——如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。
6. 可嵌入性——你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
缺点:
1. 速度慢,Python 的运行速度相比C语言确实慢很多,跟JAVA相比也要慢一些,因此这也是很多所谓的大牛不屑于使用Python的主要原因,但其实这里所指的运行速度慢在大多数情况下用户是无法直接感知到的,必须借助测试工具才能体现出来,比如你用C运行一个程序花了0.01s,用Python是0.1s,这样C语言直接比Python快了10倍,算是非常夸张了,但是你是无法直接通过肉眼感知的,因为一个正常人所能感知的时间最小单位是0.15-0.4s左右,哈哈。其实在⼤大多数情况下Python已经完全可以满足你对程序速度的要求,除非你要写对速度要求极高的搜索引擎等,这种情况下,当然还是建议你用C去实现的。
2. 代码不能加密,因为Python是解释性语言,它的源码都是以明文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
3. 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节⾥里里再进⾏行行详细探讨(后续更新)。
四、hello word
print()函数
实例:
print("你好啊. 我是周润发")
注意:
1、设置文件的编码格式为utf—8.
2、符号都用英文半角格式
五、cmd命令中文件夹切换和文件打开
D: ——盘符切换,直接切换到D盘
cd sylar ——进入文件夹
cd\ ——跳转到C盘根目录
运行.py文件的命令:python ***.py
六、变量规则
1、变量是由字母、数字、下划线组成;
2、变量不能以数字开头,更不能是纯数字;
3、变量不能是关键字;
4、变量不能太长;
5、变量不要用中文;
6、变量区分大小写;
7、变量要有意义;
8、驼峰和下划线命名;
常量:约定熟成,全部字母大写。
七、数据类型
1.、int整数
以下假设变量: a=10,b=20:
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象相加 | a + b 输出结果 30 |
- | 减 - 得到负数或是一个数减去另一个数 | a - b 输出结果 -10 |
* | 乘 - 两个数相乘或是返回一个被重复若干次的字符串 | a * b 输出结果 200 |
/ | 除 - x除以y | b / a 输出结果 2 |
% | 取模 - 返回除法的余数 | b % a 输出结果 0 |
** | 幂 - 返回x的y次幂 | a**b 为10的20次方, 输出结果 100000000000000000000 |
// | 取整除 - 返回商的整数部分 | 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0 |
> | 大于 | a>b 输出结果为False |
< | 小于 | a<b 输出结果为 True |
>= | 大于等于 | a>=b 输出结果为False |
<= | 小于等于 | a<=b 输出结果为 True |
!= | 不等于 | a!=b 输出结果为 True |
2.、str字符串. 凡是用',",''',""" 引起来的都是字符串
(1)以下假设变量: a="start",b="stop":
运算符 | 描述 | 实例 |
---|---|---|
+ | 加 - 两个对象连接 | a + b 输出结果 startstop |
* | 乘 - 一个数据显示几次 | a * 2 输出结果 startstart (必须是一个str型乘以一个int类型的) |
(2)单双引号配合
实例1:msg = "My name is Alex , I'm 22 years old!"
实例2:say = print('Mr.wang say:"I am Mr.wang!"')
3、 bool 布尔值. 只有True和False两个值
八、转义字符
\ ——转义字符
转义字符 | 描述 |
---|---|
\(在行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\e | 转义 |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车 |
\f | 换页 |
\oyy | 八进制数,yy代表的字符,例如:\o12代表换行 |
\xyy | 十六进制数,yy代表的字符,例如:\x0a代表换行 |
\other | 其它的字符以普通格式输出 |
九、注释
单行注释 #被注释的内容
多行注释 '''被注释的内容''' 或者 """被注释的内容"""
十、用户交互
input()函数
格式:变量 = input("提示语") 变量是字符串类型, 字符串=> 数字 => int(str)
实例:a = input(”请输入你想要输入的内容:“)
注意:
1、引号中的内容会全量不变输出;
2、通过input接收到的内容均为str型,如果输入的是数字,需要按照数字使用的话,需要使用格式转换,
转换格式: int(str)
十一、if判断
最基本用法
if 条件判断1:
代码块1
运行流程.:当条件1是真, 执行代码块1.
if 条件1:
代码块1
else:
代码块2
执行流程:当条件1成立,执行代码块1;否则,执行代码块2。 二选一。
if 条件1:
代码块1
elif 条件2:
代码块2
.....
else:
代码块n
执行流程:当条件1成立,执行代码块1;否则,判断条件2是否成立,成立,执行代码块2,否则继续向下判断,一直判断到条件n-1,都不成立,执行代码块n。