python基础3-字符串操作

上一篇我们介绍了Python的安装和基本的数字类型,从这篇开始我们学习几个python核心的序列类型,我们先从字符串开始,在开始前我先给大家纠正关于编程学习的一个误区,就是可能很多人认为程序员非常擅长数学,数学不好的人估计很难学好编程,所以有的人还没开始就放弃了,就我个人感觉,数学肯定是很重要,但没有到离开数学就无法编程的地步,当然这是我的想法,所以为了验证我自己的想法,我特意采访了我们公司大概10几位程序员,他们编程经历最小的2年,最长的大概有10年,其中还有一位数学本科生,他们给出的答案基本相似,包括那位数据专业毕业的同事,说他们现在编程根本用不到什么数学知识,编程内容主要还是处理业务逻辑,所以基本可以看出,学好数学不是学好编程的必要条件,但编程需要逻辑思维,那什么是逻辑思维?说白了就是做事的先后顺序,这个我们每个人都会,比如你有5件事要从,编号从1到5,最简单的一种是你从第一件事开始一个一个做,做完这5件事,但有时候并不能按照我们意愿来,比如你完成了第一件事,突然来个电话,你不得不放弃做现在的事,等接完电话在继续,又或者某件事跟另一件事有某种关联,你不得不完成第三件事才能继续第二件事,总之就是事件完成要有先有后,并能等待某个事件处理完毕后继续进行处理,这就是编程中的逻辑,好吧说了这么多解释这件事就是希望每个人不要轻易放弃,大胆学习编程吧,它没有你想想的难,每个人都可以学会。

上一段我们花了大段篇幅解释了数学和编程的关系,那既然日常编程中碰不到大量的数学问题,那都在处理什么,这就要到我们的正题了,没错,大部分程序员编程中都在处理字符串,在Python中操作字符串非常的方便,让我们开始:

1、单引号,双引号,三引号字符串

在Python中我们可能看到对字符串有的人用双引号来括起来,有的用单引号括起来,他们有什么不同吗?答案是它们没有区别,那为什么要用到双引号呢,因为如果一个字符串中已经有单引号了,在最外层就必须要用双引号,否则就会报错,如下:

那三引号的作用是做什么的呢?三引号是用来解决如果一行很长,而且里面又包括一些特殊字符比如换行符等,这时候就用到三引号了,比如:

2、字符串的转义、拼接、复制

python中的转义最好理解,它跟shell下一样,就是在字符前加\就可以转义一个字符,比如\n就是回车换行,\t就是制表符,如果一个字符串中有单引号或双引号或者\都可以进行转义,如下:

在Python下字符串拼接是用+号符操作的,非常直观,例如:

字符串的复制也非常简单,可以通过*操作符,例如复制20个#符:

3、字符串切片

切片操作是字符串的重要特性,在字符串 后面加入[]就可以提取该位置的单个字符,如果顺序是从左到右,记住第一个字符是从0开始,如果是从右到左从-1开始,如下:

除了获取单个字符,我们还可以用更复杂的方式获取一段字符,操作格式是[开始:结束:步长],这三个参数没有严格要求必须同时存在,但如果要获取某段字符至少要有开始或结束,如果都不写就是获取整个字符串内容了,如下:

4、字符串格式化

字符串格式化就是对字符输出时处理,类似C语言的 printf()函数,打印出字符,以下是Python格式化符号表:

   符   号    说     明
     %c    格式化字符及其ASCII码
     %s    格式化字符串
     %d    格式化整数
     %o    格式化无符号八进制数
     %x    格式化无符号十六进制数
     %X    格式化无符号十六进制数(大写)
     %f    格式化定点数,可指定小数点后的精度
     %e    用科学计数法格式化定点数
     %E    作用同%e,用科学计数法格式化定点数
     %g    根据值的大小决定使用%f活%e
     %G    作用同%g,根据值的大小决定使用%f或者%E

 

最简单的格式化例子如下:

如果要打印指定点数可以用%f,保留小数点后二位,如下:

从Python2.6版本开始字符串格式化增加了format方法进行格式化,它的格式没有了%,用{}来替代,如下:

用format的好处是后面的参数可以不按顺序,如我们的例子,name在前或在后对输出没有影响,另外还要记住就是在Python2.6的版本{}里的内容不能为空,2.7的版本可以支持为空:

所以有时候你下载一些模块安装不上,如果出现这个format错误,就表示你目前系统的版本比较低,你要做的要么升级当前版本,要么修改下源代码就可以通过,我是之前碰到过几次。

关于字符串的内容我本来打算分一次写完的,发现内容实在太多,所以就只能分2次写了,字符串的内容我们还有内建函数和字符串特性没有说,下次我们继续。

python基础2-安装、基本语法和数据类型

上一篇我们已经介绍完了python的一些语言特性,从这篇开始我们将要进入正式的Python语言学习中了,这篇主要涉及的内容有:

1、python安装

2、python解释器介绍

3、基本语法

4、python的数据类型

1、安装:

我们从安装说起,可能有的小伙伴认为这个太简单了,不需要提了,但因为这是最基础的教程,所以这部分我思来想去还是加上,因为linux本身都已自带Python,所以关于Linux下的安装就不做过多的介绍,后期我们我会专门写一篇关于在linux下的虚拟环境配置,这次主要是windows安装,打开浏览器,输入Python官网地址:https://www.python.org/ 我们将进入如下页面,点击donloads,会出现选版本的界面,截图如下:

install

注意这里有二个版本可供选择,可以根据自己情况选择,在入门基础阶段差别不大,除了print,因为可能大部分小伙伴是做运维的,所以后续脚本类的代码我会选择在centos7系统下运行,centos7默认的是2.7版本,不过大家也不用担心,它们差别没大家想想的大(对运维来说),不要太纠结版本的选择,重要的是尽快学起来,如果在版本上都能纠结个半年,这时间浪费的就太可惜了,下载完成后,双击运行,下一步就可以了,基本上是傻瓜式是安装,但安装好后需要设置环境变量,设置环境变量的截图如下:

201209201707594792

设置完环境变量后,打开cmd窗口,输入python就进入了python交互式解释器中,那安装就到这里了,接下来我们说说python交互解释器的用途。

2、python交互式解释器

在CMD命令行下输入python或在Linux终端下输入python就会进入交换式解释器,使用非常简单

这就是最基本运行环境, 大家可别小瞧了这个解释器的功能,Python之所以容易上手,很大一部分原因我认为是因为有它,尤其我们运维小伙伴最喜欢,因为这个功能跟Linux下shell非常相似,想想我们怎么写shell脚本的,对于一些特别不确定的shell命令,我们会选择在终端运行没问题后在加入shell脚文件中,写python脚本也一样,如果不确定的语句可以在解释器中运行完后确保获得是自己想要的结果,然后在放入我们的代码中,所以它是一个非常好的协助我们调试的工具,我身边写python有超过二年的程序员在调试一些代码时也会选择在解释器下进行,所以后续充分利用好这个工具。

3、python基本语法

3.1

稍微知道python的人都应该知道,Python代码的风格是缩进模式,请看例子:

大家看这段简单的代码,Python代码中没有括号,对于条件语句、循环语句或类语句后要加分号(:),然后下一个语句缩进。,就这一个缩进格式不知道阻挡了多少人想学python确望而却步,这主要是大家从大学学的C语言开始就是带括号的,所以突然不带括号了,会不习惯,尤其我们运维经常写shell脚本,转到python下会发现有很多限制,刚开始会痛苦不堪,但这就是python的风格, 它就是靠缩进来控制类,函数和其它逻辑的刚开始肯定会有一个过程,但你一旦熟悉了,就会发现python写出来的代码是如此简洁,所以在大家刚看开始的写Python的时候,出现错误最多的应该就是:

python缩进错误和缩进方式不一致,那为了避免这个问题,我们就应该统一缩进模式,对于缩进用tab还是空格我看网上也是一个很大的争论,我觉得真没必要,在我们的教程里我建议大家采用4个空格作为统一的缩进格式。

3.2 基本语句和表达式

这部分内容太多,后续我们用在做详细介绍,在这只举几个简单例子,大家熟悉就行,还有就是变量是大小写敏感的。

 

3.2 注释和多行语句

python的注释和多行跟shell脚本一样,这个我就不多说了,在语句前加#就注释,如果语句太长就用\来换行,如下:

四、python数据类型

python的变量类型有以下几种,分别是:

  • boolean    #bool = True
  • integer      #age = 26
  • long         #999999999l, python表达的数值跟机器支持的虚拟内存大小有关
  • float         #pi = 3.14159
  • string      #name = “mingd.cn”
  • list          #[a,b,c,d]
  • Tuple     #(a,b,c,d)
  • Dictionary #{‘a':1, ‘b':2, ‘c':3}

这里边布尔类型最容易理解,True 或False, 关于数字类型我这里就不在多介绍了,在实际编程中运维用的不是太多,如果后续我们遇到了我们单独说,我们重点放到字符串,列表、元组和字典这几个数据类型,这些我们将在下一篇分别重点介绍,请小伙伴持续关注。

python基础1-python语言介绍

从这周起我们正式进入Python基础的学习,那在正式进入学习之前,我们先看下python能沟通做什么,以及学完python我们能干嘛?

python是什么,我们还是直接看度娘好了:

Python是一种面向对象的解释型计算机程序设计语言,由荷兰人Guido van Rossum于1989年发明,第一个公开发行版发行于1991年。
Python是纯粹的自由软件源代码解释器CPython遵循 GPL(GNU General Public License)协议[2]  。
Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进。
Python具有丰富和强大的库。它常被昵称为胶水语言,能够把用其他语言制作的各种模块(尤其是C/C++)很轻松地联结在一起。常见的一种应用情形是,使用Python快速生成程序的原型(有时甚至是程序的最终界面),然后对其中[3]  有特别要求的部分,用更合适的语言改写,比如3D游戏中的图形渲染模块,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。需要注意的是在您使用扩展类库时可能需要考虑平台问题,某些可能不提供跨平台的实现。

从这一段中我们可以了解到,第一Python是一个解释型语言,什么是解释型语言呢?简单给大家介绍下,实际上我们用任何一门高级语言写出的程序,机器是无法识别的,因为机器只知道0和1,那怎么能让机器理解我们写的程序呢,这就需要把我们写的程序翻译能机器能理解的语言,那翻译的过程有二种,一种就是解释,一种就是编译,编译就是程序在运行前前把代码编译成机器能运行的文件,例如.exe文件,而解释型就不一样,解释型语言写完就可以运行,不需要编译,它在运行的时候才翻译,那么写到这问题就来了,就是因为解释型语言在执行的时候才翻译,而编译型语言在执行是已经不需要翻译了,所以解释型语言在运行速度会慢,比如Python写的C写的同一个功能,C运行速度要快很多,不过大家也不用担心,这今年随着硬件的提示,它们直接的差别也越来越小,尤其现在的服务器配置动不动就是E5-26XX,32G,运行个脚本根本不是个事儿,当然为提示效率,Python在每次运行也会生成.pyc的文件,这个是python的字节码文件,就是编译后的文件,如果再次运行相同程序,效率会提示很多。

说完python特性,我们再来看看python都能干嘛,简单说啥都能干,也许大家都听说过一句话:人生苦短,我用python.因为Python有大量的模块库,所以它基本能你能想到的它基本都可以做,另外构建新的项目还非常快,在这里其它我不多说了,我还是要讲讲运维,在Python流行之前,我们运维基本采用shell+aws+sed组合来完成自动化运维,在后来随着运维自动化平台的发展,我们都开始研究怎么做自动化平台,但在哪个时候是没有特别合适做运维自动化平台的语言,所以php在那个时候基本成了运维工程师的选择,比如我之前就是写php的,所以如果你看到有用Php实现运维报警的脚本也不必惊讶,我们现在的服务器上老的报警脚本就是Php写的,然后大家都知道了,就是Python来了,有时候我在想,真的要感谢python,因为Python让我们运维可以提升到一个更高的层次,运维具备研发能力,我觉得这才是真正运维的方向,因为不到研发层面,靠之前老模式的运维方式比如每天敲些基本命令和配置搭建某个服务器或者写几个自动化脚本时很难让一个公司的运维水平得到一个质提升的。

最后给大家看一个图,这个是最新的tiobe的编程排行,包括行2016年和2017年的对比,python始终保持在前名,可见Python的流行程度,所以尽快加入学习吧,这篇就到这里,下篇我们开始将Python的基本语法和基本的数据类型。

102243_dhtb_2903254

 

怎么通过公众号来快速学习python编程?

现在各个公司对运维工程师的需求,要求具备Python编程能力已经成了一个不争的事实,所以现在不管你是刚入门还是已经参加工作几年了,如果不具备python编程能力,在过几年竞争可能会越来越弱,如果不突破这个枷锁,你的职业发展很快就达到了天花板,说的可能有点吓人,但这可能就是几年后的事实,那该咋办呢?当然是要尽快学习了,我们来看看如何学习。

现在随着移动互联网的发展,现在都进入碎片化学习时代了,很多人都在利用碎片时间来提升自己,比如通过微信公众号的方式学习(例如关注了本公众号的小伙伴),这种方式呢有利有弊,当然利要大于弊,因为学跟不学在一段时间后肯定会有一定的差距,弊在于什么呢?弊就在于第一你不能关注太多这类公众号,大家平时都要上班,如果每天给你推几十篇文章,反而会成为你的学习负担,到最后哪个都不想看了,所以你必须要选择一个你认为适合你的公众号平台;第二是你必须有时间去消化所看的知识,通过公众号的文章看了当时明白了,线下一定要找机会去练习,不能看完就完了。大家如果一直在关注“python运维技术”公众号大家可能会发现一个特点,就是我很少发除python之外的运维技术文章,在这里我给大家解释下,这是我特意的,因为这个问题被我之前也纠结过,因为除了python外,做过运维的都知道,运维的工作其实很技术栈是很杂的,尤其我工作了这么多年,很多运维技术其实都有接触,当我在写python相关文章有困难时, 其实我本可以轻松的写一些其它技术类文章发出去,但我都放弃了,因为我不想小伙伴们今天看到的一篇pyhton文章,明天看到的是另一门技术的文章,这样的结果就是大家无法通过“”python运维技术“”公众号达到长期的python技术积累,随着时间越长你就学散了,没有重点了,那我们之前经常会问?如何才能成为一个专家? 我给的答案是一定要长时间在某个领域进行刻意练习,我相信大家都可以理解,所以这就是我做个公众号的初衷,因为我想让关注“python运维技术”公众号的小伙伴有持续的积累和成长,一天二天看不出什么效果,时间长了量变就会发生质变,这个道理我不说大家也都明白。

写到最后我想说一些最近我的想法,接下来的日子我打算写一些关于python基础类的系列文章,主要是帮助给新入门的小伙伴尽快入门,基础类的文章写完后会写一些python web开发的内容,比如django等,最后我们通过实际项目来展现python如何开发运维平台的实际项目,到时我可以拿我实际工作中的例子给大家分享下,这就是我最近的一些想法,就写到这吧,以后还请大家多支持,觉得不错的文章就帮忙转发下,这篇觉得不错的也可以转,哟~ :)

python1

 

python异常捕获

在Python中处理异常使用的是try-except代码块,try-except代码块放入让python执行的操作,同时告诉python程序如果发生了异常该怎么办,try-except这个功能其实很多入门书籍中都放到了高级篇幅里,在入门的时候一般不会讲这个使用,尤其是作为运维人员,如果你经常写shell,转到python后估计也很少使用这个功能,这功能我觉得说明了shell和python的一个重要区别,因为python是一门真正的编程语言,像其它的编程语言php,java等都会提供异常捕获功能,用这些程序写出的代码是要健壮性的,如果你阅读一些其他人写的程序代码,尤其是一些socket编程方面的代码,很多都是try…except…,有的还except好多个,来判断各种各样的情况,既然这个功能这么有用,我们就来尽快了解下看如何使用的吧。

第一我们先看看它的语法,语法很简单,就是在try-except中放入你想要执行的代码块,例如:、

这是最简单的一种情况,如果情况复杂可以使用多个except句子,例如:

try-except还有更高级的用法,加入else,finally等,今天我们不展开说了有兴趣的可以自己深入研究下。

接下来我们来看一个简单例子,读写文件我们经常的操作,一个常见的问题就是找不到文件,或者文件名称,路径不正确,对这种情况,你就可以采用try-except代码块直观的方式来处理了:

我们再看一个多except的例子,2个数字相减:

以上二个例子就是最简单的try-except的用法了,如果想要保证脚本的健壮性,后续可多用try-except代码块吧,这会让你的代码看起来更专业。