一.Pythen基础:
Pythen是一种计算机编程语言:它是我们写出的,为了能够使计算机能够理解并执行的代码程序。和我们日常使用的自然语言不同,在不同的语境下有不同的理解,计算机要根据编程语言执行任务,就必须保证编程语言在任何时候的理解都是唯一的,否则不知所措。写出的程序决不能有歧义,执行结果唯一。任何一种编程语言都有自己的一套语法,编译器或者解释器就是负责把符合语法的程序代码转换成CPU能够执行的机器码,然后执行。
1.语法:
Python的语法比较简单,采用缩进方式,写出来的代码就像下面的样子:
# print absolute value of an integer:
a = 100
if a >= 0:
print(a)
else:
print(-a)
以#
开头的语句是注释,注释是给人看的,可以是任意内容,解释器会忽略掉注释。
其他每一行都是一个语句,当语句以冒号:
结尾时,缩进的语句视为代码块。
缩进有利有弊。好处是强迫你写出格式化的代码,但没有规定缩进是几个空格还是Tab。按照约定俗成的管理,应该始终坚持使用4个空格的缩进。
缩进的另一个好处是强迫你写出缩进较少的代码,你会倾向于把一段很长的代码拆分成若干函数,从而得到缩进较少的代码。
缩进的坏处就是“复制-粘贴”功能失效了,当你重构代码时,粘贴过去的代码必须重新检查缩进是否正确。此外,IDE很难像格式化Java代码那样格式化Python代码。
最后,请务必注意,Python程序是大小写敏感的,如果写错了大小写,程序会报错。
2.数据类型:
在编程语言中,特别是面向对象语言,任何东西都是抽象为某一种类型,Pythen作为面向对象语言中的一种,同样内置了基本的数据类型,使得计算机达到“计算的功能”,这里的计算不能是基础的数值运算,同样能够处理我们自定义的业务逻辑(业务逻辑就是我们按照一定的流程和数值计算得到最终结果),为了能够表示这些不同于数值的计算类型,比如处理文本,图片,音频、视频的网页文件等各种数据,我们自定义了对应的数据结构以渴望尽可能形象的描述这些数据,这些定义的数据结构我们就称之为数据类型。
任何面向对象的语言都有自己的基本的数据类型,同时我们自己开发时候自定义类型。Pythen内置数据类型:
1) 整数
与我们数学运算相同,有正数 0 负数,同时也可以用不同进制(16进制Ox前缀0-9a-f)
2) 浮点数
在数学中也称之为小数。使用科学记数法时候0.0012 = 1.2e-3
整数与浮点数在计算机的存储是不同的结构,整数运算永远都是唯一(精确的),浮点数则可能有四舍五入
除法:
Pythen中有两种除法运算:一种是/, 另外一种是//
a = 10 / 3
结果是3.3333333333333335
/除法计算结果是浮点数,即使两个整数恰好整除,结果也是浮点数: 9 / 3 结果是3.0
//除法,也称之为地板除,两个整数的除法结果仍然是整数结果是取结果的整数部分(向下取整)9 // 3 结果3
取余运算:10 % 3 结果是1
无论整数做//
除法还是取余数,结果永远是整数,所以,整数运算结果永远是精确的
3) 字符串
字符串是以单引号''或者双引号“”括起来的任意文本,比如'a' 和 “a”都是表示字符串a,同时如果字符串中含有’ 或者",则需要括在里:字符串 I'm a boy. 写法为:"I'm a boy.",如果同时包含了' 和 “"那么必须使用转移字符\ 表示:字符串I'm a boy named "cw". 写法为:‘I\'m a boy named \"cw\"’。
转义字符:
a.转义字符\:它是解释器在解析代码时候,主动告诉它这个字符不是按照默认的规则来匹配语法,而是将\后面的字符按照特殊意义输出。如果没有\,这个字符串就会解释成:最开始的左边‘ 与其后的第一个’ 匹配,接下来的字符串必然会报语法错误。
b.转义字符\
可以转义很多字符,比如\n
表示换行,\t
表示制表符,字符\
本身也要转义,所以\\
表示的字符就是\
c.为了简化语法,pythen提供了r‘’ 表示在''内部的所有字符都不转义,全部原样输出。r‘I'm a boy named "cw"’
d.如果字符串内部有很多换行,用\n
写在一行里不好阅读,为了简化,Python允许用'''...'''
的格式表示多行内容:
print('''line1
line2
line3''') 结果就是分别换行。
4) 布尔值:
与布尔代数完全相同,一个布尔值只有两种类型:True/False二者之一。(注意大小写,Pythen大小写敏感)
布尔值可以使用and or not运算。
and 与运算、并且运算,运算方都是True才是True,否则False
or 或运算、或者运算,运算方只要有一个为True就是为True否则False
not 非运算,它是一个单目运算符。取反,not True就是False
5) 空值
空值是Pythen中的一个特殊的值。使用none关键字表示,表示没有。
还有其他的比如列表类型,字典类型等,用户自定义类型。
3.变量
变量的基本概念就是我们初高中时代运算方程变量类似,指代某一个特殊的东西(对象/实例)在此扩展延伸可以表示任意类型。变量在程序在程序中就是一个变量名,变量名必须是字母数字下划线的组合,并且不能数字开头。
a = 3 a就是一个变量,表示整数类型3
在Pythen中,=是一个赋值语句,可以把任意类型数据赋值给变量,同一个变量可以反复赋值并且可以是不同的类型的变量:
a = 3 #a是整数3
a = True #a是布尔类型True
这种变量本身类型不固定的语言成为动态语言,与之对应的则是静态语言:静态语言在帝国内衣变量的时候必须声明变量类型,如果赋值的时候类型不匹配,就会报错。
=赋值语句与数学运算的=完全不同,
x = 2
x = x + 2
这个从数学上理解是完全错误的,但是在程序中,赋值语句先计算右侧表达式的值12,在赋值给变量x。x从最初的10变为12
在计算机中,变量和对象在计算机中内存中的存储如下:
a = 'a'
Pythen解释器做了以下工作:
1.在内存中创建一个‘a’的字符串对象
2.内存中创建一个名为a的变量,并把它指向‘a’对象的内存地址。
例子:
a= 'A'
b = a
a = 'B'
print(b)
这个代码的结果是什么呢?
我们来分析:
1.首先创建一个字符串对象‘A’,
2.创建变量a,并指向字符串对象‘A’
3.创建变量b,同时也指向字符串对象‘A’
4.创建字符串对象‘B’
5.将变量a的指向改为字符串'B'
这个时候我们发现,不管a怎么改,b变量永远都是指向字符串对象'B',所以结果显然是B
4.常量
所谓常量,就是一旦创建,就不能改变的变量。比如圆周率π就是一个常量,数学底数e也是常量等。在Pythen中约定:常量全部使用大写变量名
PI = 3.1415926
实际上,在Pythen因为是动态语言,没有任何机制来保证PI是不能被改变的,它不能象静态语言java那样使用final关键字强制保证,但是这时Pythen的约定和习惯,在计算机中约定大于配置原理,这时不可动摇的。这时候你一定要强制去修改,只能呵呵。