Python是一种面向对象的解释型语言, 源码和解释器CPython遵循 GPL协议。
年份 | 事件 |
---|---|
1989 | 荷兰人Guido van Rossum发明 |
1991 | 第一个公开发行版发行 |
当前版本 | 3.5.2 |
TIOBE年度语言
被TIOBE编程语言排行榜2007/2010两度评为年度语言,其他同样拥有这一殊荣的在总多的语言中目前只有Object-C和Java加上今年新晋的Go
年份 | 年度语言 |
---|---|
2003年 | C++ |
2004年 | PHP |
2005年 | Java |
2006年 | Ruby |
2007年 | Python |
2008年 | C |
2009年 | Go |
2010年 | Python |
2011年 | Objective-C |
2012年 | Objective-C |
2013年 | Transact-SQL |
2014年 | JavaScript |
2015年 | Java |
2016年 | Go |
安装
Linux或者Unix一般都会缺省安装,下载或者文档查询可以参照如下链接
环境变量:PATH
将Python的安装目录加入到PATH中即可
Python自身环境变量
环境变量名 | 详细 |
---|---|
PYTHONPATH | PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。 |
PYTHONSTARTUP | Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此文件中变量指定的执行代码。 |
PYTHONCASEOK | 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写. |
PYTHONHOME | 另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。 |
版本确认
python版本确认可以通过如下命令进行
[root@liumiaocn ~]# python --versionPython 2.7.5[root@liumiaocn ~]#
- 1
- 2
- 3
第一个Helloworld.py
内容:Helloworld.py
#!/usr/bin/pythonprint "Hello World"
- 1
- 2
执行:python Helloworld.py
结果
[root@liumiaocn ~]# python Helloworld.pyHello World[root@liumiaocn ~]#
- 1
- 2
- 3
#!/usr/bin/python为第一行信息,和shell脚本一样,是用来说明解释所用的shell或者python所在路径。
指导思想
The Zen of Python:There should be one– and preferably only one –obvious way to do it.同时有意的设计限制性很强的语法,比如缩进不正确可能通过编译的语言大概除此之外少有分店。如下代码将不能通过编译,会提示你”expected an indented block”,只有在第3行的print前加一个空格才能通过。其实仔细确认一下可能也会理解,因为在python中不像很多语言用{}来区分代码块。
#!/usr/bin/pythonif True:print "Hello World"
- 1
- 2
- 3
确认
[root@liumiaocn ~]# cat IndentSample.py#!/usr/bin/pythonif True:print "Hello World"[root@liumiaocn ~]# python IndentSample.py File "IndentSample.py", line 3 print "Hello World" ^IndentationError: expected an indented block[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
加上一个空格的缩进, 则能正常执行。
[root@liumiaocn ~]# cp IndentSample.py IndentSampleFixed.py[root@liumiaocn ~]# vi IndentSampleFixed.py[root@liumiaocn ~]# diff IndentSample.py IndentSampleFixed.py3c3< print "Hello World"---> print "Hello World"[root@liumiaocn ~]# python IndentSampleFixed.pyHello World[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
所以,在Python里,缩进还真不是小事,缩进表示块的开始,逆缩进表示块的结束。把这件事情重视起来,统一缩进必须上升到上纲上线的地步,不然,连编译都通不过的代码谈什么质量呢。
python保留字
python主要的保留字如下所示,全为小写
保留字 | 保留字 | 保留字 |
---|---|---|
and | exec | not |
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
大小写敏感
Python属于大小写敏感的编程语言,不过不敏感的语言也越来越少了
多行的写法
使用连接符:\
sum = 1 + \ 2 + \ 3print sum
- 1
- 2
- 3
- 4
{}或[]或()中不需要使用连接符
注释
注释类型 | 注释Sample |
---|---|
单行注释 | 注释内容 |
单行注释 | sum=1+1 #注释内容 |
多行注释 | 三个单引号开始 到 三个单引号结束中间的内容全为注释 |
多行注释 | 三个双引号开始 到 三个双引号结束中间的内容全为注释 |
帮助
使用python的在线帮助,比如string相关的方法的方法,使用如下方法(help查看详细文档,dir查看方法列表)
>>> import string>>> help(string)>>> dir(string)
- 1
- 2
- 3
python的各种库确认:ls -l /usr/lib64/python*/*.py
变量和作用域
python的变量根据其定义的位置分为全局变量和局部变量两种。局部变量只能用于被声明的函数内部,而全局则可在整个程序范围内使用。
标准数据类型
python支持的标准数据类型
项目 | 类型 | 说明 |
---|---|---|
Numbers | 数字 | 支持int/float/long/complex |
String | 字符串 | |
List | 列表 | 类似数组。下标从0开始,-1表示最后一个元素 |
Tuple | 元组 | 类似只读数组 |
Dictionary | 字典 | 类似Hash |
python所支持的复数类型complex的虚部和实部的类型为float,一般表示为complex(a,b)
数据类型转换函数
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
long(x [,base] ) | 将x转换为一个长整数 |
float(x) | 将x转换到一个浮点数 |
complex(real [,imag]) | 创建一个复数 |
str(x) | 将对象 x 转换为字符串 |
repr(x) | 将对象 x 转换为表达式字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
frozenset(s) | 转换为不可变集合 |
chr(x) | 将一个整数转换为一个字符 |
unichr(x) | 将一个整数转换为Unicode字符 |
ord(x) | 将一个字符转换为它的整数值 |
hex(x) | 将一个整数转换为一个十六进制字符串 |
oct(x) | 将一个整数转换为一个八进制字符串 |
常见比较和判断
类型判断例
判断内容 | 详细说明 |
---|---|
是否数字类型 | type(x) is types.IntType 需要import types |
是否数字类型 | type(x) == types(0) |
是否String类型 | type(x) is types.StringType 需要import types |
是否String类型 | type(x) is type(” “) |
条件判断
条件判断入门实例
[root@liumiaocn ~]# cat basic-if1.py#!/usr/bin/pythonscore = 50if score < 60 : print 'E'elif score < 70 : print 'D'elif score < 80 : print 'C'elif score < 90 : print 'B'else : print 'A'[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
执行确认
[root@liumiaocn ~]# python basic-if1.pyE[root@liumiaocn ~]#
- 1
- 2
- 3
循环控制
循环控制入门实例
[root@liumiaocn ~]# cat basic-loop.py#!/usr/bin/pythonlevel = 0while level < 10 : cnt = 0 while cnt < 10-level : cnt = cnt + 1 print(" ") , ascnt = 0 while ascnt < 2*level-1 : ascnt = ascnt + 1 print("*") , print("") level = level + 1[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
执行
[root@liumiaocn ~]# python basic-loop.py * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
函数
使用def进行定义,简单示例如下:
[root@liumiaocn ~]# cat basic-func.py#!/usr/bin/pythondef hellofun( str ): print "Hello : ", print str; return;hellofun("liumiao")[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
执行确认
[root@liumiaocn ~]# python basic-func.pyHello : liumiao[root@liumiaocn ~]#
- 1
- 2
- 3
debug
调试有很多种方式,使用pdb(python debugger)是最常见的方式也不受IDE等的限制,此处简单介绍pdb的用法
gdb命令 | 描述 |
---|---|
break 或 b | 设置断点 |
continue 或 c | 继续执行程序 |
list 或 l | 查看当前行的代码段 |
step 或 s | 进入函数 |
return 或 r | 执行代码直到从当前函数返回 |
exit 或 q | 中止并退出 |
next 或 n | 执行下一行 |
pp | 打印变量的值 |
help | 帮助 |
执行方式:python -m pdb python脚本名称
调试示例
对上文的循环例子的脚本使用pdb进行调试如下:
[root@liumiaocn ~]# python -m pdb basic-loop.py> /root/basic-loop.py(3)<module>()-> level = 0(Pdb) l 很多与gdb使用方式都一样,l for list,列出上下文source 1 #!/usr/bin/python 2 3 -> level = 0 4 while level < 10 : 5 cnt = 0 6 while cnt < 10-level : 7 cnt = cnt + 1 8 print(" ") , 9 10 ascnt = 0 11 while ascnt < 2*level-1 :(Pdb) b 11 设定断点Breakpoint 1 at /root/basic-loop.py:11(Pdb) c 继续执行 > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) pp ascnt 查询变量值0(Pdb) p cnt10(Pdb) c > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) c* > /root/basic-loop.py(11)<module>()-> while ascnt < 2*level-1 :(Pdb) help 查看帮助Documented commands (type help <topic>):========================================EOF bt cont enable jump pp run unta c continue exit l q s untilalias cl d h list quit step upargs clear debug help n r tbreak wb commands disable ignore next restart u whatisbreak condition down j p return unalias whereMiscellaneous help topics:==========================exec pdbUndocumented commands:======================retval rv(Pdb) clear 清除断点Clear all breaks? y(Pdb) c* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *The program finished and will be restarted> /root/basic-loop.py(3)<module>()-> level = 0(Pdb) q 退出[root@liumiaocn ~]#
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
总结
至此,基本的词法,简单的语法应该基本能写了,问题解决时候的debug也有些微涉猎,很基础的问题应该可以接触了。但是这还远远不够,需要我们在实际的工作中慢慢的升级我们的技能。
再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow