python实战一期:第一天

1. 为什么学习python

1.1 为什么要学Python?

    Python第一是个非常牛B的脚本语言,能满足绝大部分自动化运维的需求,又能做后端C/S架构,又能用WEB框架快速开发出高大上的Web界面,只有当你自已有能力做出一套运维自动化系统的时候,你的价值才体现出来,你才有资格跟老板谈重视,否则,还是老老实实回去装机器吧。

2. 运维开发为什么要用Python?

    Good question, 为什么不用PHP,JAVA, C++,RUBY,这里我只能说,见人见智, 如果你碰巧已经掌握了除Python之外的其它语言,那你爱用啥用啥,如果你是一个连SHELL都还没写明白的新手,想学个语言的话,请用Python,为什么呢?

    首先,PHP是跟Python比的最多的,其实他俩根本就不用比,为什么呢?两个语言适用性不同,PHP主要适用于Web开发,可以迅速的做出中小型,轻量级的WEB网站,但后端嘛,基本还是要借助其它语言,借助什么语言呢?Shell?Python?呵呵。而Python呢,是个综合语言,前后端都可以,单拿出来比Web,也一点不比PHP差,但为什么Web方向上PHP比Python要火?

    先入为主嘛,PHP 90年代诞生就是做Web的,Python2000年后才出现Web框架,但论优秀程度上,Python的Web框架基本上出其无左,至少是跟PHP比。

    那JAVA呢?好吧,一个臃肿、中庸、豪无新意的语言,还是老老实实用它来做ERP吧,搞个运维小平台,用JAVA真心没啥必要,在我看来,JAVA就是稳定的中年男人,稳定、成熟、秃顶,而Python代表的就是青春,简洁、快、干净、帅!

    C++/C,这个嘛,我只能说,如果你会了Python,又会C的话,那你会更吃香,但是不会C的话,其实也无大碍,基本上做运维的人,搞搞C就是为了来装B的,因为多数情况下你都到不了看系统底层源码的程度, 不过如果你学好了Python之后,还是建议你学习下C++,毕竟相比Python这个动态语言来讲,C++的效率还是高很多的,但对新手来讲,不建议做为第一门语言开始学习,为什么呢?打击自信心…呵呵,你懂的

    Ruby,小日本开发的,还不错,风格跟Python有点像,因为Ruby onrails出了名,国外用的比较多,国内,放心吧,没戏,Python已经把它的想象空间都占死了。

    当然还有新的语言GO,有些搞运维的看见做开发的人员搞GO,也想凑热闹,觉得是未来,我想说,别瞎没事跟风,GO再成功,也不会变成运维开发语言。

    有些人觉得Python效率底,说他不能支持多线程,OH,好吧,这个还有点说对了,但是我想问,看我这篇文章的有几个做过搜索引擎开发?有几个做个上亿PV的并发网站开发?

    有几个看过LINUX内核源码?如果没有,请别瞎跟着传了,知道PYTHON为什么不支持多线程吗?这句话问错了,其实Python支持多线程,只是不支持多CPU多线程,也就是一个程序spawn出来的多线程只能占用一个CPU,但是为什么呢?噢,因为GIL,GIL是什么东东,请自行补脑。。。但是你非得用多线程吗?你可以用多进程呀,再牛B你还可以用协程呀,这些Python支持的都很好呀,如果你的程序逻辑不好,搞个多线程也快不起来。

    我认识一个博士讲过一句话,我觉得不错,他说,程序效率高低,80%都是写程序的人决定了,语言本身就占20%,所以下次有人再说PYTHON效率低的时候,请让他先回去自己检查下自己的程序多了多少无用的逻辑、循环等等。这个博士自己用Python写的WEB程序,一台服务器每天能处理上亿请求,一秒并发近两万,什么WEB框架这么牛B? 别问它是谁,它叫tornado。

2. python安装

2.1 linux默认自带python

  • 可以rpm -q python查看是否有安装
  • [root@localhost src]# rpm -q python
  • python-2.7.5-58.el7.x86_64

2.2 查看python版本

[root@localhost src]# python -V

Python 2.7.5

2.3 python使用以及退出

[root@localhost src]# python

Python 2.7.5 (default, Aug 4 2017, 00:39:18)

[GCC 4.8.5 20150623 (Red Hat 4.8.5-16)] on linux2

Type "help", "copyright", "credits" or "license" for more information.

>>> print 'hello python'

hello python

exit() 或则ctrl d 退出python

2.4 安装使用ipython

pip 安装软件从此链接搜索https://pypi.python.org/pypi

ipython手动下载链接:https://pypi.python.org/pypi/ipython

linux下直接使用python进入解释器时没有命令补全功能,不太方便,可以安装使用ipython

yum install python-pip 安装pip命令

pip install ipython 安装ipython

pip install ipython==5.8.0 安装指定版本ipython

pip list 查看已安装的模块

pip install --upgrade pip 升级pip

输入ipython后直接回车进入ipyhon解释器

exit 退出ipython;

2.5 通过源码包安装ipython

解压包后,直接运行 python setup.py install

测试后发现需要安装好多相关模块:

pip install traitlets

pip install pygments

pip install pexpect

pip install pathlib2

pip install pickleshare

pip install prompt-toolkit==1.0.15

pip install simplegeneric

2.6 扩展: 

ipython的安装问题 

http://www.jianshu.com/p/8779eac7f313

如果报错_scandir.c:14:20: 致命错误:Python.h:没有那个文件或目录,#include <Python.h>,安装python开发工具yum install python-devel

3. python文件类型

3.1 使用方式:

  • 解释器交互方式
    • python shell
    • ipython
  • 建立程序文件
    • 文件执行

3.2 python文件类型

  • 源代码
    • python源代码文件以“.py”为扩展名,由python程序解释,不需要编译。
    • vim 1.py
    • 第一行#! /usr/bin/python注释;表示以python解释此文件;
    • 执行用python 1.py
    • 也可以给1.py加上x权限,执行时用./1.py

  • 字节代码
    • python源码文件经编译后生成的扩展名为“pyc”的文件
    • 方法一:
      • python -m py_compile 1.py
    • 方法二编译方法:
      • import py_compile
      • py_compile.compile
    • .pyc"文件格式是二进制,不能直接查看
    • file 1.pyc 查看文件类型
    • 把1.py文件编译成1.pyc
      • vim 2.py
#! /usr/bin/python
import py_compile
py_compile.compile('/python/1.py')
  • 执行python 2.py
    • 会生成一个1.pyc
  • 优化代码
    • 经过优化的源码文件,扩展名为“pyo“
    • 和pyc类似,比pyc更优化些。
    • python -O -m py_compile 1.py
      • -O 表示优化
      • -m 表示模块
      • 1.py是源码文件
    • pyc 和 pyo文件都是二进制文件,经过编译后脱离源码都可以用python执行;

4. python变量

4.1 变量

  • 变量是计算机内存中的一块区域,变量可以存储规定范围内的值,而且值可以改变。
  • Python下变量是对一个数据的引用

4.1.1 变量的命名

  • 变量名由字母、数字、下划线组成。
  • 变量不能以数字开头
  • 不可以使用关键字
  • a a1 _a

4.1.2 变量的赋值

  • 是变量声明和定义的过程

a = 1 给变量a赋值1

id(a) id()查看变量在内存中的位置

4.2 运算符与表达式

4.2.1 Python运算符包括

1. 赋值运算符

  • = x = 2 y = 'ab'
  • += x += 2 表示x= x+2
  • -= x -= 3 表示x= x-3
  • *= x *= 2 表示x= x*2
  • /= x /= 2 表示x= x除以2(不加浮点数时只取整数部分)
  • %= x %= 3 表示x=x除以3取余

2. 算术运算符

  • + 加
  • - 减
  • * 乘
  • / 除、不加浮点数时取的是整
  • // 除、只取整
  • % 除、取余
  • ** 乘方

3. 关系运算符

  • > 大于
  • < 小于
  • >= 大于等于
  • <= 小于等于
  • == 等于
  • != 不等于
  • 返回的都是布尔值 true 或 false

4. 逻辑运算符

  • and逻辑与:True and False 两个全对才true
  • or逻辑或: False or True 两个中任意一个对就true
  • not逻辑非: not Ture 取反

注:越往下优先级越高;同行越往右优先级越高。

4.2.2 表达式

表达式是将不同的数据(包括变量、函数)用运算符号按一定的规则连接起来的一种式子。

4.3 练习

4.3.1 input和raw_input区别

  • input更适合数字,输入字母加上引号表示字符串;
  • raw_input可以直接输入数字或字母,输出都是字符串;

4.3.2 写一个四则运算器

vim num.py 编辑以下代码:

#! /usr/bin/python

num1 = input("Please input a number: ")

num2 = input("Please input a number: ")

print "%s + %s = %s" % (num1, num2, num1+num2)

print "%s - %s = %s" % (num1, num2, num1-num2)

print "%s * %s = %s" % (num1, num2, num1*num2)

print "%s / %s = %s" % (num1, num2, num1/num2)

猜你喜欢

转载自my.oschina.net/u/3803404/blog/2878557