一、为什么要学python

  已经从事运维工作五年半的时间了,如今的收入也自我感觉良好。可是,本来以为学习网络技术以及服务器技术,只做运维,不懂开发也行,然而,就在准备重新寻找工作,渴望能够找到待遇更好的工作机会时。很遗憾,缺少代码能力的我确实没办法找到更好的工作机会,即使我已经工作了五年多,即使我也有相关的证书。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

  但是,在这个时代的浪潮下,想拥有质的飞越,不会代码真的不可能。所以,我选择的python语言,作为我的入门语言。初衷只有一个,就是要寻找更好的工作机会!!!接触不一样的世界,让自己提升一个层次!!!

二、python擅长的领域

  说实话,我并不知道python的擅长领域;作为我的入门语言,相对而言,我也只是知道python相对其他计算机语言而言更加容易入门。

三、学python的前途

  根据我所了解的前途,python可以用于web开发、自动化运维开发、网络编程、科学计算、GUI图形开发;

  而我目前想从事的方向就是python的自动化运维方向。这样既不会将我之前学习的知识丢弃掉,也能够和之后学习的python知识结合起来,至于未来会如何发展,就随缘了;

  【运维会了开发后可以干什么?可以转开发,一个理由:开发赚钱!】

  1、帮助公司开发各种各样的自动化工具,定制开发各种开源软件

  2、帮助评估和优化各种技术架构

  3、开发公司的内部办公系统、CRM、网站等

  4、做个python全栈工程师(全栈就是指什么都能做)

四、课程内容

  1、python语言基础

    数据类型

    流程控制

    常用模块

    函数、迭代器、装饰器

    递归、迭代、反射

    面向对象的编程

    购物车程序

    ATM信用卡程序开发

    模拟人生游戏开发

  2、网络编程

    socket c/s编程;Twisted异步网络架构;网络爬虫开发;

    多线程、多进程、协程gevent、select\poll\epoll

    生产者消费者模型

    审计堡垒机系统开发

    FTP服务器开发

    批量命令,文件分布工具

    rabbitMQ消息队列、SqlAlchemy ORM

    类SaltStack配置管理工具开发

    Reids\Memcache\MongoDB缓存数据库

  3、web开发基础

    html/css基础

    Dom编程

    原生JS学习

    Jquery/EasyUi/AngulaJS

    Ajax异步加载

    Highchart画图

    BootStrap

  4、算法、设计模式

    冒泡、二叉树、哈希、拆半等常见的算法学习

    工厂模式、单例模式、享元模式、代理模式等常见设计模式学习

  5、PYweb框架

    MVC架构讲解

    自行开发一个WEB框架

    Django、Tornado、Flask、Bottle、WebPY框架学习

    Session/中间件/ORM/Cookie/CSRF/FORM...

    Restful API框架

    权限管理后台开发

    开发BBS论坛

    开发WEB聊天室

  6、项目实战

    购物商城开发

    主机管理+任务编排+运维审计堡垒机开发

    分布式类Nagios/Zabbix监控产品开发

    CMDB资产管理开发

    基于用户视角的网站访问质量检测分析平台开发

    Docker自动化管理平台开发

    OpenStack二次开发

====================分割线==========================

python之路

一、python是一个什么样的语言

  1、编译型/解释型

    说白了编译型语言就是先将代码全都翻译成计算所能识别的字符,然后再来运行;

    解释型语言则是计算机读一句,就翻译依据,相对而已,编译型语言会比解释型语言快上很对;python就是一种解释型语言;

  2、静态语言/动态语言

    不用指定变量类型的语言,就是一种动态语言;

    python能够自动的识别数据类型,当数据类型与所输入的数据不符合的时候,就会报错;而C语言则必须指定数据类型后才能为变量输入对应的数据;

  3、强类型定义语言/弱类型定义语言

    强类型语言指定了数据类型后,如果不做转换,则一直为原本数据类型,不会变更;

    而弱类型语言则对数据的数据类型定义比较模糊,一个数据可以属于多个数据类型,这样会造成很多不必要的错误;

【python是一种解释型的动态强类型语言】

二、python的优点与缺点

  优点:简单、高效、高级语言、可移植性强、可扩展性强、可嵌入型强

  缺点:相对于C语言来说比较慢、代码不是加密的(如果你对代码要求是保密,就不要使用python来做开发)、线程不能利用CPU(Global Interpreterlock)(也就是说你开发的程序,不管系统是几核CPU的,程序都只能使用一个【这个说的好像有点问题,不知道我理解的对不对;】)

三、python解释器

  python语言需要通过解释器来运行;

  Cpython:C语言编写的python解释器,建议使用;

  Ipython:交互解释器

  PyPy:解释速度最快的解释器

  Jpython:Java环境下的解释器

  IronPython:.net语言环境下的解释器

  【如果是需要各种语言互相调用,是不需要使用解释器的。我们一般通过网络调用来实现不同平台上的python代码之间的互通】

四、python的发展历史

  1991年、python诞生,创始人Gui叔;

  这里就应用一个连接吧:https://www.cnblogs.com/vamei/archive/2013/02/06/2892628.html

五、python的下载与安装

  下载地址:https://www.python.org/downloads/

  我们这里选择3.x版本,因为python平台在2020年截止,不再维护2.x的平台;其中2.6和2.7的版本就是用来过度到3.x的两个过度版本;

  windows平台下的安装:

    双击安装,选中“添加到环境变量”;这样的话python在您的windows平台上的任何一个目录下都能运行;

六、python的第一个程序“hello world”

print("Hello World!")
Hello World!

 【各种语言的“hello world”】

C++语言
#include
<iostream> int main(void) { std::count << "Hello World!"; }
C语言
#include <stdio.h> int main(void) { print("\nHello World!"); return 0; }
Java语言
public
class HelloWorld { public static void main (String args[]) { System.out.println("Hello World!") ; } }
php语言
<?php echo "Hello World!"; ?>
Ruby语言
put "Hello World!"
GO语言
package main
import "fmt" func mian(){ fmt printf("Hello World!\n God Bless You!") }

七、开发工具的使用--pyCharm

  通过pyCharm方便代码的调试;

  首先创建自己存放代码的目录-->再去创建项目object-->view下的toolbal勾上-->工具栏有一个“齿轮”进行设置

  python-day01 Python 第1张

  从右到左依次为:运行程序(运行后,会在下方提示对话框下进行显示结果),代码调试(通过设置断点,一条代码一条代码的运行),“齿轮”对pyCharm进行设置

python-day01 Python 第2张

 

  设置新创建的python程序的起始代码;

python-day01 Python 第3张

  设置python程序的字符集,建议使用utf-8

  【所有的开发代码都写在一个object下面】

八、变量与字符编码

  1、变量variables

    用来存放一些值的容器,就叫做变量;

name = "Burnov"
name2 = name
print(name,name2)
name2 = "Burnov's firend"
print(name2)

     以上代码name被赋值了Burnov,name的变量值被赋予了name2变量,所以第一个print打印为Burnov,Burnov;

    而第二个name2被重新赋值后,第二个pirnt则打印为Burnov's firend;

    【变量是直接指向内存,而不是指向其他变量的,这有点类似于Linux下的硬连接原理】

 

  2、字符编码:

    用来将二进制字符装换为我们人类能看懂的字符集合;

    ASCII 标准字符码。有256位的空间,ASCII自己只使用了128位的空间,还剩下128位留给了第三世界的国家填充其字符结构;

    CB2312 中国的第一个字符集,收录了7000多个汉字;

    GBK1.0 CB2312的升级版本,收录了20000+的汉字以及相关的图标字符等;

    GB18030 CBK1.0的升级版本,收录了27000+的汉字,其中包括藏文,蒙文,维吾尔文等少数名族的字符;但是手机等嵌入式产品可能不支持这个字符集;

    Unicode 世界公有组织提供的一种字符集,避免了各个国家的标准无法统一的问题;但是影响了ASCII码所占空间的大小;

    utf-8 活动的unicod字符集,避免了英文字符集占有空间过大;规定了ASCII字符空间大小为1个字节,而汉字所占空间为3个字节大小;目前比较通用这种字符编码结构;

#-*- coding:utf-8 -*-  #手动指定字符编码机构,可以写在默认代码里面;

  【注释的使用方法】

  # 用来注释单行

  '''xxx'''或"""xxx""" 用来注释多行内容;同时'''也可以用来赋值,如:info = '''xxx'''这样xxx所表示的多行内容都可以给info这个变量进行赋值;

  在python代码中单引号与双引号没有具体的区别,一般在套用的时候注意下就可以了;

九、用户输入

  1、定义解释环境

  和Linux下的shell一样,在运行代码之前需要之间解释环境,最好使用下面的第一种方式,因为我们并不清楚python安装的默认路径(/usr/local/sbin/python)与/usr/bin解释器指定的路径不太一致;

#!/usr/bin/env python
#!/usr/bin/python

  2、input函数导入数据

  【注意:在输入数据的时候默认数据为字符类型,但是有时候python需要我们制定数据的具体数据类型,所以需要通过参数具体指定;例如:int(input("Age:"))】

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#输入用户功能

#定义变量
Name = input("Name:")
Age = input("Age:")

#打印输出内容
print(Name,Age)

  3、字符的调用方式做格式化输出

    a、%s字符类型调用  

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#输入用户功能,并格式化输出

#定义变量
Name = input("Name:")
Age = int(input("Age:"))    #指定Age变量为整型
Job = input("Job:")
Salary = input("Salary:")

#指定格式化内容
info = '''
--------------info of %s--------------- Name:%s Age:%d Job:%s Salary:%s '''%(Name,Name,Age,Job,Salary) #其中%d表示整形变量 %s表示字符变量

#最后输出info即可
print(info)

    b、format()函数调用【默认建议使用format来做格式化调用】

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#用户输入并格式化输出

#定义变量 
Name = input("Name:")
Age = int(input("Age:"))   #指定Age变量为整型
Job = input("Job:")
Salary = input("Salary:")

#指定格式化内容
info = '''
--------------info of {_name}---------------
Name:{_name}
Age:{_age}
Job:{_job}
Salary:{_salary}
'''format(_name=Name
      _age=Age
      _job=Job
      _salary=Salary)

#最后输出info
print(info)

   在这种写法中format()函数是指定了新的变量,同时,也可以使用“{数字}”的方式来替换其中的数据,这里就不在详细描述了;

  4、输入密码指定为隐藏

    这里需要注意一点,就是默认情况下,pyCharm无法运行getpass()函数,需要去python的默认解释器下面运行该代码,才不会报错;

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#使用getpass()函数,使输出的密码输入无法被看见

#定义变量
Name = input("Name:")
Password = getpass.getpass("Password:")    #通过getpass()函数使输入密码无法被看见

#打印输入内容
print(Name,Password)

十、循环语句

  这时候,我们来实现一个功能:猜测用户Burnov的真实年龄大小

 

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#猜测Burnov的年纪

#定义默认变量正确的年纪
Burnov_age = 28

#开始循环,指定猜测的次数
Guess_age = int(input("Guess_age:"))

count = 0    #count参数为循环计算器值,默认没循环一次需要加1
while count < 3;    #while语句开始循环,并进行判断;
    if Guess_age == Burnov_age :
        print("yes,you get it")
        break    #猜中则break退出;
    elif Guess_age > Burnov_age :
        print("you think big")
    else :
        print("you think smaller")
    conut +=1    #count值加1后再比较,是否小于3,小于再继续进行循环,否则执行下面的代码
else:
    print("you have tried too many times")

 

  1、while循环

    以上就是一个while循环语句,需要注意的的是默认的while循环如下:

 

#!/usr/bin/python
#-*- coding:utf-8 -*-
#基本的while循环

count = 0
while True :
    print("count=",count)
    count +=1
    if count = 1000 :   #定义退出循环的条件,否则会一直循环 
        break

 

    所以在我们些while代码的时候,第一就要指定循环体,那些代码是需要循环执行的,第二个指定循环条件,第三指定循环值count,什么时候就不要再循环了通过count值来做判断,退出循环使用break

 

  2、for循环

   基本的for循环语句

#!/usr/bin/env python
#-*- coding:utf-8 -*-
#基本的for循环语句

for i in range(10) :
    print("loop",i)

   指定步长

 

for i in range(0,10,2) :    #range中表示0到10,中以2位步长来打印数值;
    print("loop",i)

   使用端点来做代码命令错误排查,这样可以一行一行的运行代码,来查找代码中的错误;

python-day01 Python 第4张

  *循环嵌套,对i进行循环i=0的时候内部代码运行一次,知道j到6后比较j>5则退出当前j的循环,在执行i的循环,直到i等于10则该段代码执行结束;

for i in range(10) :
    print("----------",i)
    for j in range(10) :
        print(j)
        if j>5 :
            break

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄