十五分钟快速入门系列 Python基础

                       
 

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一般都会缺省安装,下载或者文档查询可以参照如下链接

               
项目 链接
官网 https://www.python.org
下载 https://www.python.org/downloads/
文档 https://www.python.org/doc/

环境变量: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 print
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 < 60print 'E'elif score < 70print 'D'elif score < 80print 'C'elif score < 90print 'B'elseprint '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 < 105      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

猜你喜欢

转载自blog.csdn.net/qq_43679903/article/details/86363099