Python基础—基本语法结构
一、初识计算机
1.计算机的组成
1.硬件系统
运算器、控制器、存储器、输入设备、输出设备。
其中运算器和控制器一起成为cpu,还有一个成为寄存器
存储器分为内存和硬盘:
- 内存:基于电信号的方式工作,速度快,然而不能永久保存数据,临时存储,断电即消失。
- 硬盘:基于磁的方式工作,速度慢,但可以永久保存数据。
2.软件系统
系统软件:有称为底层软件,如windows、mac os。
应用软件:基于系统软件上运行的软件,如QQ、360等。
3. 系统启动流程
电脑开机,首先会运行bios,这个软件会告诉计算机系统软件(也就是操作系统)的位置,电脑将操作系统加载到内存中,并让cpu去运行系统软件
4.应用软件运行流程
软件安装在硬盘,永久保存,运行的时候(也就是双击),这个动作相当于给操作系统发送指令,操作系统找到软件位置,并加载到内存,cpu从内存中调用软件数据并运行。
2、数据
- 数据的含义:是事实或观察的结果,是对客观事物的逻辑归纳,使用与表示客观事的未加工的原始素材。
数据是信息的表现形式和载体,可以是连续的值。
计算机中以二进制信息单元0,1表示,计算机中的各种字母,数字,语音,图形统称为数据,经加工后成为信息。
- 数据的表现形式:
数字数据:有阿拉伯数字字符表示
模拟数据:在某个区间产生的连续值,如图像,文字等。
3.计算机中的数字数据表现
- 进制:进位制,人们规定的一种进位方法。
位权:数制中每一固定位置对应的单位值成为位权
- 二进制:一种计数方法,逢二进一
计算机采用二进制的原因:
- 技术实现简单,模拟电路状态
- 简化运算规则
- 适合逻辑运算
- 易于进行转换
- 抗干扰能力强
二、python语言概述
1.python语言概述:
python:蟒蛇,创立者:Guido van Rossum,2002年更新了python2.x版本,2008年更新了python3.x版本
python语言应用方向
- 云计算: 云计算最火的语言, 典型应用OpenStack
- WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
- 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
- 系统运维: 运维人员必备语言
- 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
- 图形GUI: PyQT, WxPython,TkInter
编译型语言和解释型语言:
编译型: 一次性将源代码编译成目标代码(也就是机器码010101010)然后运行的编程语言。
代表语言:C、 C++
- 优点:执行效率高。 0.001s
- 缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题开发效率低。
解释型:逐行将将源代码编译成目标代码(也就是机器码010101010)逐行运行的编程语言。
代表语言:python
- 优点:可以跨平台、开发效率高、强大的第三方库
- 缺点:执行效率较低。 0.01s
python语言的优点:
python开发效率高(比其他的解释型语言都高)由于第三方库 避免重复造轮子。
- 高级语言。你不用去管内存级别的代码。
- 可嵌入性。Python代码可以移植到C/C++ 语言中。
- 可拓展性。python代码可以嵌入C/C++ 语言中。
- 可移植性:不同操作系统的移植。
python语言的缺点:
执行效率相对低。
python自身的原因不能多线程(并发编程会讲到)。
python解释器的类型:
- Cpython:官方推荐的解释器,可以将你的python代码转化成C语言识别的字节码。
- Jpython:可以将你的python代码转化成JAVA识别的字节码,运行。
- Ironpython:IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码
pypy:PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。
等等
2.编程语言的分类:
编译型和解释型
- 编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
- 解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
动态语言和静态语言
- 动态类型语言
动态类型语言是指在运行期间才去做数据类型检查的语言,也就是说,在用动态类型的语言编程时,永远也不用给任何变量指定数据类型,该语言会在你第一次赋值给变量时,在内部将数据类型记录下来。Python和Ruby就是一种典型的动态类型语言,其他的各种脚本语言如VBScript也多少属于动态类型语言。
- 静态类型语言
静态类型语言与动态类型语言刚好相反,它的数据类型是在编译其间检查的,也就是说在写程序时要声明所有变量的数据类型,C/C++是静态类型语言的典型代表,其他的静态类型语言还有C#、JAVA等。
强类型定义语言和弱类型定义语言
- 强类型定义语言
强制数据类型定义的语言。也就是说,一旦一个变量被指定了某个数据类型,如果不经过强制转换,那么它就永远是这个数据类型了。举个例子:如果你定义了一个整型变量a,那么程序根本不可能将a当作字符串类型处理。强类型定义语言是类型安全的语言。
- 弱类型定义语言
数据类型可以被忽略的语言。它与强类型定义语言相反, 一个变量可以赋不同数据类型的值。强类型定义语言在速度上可能略逊色于弱类型定义语言,但是强类型定义语言带来的严谨性能够有效的避免许多错误。另外,“这门语言是不是动态语言”与“这门语言是否类型安全”之间是完全没有联系的!
python是一门动态解释性的弱类型定义语言。
3.python安装环境
windows下安装Python(自动添加环境变量)以3,.5版本的举例:
官网下载:https://www.python.org/downloads/windows/
选择版本。
配置环境变量
更改完成
三、python基础语法结构
1.认识变量
定义:程序中用于保存和表示数据的占位符,一种抽象。
变量的命名:采用标识符来表示,关联标识符的过程叫命名
命名规则
硬性规定:
- 组成部分只能是:字母、数字、下划线
- 不能以数字开头
- 不能是python的关键字
- 区分大小写
常规规范:
- 不能用中文
- 命名要有含义,见名思意。
推荐命名方式:
- 下划线拼接:age_of_oldboy(官方推荐)
- 驼峰式:AgeOfOldboy
2.常量
定义:固定不改变的量
全部大写来命名,如:BIRTH_OF_CHINA = 1949
3.python保留字
概念:被编程语言内部定义并保留使用的标识符,python语言中共33个保留字,也叫关键字
- and elif import return
- as else in try
- assert except is while
- break finally lambda with
- class for not yield
- continue from or
- def global pass
- del if raise
4.注释和缩进
注释
程序中用作对代码和文件的解释说明,用于提高程序的可读性,不被执行
使用方法
- 单行注释:# 被注释内容
- 多行注释:'''被注释内容''',或者"""被注释内容"""
缩进
- 语法的一部分,缩进不正确程序运行出错
- 表达代码间包含和层次关系的唯一手段
- 长度一致,程序一致即可,一般用4个空格或一个tab
5.程序输入和输出
输入函数input(),从控制台获得用户输入的函数,<变量> = input(<提示信息字符串>)
python2中的input输入的是什么类型,获取到的就是什么类型
username = input('请输入用户名:')
输出函数print(),以字符串形式向控制台输出结果的函数,print(<拟输出字符串或字符串变量>)
python3中的input获取到的都是字符串类型
print('hello world!')
6.运算符
算数运算符 arithmetic operator
- + - * /:加减乘除
- %:模运算,也就取余数
- //:商运算,取整数
%模运算的真正操作原理:
- 用第一个数除以第二个数,得到最相近的两个商。取最小的数。
- 用第一个数减去第二个数和第一步的到的数的乘积。
赋值运算符 assignment operator
- 基本赋值运算符:=
- 扩展的赋值运算符:+=、-=、*=、/=、%=
如 x += y <==> x = x+y
比较运算符 compare operator
- <:小于,用于可比较变量之间的比较
- >:大于,用于可比较变量之间的比较
- =:等于,用于变量的赋值
- !=:不等于,用于判断两个字符是不是一样的
- ==:等于等于,用于判断两个字符是不是一样的,
逻辑运算符 logic operator
python中只包含3中逻辑运算符:and、or、not
逻辑运算符的结果是什么类型
x or y if x is true, return x, else return y x and y if x is true, return y, else return x
结果取决于两个操作数的类型!!!
- 针对and操作:第一个操作数如果是可以转成False的话,那么第一个操作数的值,就是整个逻辑表达式的值。
如果第一个操作数可以转成True,第二个操作数的值就是整个表达式的值。
- 针对or操作:第一个操作数如果是可以转成False的话,第二个操作数的值就是整个表达式的值。
如果第一个操作数可以转成True, 第一个操作数的值,就是整个逻辑表达式的值。
成员运算符
in 和 not in:判断某个元素是否属于某个范围内。
s = 'abcd' print('a' in s) # True