分享

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

 hoezigin 2019-03-22

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.
下载 https://www./downloads/
文档 https://www./doc/

环境变量:PATH

将Python的安装目录加入到PATH中即可

Python自身环境变量

环境变量名 详细
PYTHONPATH PYTHONPATH是Python搜索路径,默认我们import的模块都会从PYTHONPATH里面寻找。
PYTHONSTARTUP Python启动后,先寻找PYTHONSTARTUP环境变量,然后执行此文件中变量指定的执行代码。
PYTHONCASEOK 加入PYTHONCASEOK的环境变量, 就会使python导入模块的时候不区分大小写.
PYTHONHOME 另一种模块搜索路径。它通常内嵌于的PYTHONSTARTUP或PYTHONPATH目录中,使得两个模块库更容易切换。

版本确认

python版本确认可以通过如下命令进行

[root@liumiaocn ~]# python --version
Python 2.7.5
[root@liumiaocn ~]#

第一个Helloworld.py

内容:Helloworld.py

#!/usr/bin/python
print "Hello World"

执行:python Helloworld.py
结果

[root@liumiaocn ~]# python Helloworld.py
Hello World
[root@liumiaocn ~]#

#!/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/python
if True:
print "Hello World"

确认

[root@liumiaocn ~]# cat IndentSample.py
#!/usr/bin/python
if True:
print "Hello World"
[root@liumiaocn ~]# python IndentSample.py
  File "IndentSample.py", line 3
    print "Hello World"
        ^
IndentationError: expected an indented block
[root@liumiaocn ~]#

加上一个空格的缩进, 则能正常执行。

[root@liumiaocn ~]# cp IndentSample.py IndentSampleFixed.py
[root@liumiaocn ~]# vi IndentSampleFixed.py
[root@liumiaocn ~]# diff IndentSample.py IndentSampleFixed.py
3c3
< print "Hello World"
---
>  print "Hello World"
[root@liumiaocn ~]# python IndentSampleFixed.py
Hello World
[root@liumiaocn ~]#

所以,在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 +       3
print sum

{}或[]或()中不需要使用连接符

注释

注释类型 注释Sample
单行注释 注释内容
单行注释 sum=1+1 #注释内容
多行注释 三个单引号开始 到 三个单引号结束中间的内容全为注释
多行注释 三个双引号开始 到 三个双引号结束中间的内容全为注释

帮助

使用python的在线帮助,比如string相关的方法的方法,使用如下方法(help查看详细文档,dir查看方法列表)

>>> import string
>>> help(string)
>>> dir(string)

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/python

score = 50
if score < 60 :
  print 'E'
elif score < 70 :
  print 'D'
elif score < 80 :
  print 'C'
elif score < 90 :
  print 'B'
else :
  print 'A'
[root@liumiaocn ~]#

执行确认

[root@liumiaocn ~]# python basic-if1.py
E
[root@liumiaocn ~]#

循环控制

循环控制入门实例

[root@liumiaocn ~]# cat basic-loop.py
#!/usr/bin/python

level = 0
while 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 ~]#

执行

[root@liumiaocn ~]# python basic-loop.py

                  *
                * * *
              * * * * *
            * * * * * * *
          * * * * * * * * *
        * * * * * * * * * * *
      * * * * * * * * * * * * *
    * * * * * * * * * * * * * * *
  * * * * * * * * * * * * * * * * *
[root@liumiaocn ~]#

函数

使用def进行定义,简单示例如下:

[root@liumiaocn ~]# cat basic-func.py
#!/usr/bin/python

def hellofun( str ):
  print "Hello : ",
  print str;
  return;

hellofun("liumiao")
[root@liumiaocn ~]#

执行确认

[root@liumiaocn ~]# python basic-func.py
Hello :  liumiao
[root@liumiaocn ~]#

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 cnt
10
(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      unt
a      c          continue  exit    l     q        s        until
alias  cl         d         h       list  quit     step     up
args   clear      debug     help    n     r        tbreak   w
b      commands   disable   ignore  next  restart  u        whatis
break  condition  down      j       p     return   unalias  where

Miscellaneous help topics:
==========================
exec  pdb

Undocumented 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 ~]#

总结

至此,基本的词法,简单的语法应该基本能写了,问题解决时候的debug也有些微涉猎,很基础的问题应该可以接触了。但是这还远远不够,需要我们在实际的工作中慢慢的升级我们的技能。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多