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 --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.pyFile "IndentSample.py", line 3print "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/pythonscore = 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/pythonlevel = 0
while level < 10 :cnt = 0while cnt < 10-level :cnt = cnt + 1print(" ") ,ascnt = 0while ascnt < 2*level-1 :ascnt = ascnt + 1print("*") ,print("")level = level + 1
[root@liumiaocn ~]#

执行

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

函数

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

[root@liumiaocn ~]# cat basic-func.py
#!/usr/bin/pythondef 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,列出上下文source1     #!/usr/bin/python23  -> level = 04     while level < 10 :5      cnt = 06      while cnt < 10-level :7        cnt = cnt + 18        print(" ") ,910      ascnt = 011      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  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 ~]#

总结

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

十五分钟快速入门系列:Python基础相关推荐

  1. python快速入门系列_十五分钟快速入门系列:Python基础

    Python是一种面向对象的解释型语言, 源码和解释器CPython遵循 GPL协议. 年份 事件 1989 荷兰人Guido van Rossum发明 1991 第一个公开发行版发行 当前版本 3. ...

  2. 【Python零基础快速入门系列 | 03】AI数据容器底层核心之Python列表

    • 这是机器未来的第7篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124957520 <Python零基础快速入门 ...

  3. 【Python数据科学快速入门系列 | 04】Numpy四则运算、矩阵运算和广播机制的爱恨情仇

    这是机器未来的第43篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/126493989 文章目录 1. 概述 2. 四则运算 ...

  4. 【Python零基础快速入门系列 | 07】浪漫的数据容器:成双成对之字典

    这是机器未来的第11篇文章 原文首发链接:https://blog.csdn.net/RobotFutures/article/details/125038890 <Python零基础快速入门系 ...

  5. 【Python数据科学快速入门系列 | 06】Matplotlib数据可视化基础入门(一)

    这是机器未来的第52篇文章 原文首发地址:https://robotsfutures.blog.csdn.net/article/details/126899226 <Python数据科学快速入 ...

  6. python r转义_Python快速入门系列之二:还学不会我直播跪搓衣板

    Python作为一个,目前最火的编程语言之一,已经渗透到了各行各业.它易学好懂,拥有着丰富的库,功能齐全.人生苦短,就用Python. 这个快速入门系列分为六篇,包含了Python大部分基础知识,每篇 ...

  7. NumPy 快速入门系列:应用统计学基础概念、相关统计指标与NumPy的实现

    NumPy 快速入门系列:应用统计学基础概念.相关统计指标与NumPy的实现 前言: 统计学导论: 统计学定义: 统计学分类: 统计学基本概念: 统计过程: 统计指标与NumPy: 用 Python ...

  8. 【安全利器SELinux快速入门系列 | 01】SELinux基础入门

    这是机器未来的第35篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/125914553 文章目录 1. 研究目标 2. se ...

  9. 【物体检测快速入门系列 | 01 】基于Tensorflow2.x Object Detection API构建自定义物体检测器

    这是机器未来的第1篇文章 原文首发地址:https://blog.csdn.net/RobotFutures/article/details/124745966 CSDN话题挑战赛第1期 活动详情地址 ...

最新文章

  1. Apache的服务端包含--SSI
  2. CSMAR database query sample
  3. c语言结构体与共同体课件,《结构体与共同体》PPT课件.ppt
  4. python语言有哪些类型的运算符_python(4)-变量 数据类型和运算符
  5. 洛谷——P1423 小玉在游泳
  6. 2D转换之旋转rotate(CSS3)
  7. css srcset,研究一下响应式图片加载属性srcset和sizes_html/css_WEB-ITnose
  8. 汉王考勤机管理系统服务器,汉王考勤管理系统7
  9. 【模拟考勤打卡程序vim报错分享】
  10. linux添加变色龙引导,u盘启动盘制作win7变色龙引导工具
  11. lagrange量中的u和v的来历
  12. LeetCode - 448 - 找出所有数组中消失的数字(find-numbers-disappeared-in-array)
  13. 畅享7 plus android8,华为畅享7plus和荣耀8哪个好?
  14. Holt-Winters双指数平滑的java实现
  15. python re库 正则表达式
  16. 阿里系App抓包分析(三)
  17. java车牌识别系统mysql
  18. 金博科技果园分销商城系统APP定制开发
  19. 你真的知道如何在B站赚钱吗?
  20. 蒲公英企服平台对话奈学教育CEO孙玄——旨在让每一个人都有逆袭的机会。

热门文章

  1. 野蛮成长的健身行业何时能迎来春天?
  2. CTFHub-web前置技能-请求方式、302跳转、cookie、基础认证、响应包源代码
  3. 成功解决Unable to allocate xxx MiB for an array with shape (xxxx, xxxx)
  4. 在MySQL中创建Oracle中的dept、emp、bonus、salgrade表
  5. oracle查询备份大小,【EXPDP】使用EXPDP备份数据时预估大小——ESTIMATE参数
  6. strcmp,strcpy,strstr函数
  7. MSCKF 2.0 理论推导以及能观性分析
  8. Linux——shell脚本
  9. Linux之find 命令
  10. 解决Vue配置路由不生效,自动跳转到首页