目录javascript
首先,咱们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,好比下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,因此,尽管不一样的编程语言差别极大,最后都得'翻译'成CPU能够执行的机器指令。而不一样的编程语言,干同一个活,编写的代码量,差距也很大。
好比,完成同一个任务,C语言要写1000行代码,Java只须要写100行,而Python可能只要20行。
因此Python是一种至关高级的语言。
你也许会问,代码少还很差?代码少的代价是运行速度慢,C程序运行1秒钟,Java程序可能须要2秒,而Python程序可能就须要10秒。
那是否是越低级的程序越难学,越高级的程序越简单?表面上来讲,是的,可是,在很是高的抽象计算中,高级的Python程序设计也是很是难学的,因此,高级程序语言不等于简单。可是,对于初学者和完成普通任务,Python语言是很是简单易用的。连Google都在大规模使用Python,你就不用担忧学了会没用。
用Python能够作什么?能够作平常任务,好比自动备份你的MP3;能够作网站,不少著名的网站包括YouTube就是Python写的;能够作网络游戏的后台,不少在线游戏的后台都是Python开发的。总之就是能干不少不少事啦。下面咱们了解一下计算机的基础概念html
程序:是一组能让计算机识别和执行的指令。
计算机五大部件:输入设备
、输出设备
、运算器
、控制器
、存储器
,各部分主要做用:java
运算器
:完成各类算数运算、逻辑运算、数据传输等数据加工处理控制器
:控制程序的执行存储器
:用于记忆程序和数据,例如内存输入设备
:将数据或者程序输入到计算机中,例如鼠标、键盘输出设备
:将数据或程序的处理结果展现给用户,例如显示器、打印机等 注:CPU有运算器和控制器组成,其中还有寄存器以及多级缓存,其中咱们所熟知的L一、L2缓存是每一个CPU核心独占的,而L3缓存则是全部核心共享的,缓存的速度依次下降,新版的CPU还会把北桥芯片集成在CPU中。
计算机语言:人与计算机之间交互的语言,机器语言、汇编语言等属于早期语言的表明,机器语言由必定位数组成的二进制0和1的序列组成,这中语言很是晦涩,难以理解,难以记录,而汇编语言则借助了一些助记符来替代机器指令,虽然好记了一点,但仍是难以学习,后来通过时代的变迁,各大伟人的突出贡献,慢慢的针对不一样场景的编程语言共同绽开。python
从距离机器和人类可读的两种方向,主要分为低级语言
和高级语言
。
从运行方式来看又分为编译型语言
和解释型语言
。linux
低级语言
:面向的机器的语言,好比机器语言、汇编语言,不一样的及其不能通用。高级语言
:接近人类可读的天然和数字结合的计算机语言,由编译程序转换成机器指令来进行执行,咱们只须要关注如何书写源程序,剩下编译的事情就交给编译器进行处理。编译语言
:把代码转换成目标及其的CPU指令解释语言
:解释后转换成字节码,运行在虚拟机上,解释器执行中间代码 高级语言根据发展历程主要分为四个阶段或者说是四种类型:非结构化
、结构化
、面向对象
、函数式
。git
非结构化语言
:编号或标签、GOTO、子程序能够有多个入口和出口,有分支、循环。结构化语言
:任何基本语句只容许是惟一入口和出口,有顺序、分支、循环、废弃GOTO面向对象的语言
:更加接近人类认知世界的方式,万事万物抽象成对象,对象间关系抽象成类和继承。而类具备封装、继承、多态等特性函数式语言
:属于一种古老的编程范式,应用在数据计算、并行处理等场景,在这种语言中,函数是'一等公民',利用函数的特性,还有更高级的好比高阶函数等。什么是程序呢?通常咱们所说的程序是:算法+数据结构。能够总结出以下特色:github
Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。
和C语言相比:C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。
Python的优势:算法
Python的缺点:sql
另外Python仍是一种动态编译的、强类型的语言
,那么什么是动态语言,什么是强类型语言呢?shell
静态编译语言
:实现声明变量类型,类型不能再改变,编译时检查动态编译语言
:不用事先声明类型,随时能够赋值为其余类型,但编程时不能准确肯定是什么类型,很难推断强类型语言
:不一样类型之间操做,必须先强制类型转换为同一类 好比print(1+'a'),这种是没法执行的弱类型语言
:不一样类型间能够操做,自动隐士转换,好比javascript中ConsolePython这种高级语言须要编译成字节码而后由Python虚拟机(解释器)去执行的,针对解释器,有多种不一样的版本。
官方的CPython
: C语言开发,最普遍的Python解释器IPython
:一个交互式、功能加强的CPythonPyPy
:Python语言写的Python解释器,而且针对性的进行了优化,好比JIT技术,动态编译Python代码Jpython
:Python的源码编译成Java的字节码,跑在JVM上IronPython
:与Jpython相似运行再.Net平台上的解释器,Python代码被编译成.Net的字节码虽然列举了这么多编译器,可是目前主流的仍是官方提供的Cpython,但pypi因为使用Python语言编写,针对性的进行了许多优化,听说速度能够达到Cpython的10倍以上,建议后期能够研究一下
Python是不少Linux系统默认安装的语言,以Centos为例因为其yum包管理工具使用的是Python开发,因此其内置了Python2.x版本,可是Python目前已经发展到了3.7版本了,而且Python官方对2.x的支持也快到期,因此建议学习ython的3.x版本。
Python 3.x的在本质上和Python 2.x有很大的变化,2.x的程序是不能直接在3.x的版本上运行的,它们的主要区别有:
print
的打印,在3.x中是个函数,要打印的内容会被看成参数传递进入,而2.x中的含义是print
语句打印元祖input
函数。3.x中把2.x中的raw_input
舍去,功能合并到input
函数中去。round
函数。在3.x中的取整变为距离最近的偶数_*_coding:utf-8 _*_
)不一样平台须要安装不一样版本的Python,好比windows,须要用exe的应用程序,而Linux能够有源码编译安装,或者yum安装。
安装方法
windows因为都是图形界面,这里就不一一截图了,只文字说明安装步骤。
一、下载安装包 访问 https://www.python.org/ 在 Downloads标签页下选择 windows,而后根据本身需求,下载对应的 `Windows x86-64 executable installer` 版本 二、安装 双击下载好的 Windows x86-64 executable installer,一直next便可。 # 安装路径默认便可,不要自做聪明修改 三、配置环境变量 在安装程序中选择 add to PATH,就是把python命令安装在PATH变量中,让咱们能够在任意地方经过命令访问,若是忘记选择,也能够经过下面的方法进行设置 右击个人电脑 -- 属性 -- 高级系统设置 -- 环境变量 -- 编辑 PATH 变量 -- 添加 python 的安装路径 C:\Python36 (以分号隔开)-- 肯定 四、测试 打开 cmd (命令提示符,快捷键windows+r) ,输入 python ,能够进入解释器表示安装成功
Linux的安装有yum和编译安装两种方式:
[20:08:40 python@centos7 ~]$yum install -y python36
## 安装Python命令行退格键、HTTPS等依赖包(自由选择能够不装) [20:10:12 root@centos7 Python-3.6.7rc2]#yum install -y readline readline-devel openssl-devel # 下载Python源码包 [20:11:49 python@centos7 ~]$wget https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc2.tgz -P /tmp --2018-12-31 20:12:31-- https://www.python.org/ftp/python/3.6.7/Python-3.6.7rc2.tgz Resolving www.python.org (www.python.org)... 151.101.72.223, 2a04:4e42:11::223 Connecting to www.python.org (www.python.org)|151.101.72.223|:443... connected. HTTP request sent, awaiting response... 200 OK Length: 22969389 (22M) [application/octet-stream] Saving to: ‘/tmp/Python-3.6.7rc2.tgz’ 100%[===========================================================================================================================================================================================>] 22,969,389 365KB/s in 33s 2018-12-31 20:13:04 (678 KB/s) - ‘/tmp/Python-3.6.7rc2.tgz’ saved [22969389/22969389] [20:13:04 python@centos7 ~]$ # 解压文件 [20:14:17 root@centos7 tmp]#tar xf /tmp/Python-3.6.7rc2.tgz -C /usr/local/ [20:14:24 root@centos7 tmp]#cd /usr/local/ [20:14:27 root@centos7 local]#ls bin etc games include lib lib64 libexec Python-3.6.7rc2 sbin share src [20:16:28 root@centos7 local]#cd Python-3.6.7rc2/ # 执行编译配置检查 [20:17:20 root@centos7 local]#./configure --with-ssl --prefix=/usr/local/python3 # 编译 [20:19:28 root@centos7 Python-3.6.7rc2]#make # 安装 [20:20:28 root@centos7 Python-3.6.7rc2]#make install # 环境变量配置(添加/usr/local/python3/bin 到 PATH 路径中) [20:22:23 root@centos7 bin]#vim ~/.bash_profile 1 # .bash_profile 2 3 # Get the aliases and functions 4 if [ -f ~/.bashrc ]; then 5 . ~/.bashrc 6 fi 7 8 # User specific environment and startup programs 9 10 PATH=$PATH:$HOME/bin:/usr/local/python3/bin 11 12 export PATH # 测试 [20:24:28 root@centos7 ~]#source .bash_profile [20:24:36 root@centos7 ~]#python36 bash: python36: command not found... [20:24:40 root@centos7 ~]#python3 Python 3.6.7rc2 (default, Dec 31 2018, 20:20:36) [GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux Type "help", "copyright", "credits" or "license" for more information. >>>
在不少工做的状况下,因为每一个项目用的可能不是一个版本的Python,而且不一样应用程序因此来的第三方程序包都不一样,如何让多版本Python进行共存,而且保证每一个项目依赖的第三方包
想要让多个Python版本共存,咱们想到的方法有以下两种:
若是每添加一个新的Python版本就编译一次的话,大大增长了环境切换的成本,而且还须要区分命令(python3.5, python 2.7)等等,因此就凸显出了多版本管理工具的优势
pyenv是一个多版本Python管理工具,它能够帮咱们安装想要的Python版本,而且能够一键切换,属于如今比较流行的工具。pyenv是一个开源的项目,其代码托管在github上,咱们能够访问它的github站点来根据install的步骤进行安装。pyenv的github地址:https://github.com/pyenv/pyenv
pyenv官方还提供了便捷的安装方式,它的项目地址是:https://github.com/pyenv/pyenv-installer
,仅须要简单几步就能够完成安装,下面以这种方式进行说明。
下面的步骤已在CentOS 6.7上测试,并安装成功
[root@Python ~]# yum install -y gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
[root@Python ~]# yum install -y git
# 执行以下命令安装pyenv [root@Python ~]# curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash # 这里建议使用普通用户进行安装 # 若是遇到 curl: (35) SSL connect error ,尝试更新nss,若是问题依旧,尝试更新curl [python@Python ~]# yum update nss [python@Python ~]# yum update curl
[root@Python ~]# vim /etc/profile.d/pyenv.sh #!/bin/bash # Define environment variable export PYENV_ROOT="$HOME/.pyenv" export PATH="$PYENV_ROOT/bin:$PATH" eval "$(pyenv init -)" [root@Python~]# source /etc/profile.d/pyenv.sh # PS:这里直接更新了/etc/profile.d,若是是单个用户安装并使用,建议添加到用户家目录中的profile文件中去
[root@Python ~]# pyenv version system (set by /root/.pyenv/version) # 表示当前使用的是系统的Python版本
pyenv -h # 便可列出命令信息 pyenv install -l # 列出安装的版本信息 pyenv install 3.3.5 # 便可安装 pyenv versions # 查看系统python版本(pyenv install 安装的版本均可以在这里看到) pyenv global 3.3.5 # 切换Python默认版本为3.3.5 pyenv local 3.3.5 # 切换当前目录下的Python版本为3.3.5(和目录绑定,子目录继承环境设定) pyenv shell 3.3.5 # 仅仅针对当前shell环境(会话级别)
pyenv install 3.5.3
进行安装时,它会联网下载 Python 3.5.3
的源码包,若是机器不能上网的话,能够采用离线的方式,预先下载号Python 要安装的Python的版本包(注意须要gz,xz,bz
,三种格式都须要) 在pyenv的安装目录下,通常在用户的家目录下.pyenv
目录中,进入后新建子目录cache,而后把三个包考进去便可,而后再次执行 pyenv install 3.5.3
便可[root@Python ~]$ cd .pyenv [root@Python ~]$ mkdir cache [root@Python ~]$ rz # 上传三个下载好的Python包 [root@Python ~]$ pyenv install 3.5.3
当多个项目公用一台主机的时候,就会产生不少问题,当你的项目和其余人的项目共用python 3.5.3时,假如每一个项目都安装了不少依赖包,你如何区分哪些包是你的项目须要的?这时virtualenv就很重要了,它能够在pyenv的环境中,再造一个虚拟环境,这个环境是基于pyenv中管理的某个主环境,派生出来的独立子环境,你对virtualenv进行的操做,和其余的virtualenv没有任何关联。
# 建立一个virtualenv环境,名字为daxin,基于pyenv管理的3.5.3版本 [python@localhost .pip]$ pyenv virtualenv 3.5.3 daxin [python@localhost .pip]$ pyenv versions * system (set by /home/python/.pyenv/version) 3.5.3 3.5.3/envs/daxin daxin # 这时,咱们再对某个项目进行切换时,以下 [python@localhost .pip]$ pyenv versions * system (set by /home/python/.pyenv/version) 3.5.3 3.5.3/envs/dachenzi 3.5.3/envs/daxin dachenzi daxin [python@localhost ~]$ mkdir cmdb [python@localhost ~]$ cd cmdb [python@localhost cmdb]$ pyenv local daxin (daxin) [python@localhost cmdb]$ ls # 最前面多了个virtualenv环境的名称 # 这样咱们就能够放心的安装和下载依赖包了,
若是某一天我要导出我当前环境安装的全部依赖包,该怎么办呢?Python已经提供了一个工具,供咱们导出当前Python版本安装的全部依赖包及名称,它就是pip命令(python 3.x中已经内置该命令),使用它的freeze
参数便可。
# 使用freeze能够直接导出当前安装的依赖包以及 (daxin) [python@localhost cmdb]$ pip freeze > requirement.txt 对应的版本 (daxin) [python@localhost cmdb]$ cat requirement.txt backcall==0.1.0 decorator==4.3.0 ipython==7.1.1 ipython-genutils==0.2.0 jedi==0.13.1 parso==0.3.1 pexpect==4.6.0 pickleshare==0.7.5 prompt-toolkit==2.0.7 ptyprocess==0.6.0 Pygments==2.2.0 six==1.11.0 traitlets==4.3.2 wcwidth==0.1.7
注意:再新的项目中,只须要使用pip install -r requirement.txt
便可,让pip按照requirement.txt文件中标识的包和版本进行安装了。
virtualenv建立的虚拟环境都存放在pyenv
安装目录的versions
下
[python@localhost versions]$ pwd /home/python/.pyenv/versions [python@localhost versions]$ ll total 4 drwxr-xr-x. 7 python python 4096 Nov 3 18:07 3.5.3 lrwxrwxrwx. 1 python python 48 Nov 3 18:12 dachenzi -> /home/python/.pyenv/versions/3.5.3/envs/dachenzi lrwxrwxrwx. 1 python python 45 Nov 3 18:07 daxin -> /home/python/.pyenv/versions/3.5.3/envs/daxin [python@localhost versions]$
而你在virtualenv
中安装的包,则存放在virtualenv
环境中对应的situ-package
目录下
[python@localhost site-packages]$ pwd /home/python/.pyenv/versions/3.5.3/envs/daxin/lib/python3.5/site-packages [python@localhost site-packages]$ ls backcall parso-0.3.1.dist-info __pycache__ backcall-0.1.0-py3.5.egg-info pexpect pygments decorator-4.3.0.dist-info pexpect-4.6.0.dist-info Pygments-2.2.0.dist-info decorator.py pickleshare-0.7.5.dist-info setuptools easy_install.py pickleshare.py setuptools-28.8.0.dist-info IPython pip six-1.11.0.dist-info ipython-7.1.1.dist-info pip-18.1.dist-info six.py ipython_genutils pkg_resources traitlets ipython_genutils-0.2.0.dist-info prompt_toolkit traitlets-4.3.2.dist-info jedi prompt_toolkit-2.0.7.dist-info wcwidth jedi-0.13.1.dist-info ptyprocess wcwidth-0.1.7.dist-info parso ptyprocess-0.6.0.dist-info [python@localhost site-packages]$
pip命令对应Python来讲,就像Yum和CentOS的关系,它是Python的包管理工具,咱们可使用pip命令安装几乎全部的Python第三方包。
(daxin353) [21:01:10 python@centos7 cmdb]$pip -h Usage: pip <command> [options] Commands: install # 安装第三方包 download # 下载第三方包 uninstall # 卸载第三方包 freeze # 输出包的名称还版本信息,能够重定向到文件中去 list # 显示已安装的第三方包 show # 显示安装包信息 search # 在Pypi库中查找第三方包 help # 查看帮助信息 General Options: -h, --help # 显示帮助 -v, --verbose # 显示详细信息 -V, --version # 显示版本信息 -q, --quiet # 安静模式,不输出任何提示信息 --log <path> # 把输出信息追加log文件中 --proxy <proxy> # 使用代理,格式为: [user:passwd@]proxy.server:port. --retries <retries> # 最大链接失败重试次数,默认5次 --timeout <sec> # 设置最大超时时间,默认是15秒 --cache-dir <dir> # 指定缓存目录 --no-cache-dir # 禁用缓存 (daxin353) [21:01:16 python@centos7 cmdb]$
pip命名默认是从Python官方提供的Pypi仓库进行第三方软件包,因为官方源在国外,访问速度可能会很慢,咱们能够把Pypi源换成国内的阿里源,来增长访问速度。 配置起来也很简单,只须要新增pip的配置文件,指定源为阿里源便可。
[21:14:53 python@centos7 ~]$mkdir ~/.pip [21:15:21 python@centos7 ~]$cd .pip [21:15:23 python@centos7 .pip]$vim pip.conf [global] # 全局配置段 index-url=https://mirrors.aliyun.com/pypi/simple/ # pypi仓库地址 trusted-host=mirrors.aliyun.com # 信任主机(防止https输出烦人的信息)
请参考博文: http://www.cnblogs.com/dachenzi/articles/7684064.html , 安装过程当中遇到的问题,欢迎邮件咨询 beyondlee2011@126.com
既然Python语言安装完毕了,那么小伙伴确定已经跃跃欲试了,那么咱们就来写一个吊炸天的Python程序吧
首先这个程序很牛逼,为何这么说呢?由于会用到一个咱们之后几乎每天用的命令,那就是print。有的同窗英文好,一下就知道是打印的意思。那么该如何使用呢?
这个吊炸天的例子以下:
# Python 2.x print 'hello world' # python 3.x print('hello world') # 这里:引号扩起来的就表示要打印到屏幕上的代码,快去试试吧。
OK,你已经精通Python了!厉害了个人哥。哈哈