一、简介
1、背景知识
Python是一门简明并强大的面向对象的编程语言。
WEB开发、软件开发、科学运算、大数据分析、自动化运维等方面广泛使用
主流语言的区别和特点
C\C++:学习成本高,学习周期长,偏系统底层,在开发硬件驱动、嵌入式、游戏引擎开发等领域有广泛的应用
Java:目前使用最广泛的编程语言,第一个跨平台的语言,在大型ERP软件开发\安卓APP开发\网站开发领域使用广泛
Python:使用领域几乎和Java一样广泛,但开发效率要高于Java,且学习成本较低,在科学运算\数据分析\网站开发\爬虫开发\
云计算\自动化运维\自动化测试等领域优势明显
PHP:使用最广泛的Web开发语言,非常适合中小型网站开发,学习成本较低,开发效率高
2、Python简介
Python创始人 Guido Van Rossum,人称"龟叔",1989年圣诞节期间,为了在阿姆斯特丹打发时间,开发的一个新的脚本解释程序
作为ABC语言的一种继承
早期翻译 编译/解释,语言分类
编译型 | 解释型 | 混合型 |
C | JavaScript | Java |
C++ | Python | C# |
Go | Ruby | |
Swift | PHP | |
Object-C | Perl | |
Pascal | Erlang |
编译型
优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
缺点:编译之后如果需要修改,就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,
需要根据运行的操作系统环境编译不同的执行文件。
解释型
优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
缺点 :每次运行的时候都要解释一遍,性能上不如编译型语言。
Python优缺点
优点:简单易学,入门容易
高级语言----无需考虑诸如如何管理你的程序使用的内存一类的底层细节
可移植性----你的所有Python程序无需修改就几乎可以再市场上所有的系统平台上运行
可扩展模式----如果你需要将你的一段关键代码运行的更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们
可嵌入型----你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能
缺点:
运行速度慢
代码不能加密
线程不能利用多CPU问题(有折中的解决方案)
二、变量
变量定义:Variables are used to store infomation to referrenced and manipulated in a computer program.
用于存储程序运行的中间运算结果
变量在程序中用一个变量名表示
在Python中,等号 = 是赋值语句,可以把任意数据类型赋值给变量,同一个变量可以反复赋值,而且可以是不同类型的变量
myFisrtName = "Jonathan" myLastName = "Ni" |
请不要把赋值语句的等号等同于数学的等号。比如下面的代码:
x = 8 x = x + 2 |
从数学上理解 x = x + 2 是不成立的。在程序中,赋值语句先计算右侧的表达式x + 2,得到结果10,再赋给变量x。
由于x之前的值是8,重新赋值后,x的值变成10。
理解变量在计算机内存中的表示非常重要,如以下声明变量并赋值。
a = "ABC" |
Python解释器干了两件事情:
常量就是不能变的量,通常用全部大写的变量名表示。
PI = 3.14159265359 |
总结:
在计算机内部,任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
三、数据类型
计算机就是可以做数学计算的机器。计算机程序理所当然要处理各种数值。除了数值,计算机还可以处理文本、图形、音频、视频、网页等
各种数据。不同的数据,需要定义不同的数据类型。
数字
整数:表示方法和数学上的写法一样,如1, -100, 0, 1000等。或16进制表示,0xffffff, 0xabcd等
浮点数:也就是小数,如0.99, -1.25, 88.88等。或者科学计数法表示1.23e8, 1.2e-8等
复数:由实数部分和虚数部分组成,一般形式为 x + yj,如(-5+4j)等
数字没有大小限制,超出一定范围就直接表示为inf(无限大)
字符串
字符串是以单引号‘或双引号"括起来的任意文本,比如‘abc‘,"XYZ"等等。‘ 或 " 本身只是一种表示方式,不是字符串的一部分,
例如 ‘abc‘只有a,b,c 这3个字符。
如果 ‘ 本身也是一个字符,那就可以用 "" 括起来,比如 "I‘m OK" 包含的字符是I, ‘, m, 空格, O, K这6个字符。
字符串内部既包含 ‘ 又包含 " 可以用转义字符 \ 来标识。如‘I\‘m \"OK\"!‘,表示I‘m "OK"!
转义字符可以转义很多字符,比如\n表示换行,\t表示制表符,\\表示字符\
如果字符串内部有很多换行,可用‘‘‘.......‘‘‘的格式表示多行内容。
字符串常用功能
string.strip([chars]) 方法用于移除字符串头尾指定的字符(默认为空格)
" Jonathan ".strip() >>> "Jonathan" ";Jonathan;;".strip(";") >>> "Jonathan" |
参数: chars -- 移除字符串头尾指定的字符
返回值:返回移除字符串头尾指定的字符生成的新字符串。原字符串保持不变。
len(string)方法返回字符串长度。
len("Jonathan") >>> 8 |
参数: str -- 字符串
返回值:字符串长度
string.index(str, beg=0, end=len(str))方法检测字符串中是否包含子字符串 str
"Jonathan".index("J") >>> 0 "Jonathan".index("J",1) >>> substring not found "Jonathan".index("an") >>> 6 |
参数:
str -- 指定检索的字符串
beg -- 开始索引,默认为0。
end -- 结束索引,默认为字符串的长度
返回值:如果包含子字符串返回开始的索引值,否则抛出异常。
访问字符串中的值
Python 不支持单字符类型,单字符也在Python也是作为一个字符串使用。
访问子字符串,可以使用方括号来截取字符串
"Jonathan"[0] >>> "J" # 下标从0开始 "Jonathan"[0:3] >>> "Jon" # 顾头不顾尾 "Jonathan"[-1] >>> "n" # 倒数第一个 "Jonathan"[-3:-1] >>>"ha" # 顾头不顾尾 "Jonathan"[-3:0] >>> "" # 不存在从后往前截取情况 "Jonathan[-3:] >>> "han" # 解释器识别为从倒数第三个一直到最后全部字符 "Jonathan"[] >>> invalid syntax # 解释器区分不了到底时单个字符还是区间字符 "Jonathan"[:] >>> "Jonathan" # 解释器识别为全部字符 "Jonathan"[0:len("Jonathan")] >>> "Jonathan" "Jonathan"[-len("Jonathan"):] >>> "Jonathan" "Jonathan"[::-2] >>> "Jnta" # 最后一位表示步长 2 |
字符串拼接
"Jon" + "nathan" >>> "Joanthan" # 遇 + ,解释器需重新申请内存 |
格式化输出
name = "Jonathan" print("My name is %s."%(name) >>> "My name is Jonathan." |
布尔型
布尔值和布尔代数的表示完全一致,一个布尔值只有True,False两种值(注意大小写),布尔值可以用 and、or、和not运算
and运算是与运算,只有所有都为True,and运算结果才是True
or运算是或运算,只要其中有一个为True,or运算结果就是True:
not运算是非运算,它是一个单目运算符,把True变成False,False变成True
布尔值经常用在条件判断中
if age >= 18: print("adult") else: print("teenager") |
空值
空值是Python里一个特殊的值,用None表示。None不能理解为0,因为0是有意义的,而None是一个特殊的空值。
列表
列表是Python中最常用的数据类型,通过列表可以对数据进行最方便的存储修改等操作
定义列表 names = ["Jon", "Alex", "Tom", "Catherine"]
通过下标访问列表中的元素,下标从0开始计数
names[0] >>> "Jon" names[-1] >>> "Catherine" |
对列表进行操作
names[0] = "Jonathan" # 修改元素 names.append("Jim") >>> ["Jonathan", "Alex", "Tom", "Catherine", "Jim"] # 在列表最后附件元素 names.insert(2, "Linda") >>> ["Jonathan", "Alex", "Linda", "Tom", "Catherine", "Jim"] #在下标为2的地方插入元素,其他元素后移动 names.remove("Linda") >>> ["Jonathan", "Alex", "Tom", "Catherine", "Jim"] # 删除第一个检索到的元素 del names[4] >>> ["Jonathan", "Alex", "Tom", "Catherine"] # 按下标删除元素 names.index("Alex") >>> 1 # 返回下标 names.sort() >>> ["Alex", "Catherine", "Jonathan", "Tom"] # 按照ASCII正序排列 names.reverse() >>> ["Tom", "Jonathan", "Catherine", "Alex"] # 元素反转 names.count("Tom") >>> 1 # 返回出现次数 |
四、运算
算术运算
比较运算
赋值运算
逻辑运算
成员运算
身份运算
位运算
五、流程控制
条件
循环
六、文件操作
原文:http://www.cnblogs.com/jonathan1314/p/6262212.html