python是一种解释性的,面向对象的,带有动态语义的高级程序设计语言。它拥有传统编译型程序所有的强大通用功能,也有简单脚本语言和解释性程序语言的易用性。
Python的应用
- WEB开发,定了WSGI标准应用接口来协调http服务器与基于python的web程序之间的沟通。
- GUI开发,用wxPython或PyQt来开发跨平台的桌面软件。
- 操作系统,大多数Linux发布版以及NetBSD,OpenBSD和MacOS X都集成了python,python标准库中包含了多个调用作业系统功能的库。
- 多媒体,三维游戏场景制作。
Python的语法基础
经典的hello world (本系列使用python2.7)
myString = 'Hello,World!' #无须定义变量类型
print myString
1. 变量
1.1 变量类型
必须有明确的数据类型,程序才能分配gei常量,变量精确的存储大小。python的标准数据类型如下
- 整形和长整形,并不严格区分,整形值后加"L" 即为长整形
print type(3)
print type(3L)
输出结果为
- 布尔型,属于整形的子类,True和False两个值,本质上是用1,0存储
x = True
y = False
print x
print y
print int(x)
print int(y)
输出结果为
True
False
1
0
- 浮点型,即数学中的实数,可以类似科学计数法表示
print 9.8e3
print -4.78e-2
print type(-4.78e-2)
输出结果如下
9800.0
-0.0478
- 复数型
![](http://chart.googleapis.com/chart?cht=tx&chl= \Large j=\sqrt{-1})
如上图,j是一个虚数,实数 + 虚数 就是复数,虚数部分要有j。
print type(2.4+5.6j)
print type(5+0j)
输出结果
复数可以分离成实数和虚数部分,如下面的代码:
x = 2.4 + 5.6j
print x.imag #分离虚数
print x.real #分离实数
print x.conjugate() #复数的共轭(实数部分相同而虚数部分互为相反数的两个复数)
输出结果如下
5.6
2.4
(2.4-5.6j)
- 序列类型
- 字符串单引号,双引号,三引号内的都是字符串,不可变类型。
- 列表 ,强大的类型,用方括号[]界别,可变类型。
- 元组, 与列表类似,用小括号()界别,不可变类型。
- 映射类型 字典
用大括号{ }界别,类似于哈希表的键值对
d = {'name':'lijun','gender':'male','age':18} #dictionary
print d['name'] #ouput: lijun
1.2 命名规则
- 首字符是字母或下划线 (下划线通常用来表示内建标识符, _XXX 通常表示私有的)
- 大小写敏感(全大写的是符号常量)
2. 关键字
3. 赋值
3.1 python的语言类型
Python是动态的强类型语言,不需要显示声明,根据值确定类型. 以引用的方式实现赋值,将一个引用指向对应的内存单元。
3.2 增量赋值
3.3 多重赋值 , 如
PI = pii = 3.14
3.4 多元赋值 ,等号左右两边都以元组的方式出现
X = 1
Y = 2
X,Y
可以输出1,2
另外将两个值交换,可以直接如下赋值
X,Y = Y, X #在其他语言中,要交换两个值的话,需要用到第三个变量
exg. PI, r = 3.14159, 3 #最好左右都用括号
4. 基本运算符
4.1. 算数运算符
+a # 正数
-a # 負数
a + b # 加算
a - b # 減算
a * b # 乗算
a / b # 除算 / 传统除法
a % b # a を b で割った余り % 取余数
a ** b # a の b 乗 乘方 ,如33 为27
a // b # 切り捨て除算 // 整除,舍弃小数点后数字
4.2. 比较运算符
a == b # a が b と等しい
a != b # a が b と異なる
a < b # a が b よりも小さい
a > b # a が b よりも大きい
a <= b # a が b 以下である
a >= b # a が b 以上である
a <> b # a が b と異なる
a is b # a が b と等しい
a is not b # a が b と異なる
a in b # a が b に含まれる
a not in b # a が b に含まれない
字符串按照ASCII码值大小比较
4.3. 逻辑运算
not: 取相反
and: 一个false 则为false
or:一个true则为true
4.4. 字符运算
- 原始字符操作符(r/R),用于一些不希望转义字符起作用的地方
f = open(r'C:\99.tool\hello.txt')
f = open('C:\\99.tool\\hello.txt')
- Unicode字符串操作符(u/U),转换成Unicode字符串
4.5. 位运算
~a # ビット反転
a & b # AND:論理積(aもbも1のビットが1)
a | b # OR:論理和(aまたはbが1のビットが1)
a << b # b ビット左シフト
a >> b # b ビット右シフト
a ^ b # XOR:排他的論理和(aまたはbが1のビットが1)a与b的对应位进行异或运算,同为0或者同为1时,对应位结果为0;否则为1。比如,假设,a的值为二进制的1010,b的值为二进制的1100,那么a^b = 0110
5 模块与函数
5.1 函数
类似于数学中的函数,完成特定功能的代码,比如abs(x),round(x)等。
通过dir(builtin)查看内建函数(如 abs(x), type(x))
-
内建函数
5.2 模块
- 一个完整的python文件就是一个模块,如math.py数学库,python中通常用"import 模块"的方式将现成模块中的函数,类重用到其他代码中。
用help(math)打印所有math内部的函数和变量
- 导入多个库 import M1,M2,M3.
import math
print math.pi #ouput: 3.14159265359
5.3 包,包是一个有层次的文件目录结构
AAA/
-----CCC/
----------c1.py
----------c2.py
导入 import AAA.CCC.c1
使用 AAA.CCC.c1.func1()
5.4 库,一组有相关功能的模块的集合,python的一大特色就是有大量的标准库 和 第三方库
第一章测验
1,编程题
简单的输入输出:编程实现输入姓、名的提示语并接受用户输入,并单独显示姓、名和全名,执行效果如下所示:
Input your surname:ZHANG
Input your firstname:Dazhuang
Your surname is:
ZHANG
Your firstname is:
Dazhuang
Your full name is:
ZHANG Dazhuang
python2.7中的程序如下:
surname = raw_input('Input your surname:')
firstname = raw_input('Input your firstname:')
print 'Your surname is:'
print surname
print 'Your firstname is:'
print firstname
print 'Your full name is:'
print surname,firstname
TODO
- 整理什么是动态/静态,强类型/弱类型 编程语言
- 整理 列表 、元组 、字典的差异
参考资料
1, 南京大学 张莉老师《用Python玩转数据》视频课程