Python

  • 荷兰人 Guido van Rossum,2005年加入Google,2013年加入Dropbox
  • 1989年,创立Python语言,1991年初发布第一个公开发行版
  • 他是英国BBC喜剧《Monty Python's Flying Circus》的忠实粉丝
  • Python哲学
    • import this

推荐书籍

  1. 《Python Cookbook》
  2. 《Learn Python The Hard Way》
  3. 《Google's Python Class》
  4. 《简明Python教程》

开发环境 - Pyenv

新建Python用户

[root@node ~]# useradd python
# 非交互式设置用户密码
[root@node ~]# echo '123456' | passwd python --stdin
Changing password for user python.
passwd: all authentication tokens updated successfully.

安装pyenv

下面这两个链接是完全一样的,一个是老的URL,一个是新的URL,是用来安装pyenv的。

curl -L https://raw.githubusercontent.com/yyuu/pyenv-installer/master/bin/pyenv-installer | bash

curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash

# 切换到python用户来执行
[root@node ~]# su - python
Last login: Wed Dec 12 13:16:17 CST 2018 on pts/1
[python@node ~]$ curl -L https://raw.githubusercontent.com/pyenv/pyenv-installer/master/bin/pyenv-installer | bash
... ...
export PYENV_ROOT=/home/python/.pyenv
export PATH="/home/python/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"

执行之后,会下载很多组件来支撑;最后提示一个环境变量配置

完成后,把最后提示的环境变量配置到~/.bash_profile 文件中

[python@node ~]$ cat .bash_profile
# .bash_profile # Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi # User specific environment and startup programs PATH=$PATH:$HOME/.local/bin:$HOME/bin export PYENV_ROOT=/home/python/.pyenv
export PATH="/home/python/.pyenv/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
# 最后加载一下即可;
[python@node ~]$ source .bash_profile

此时,pyenv就安装完成了

pyenv 使用

Pyenv基本参数

[python@node ~]$ pyenv
pyenv 1.2.7
Usage: pyenv <command> [<args>] Some useful pyenv commands are:
commands List all available pyenv commands
local Set or show the local application-specific Python version
global Set or show the global Python version
shell Set or show the shell-specific Python version
install Install a Python version using python-build
uninstall Uninstall a specific Python version
rehash Rehash pyenv shims (run this after installing executables)
version Show the current Python version and its origin
versions List all Python versions available to pyenv
which Display the full path to an executable
whence List all Python versions that contain the given executable See `pyenv help <command>' for information on a specific command.
For full documentation, see: https://github.com/pyenv/pyenv#readme
参数 详解
commands 列出所有可用的pyenv命令
local 设置或显示本地特定于应用程序的Python版本
global 设置或显示全局Python版本
shell 设置或显示特定于shell的Python版本
install 使用python-build安装Python版本
uninstall 卸载特定的Python版本
rehash 安装可执行文件后运行
version 显示当前的Python版本及其来源
versions 列出pyenv可用的所有Python版本
which 显示可执行文件的完整路径
whence 列出包含给定可执行文件的所有Python版本

查看pyenv版本

[python@node ~]$ pyenv --version
pyenv 1.2.7

查看当前能安装的python版本

使用 pyenv install -l 来查看

[python@node ~]$ pyenv install -l
Available versions:
2.1.3
2.2.3
2.3.7
2.4
2.4.1
2.4.2
2.4.3
2.4.4
2.4.5
2.4.6
2.5
2.5.1
... ...
# 信息太多

提示:这里install安装下载,会比较慢,在python用户的家目录下,有一个隐藏目录.pyenv中,有一个cache目录,如果没有,手动创建即可,然后可以手动下载python的安装包,上传至此,在pyenv install 的时候,就不会去下载,会直接安装。

使用pyenv安装python

直接使用命令pyenv install 3.5.3 来进行安装,会自动下载、构建、安装。

查看当前有哪些Python版本

version 和 versions 的区别是version查看的是当前python版本,而versions是查看所有已安装的python版本

[python@node cache]$ pyenv versions
* system (set by /home/python/.pyenv/version)
3.5.3

可以看到,system表示系统使用的python版本,前面有个*号,表示当前应用的是系统自带的python。

也就是说,*号在那个版本前面,表示应用的什么版本的python

设置Python版本

global 参数

使用pyenv global 3.5.3 切记,这里用的global是因为在非root用户下,是在python用户下,在root用户下,不要使用global参数,否则影响太大。

local 参数

使用pyenv local 3.5.3 设置从当前目录设置乡下递归都集成这个设置,上层目录不影响;

查看演示效果

创建三个层次的test目录,在中间层test目录中,使用pyenv local 3.5.3命令,然后分别取上一层test和下一层test目录中查看python版本;

[python@node ~]$ mkdir test/test -p
[python@node ~]$ cd test/test/
[python@node test]$ python -V
Python 2.7.5
[python@node test]$ pyenv local 3.5.3
[python@node test]$ python -V
Python 3.5.3
[python@node test]$ cd ..
[python@node test]$ python -V
Python 2.7.5
[python@node test]$ cd test/
[python@node test]$ mkdir test
[python@node test]$ cd test/
[python@node test]$ python -V
Python 3.5.3

shell 参数

使用pyenv shell 3.5.3 当前会话shell有关系,不同会话可以设置不同的python版本,但当会话结束后则恢复

virtualenv 虚拟环境

virtualenv 是一个python的组件安装包的统一管理,可以有多个virtualenv虚拟环境,每个人使用一个,这样每个人独立管理自己的python包,不会和系统的相互干扰。

如:创建一个python版本为3.5.3 的虚拟环境,名称为:cmdb

[python@node ~]$ pyenv virtualenv 3.5.3 cmdb
Requirement already satisfied: setuptools in /home/python/.pyenv/versions/3.5.3/envs/cmdb/lib/python3.5/site-packages
Requirement already satisfied: pip in /home/python/.pyenv/versions/3.5.3/envs/cmdb/lib/python3.5/site-packages
[python@node ~]$ pyenv versions
* system (set by /home/python/.pyenv/version)
3.5.3
3.5.3/envs/cmdb
3.6.1
cmdb
[python@node ~]$ mkdir cmdb
[python@node ~]$ cd cmdb/
(cmdb) [python@node cmdb]$ pyenv version
(cmdb) [python@node cmdb]$ cd ..
[python@node ~]$ cd cmdb
(cmdb) [python@node cmdb]$ pyenv versions
system
3.5.3
3.5.3/envs/cmdb
3.6.1
* cmdb (set by /home/python/cmdb/.python-version)

请仔细看上述操作

  1. 创建了一个名为cmdb的虚拟环境
  2. 然后创建了一个cmdb的目录
  3. 进入cmdb目录后,在应用cmdb虚拟环境到cmdb目录下
  4. 就完成了虚拟环境的应用

可以看到当进入到cmdb目录后,提示符最前面出现(cmdb)的样式,表示进入了cmdb的虚拟环境。

此时在cmdb虚拟环境下使用pip安装的所有包,都和其他的python环境没有任何关联。这一点很重要,避免了环境混乱和冲突。

pip 通用配置

正常情况下,使用pip来安装,默认网络很慢,经常造成超时等不能安装的情况,下面来配置pip下载通过阿里云,增加下载速度

具体操作如下

[python@node ~]$ mkdir ~/.pip
[python@node ~]$ cat ~/.pip/pip.conf
[global]
index-url=http://mirrors.aliyun.com/pypi/simple
trusted-host=mirrors.aliyun.com

那通过上述配置后,再使用pip来安装包的时候,下载速度就很快了。

pip导出和导入

导出当前python版本下的pip安装的所有的包组

pip freeze > requirement

安装requirement文件中所有的包组并对应其版本

pip install -r requirement

Jupyter 安装和配置

安装 jupyter

进入到刚刚创建的cmdb虚拟环境目录下,直接使用pip install jupyter 来进行安装即可;

启动jupyter

启动前需要使用jupyter notebook password 来自定义修改密码

使用命令:

jupyter notebook --ip=0.0.0.0 --port=8888

编程基础

程序

一组能让计算机识别和执行的指令

电子计算机

能够执行程序的机器

现代计算机

  • 艾伦 麦席森 图灵(Alan Mathison Turing,1912年6月23日 - 1954年6月7日),英国数学家、逻辑学家,被称为计算机之父,人工智能之父。图灵提出的著名的图灵机模型为现代计算机的逻辑工作方式奠定了基础
  • 冯 诺依曼著名匈牙利裔美籍犹太人数学家、计算机科学家、物理学家和化学家,数字计算机之父。他提出了以二进制作为数字计算机的数制基础,计算机应该按照程序的顺序执行,计算机因该有五大部件。
  • CPU由运算器和控制器组成
  • 运算器,完成各种算术运算、逻辑运算、数据传输等数据加工处理
  • 控制器,控制程序的执行
  • 存储器,用于记忆程序和数据,例如内存
  • 输入设备,将数据或者输入到计算机中,例如键盘,鼠标
  • 输出设备,将数据或程序的处理结果展示给用户,例如显示器、打印机等

编程基础

计算机语言

人与计算机之间交互的语言

机器语言

  • 一定位数组成二进制的0和1的序列,成为机器指令。机器指令的集合就是机器语言
  • 与自然语言差异太大,难学、难懂、难写、难记、南差错

汇编语言

  • 用一些助记符号替代指令,成为汇编语言。ADD A,B指的是将寄存器A的数与寄存器B的数相加得到的数放到寄存器A中
  • 汇编语言写好的程序需要汇编程序转换成机器指令
  • 汇编语言只能稍微好记了一些,可以认为就是机器指令对应的助记符。只是符号本身接近自然语言

语言分类

低级语言

  • 面向机器的语言,包括机器语言、汇编语言
  • 不同的机器不能通用,不同的机器需要不同的机器指令或者汇编程序

高级语言

  • 接近自然语言和数学语言的计算机语言
  • 高级语言首先要书写源程序,通过汇编程序把源程序转换成机器指令的程序
  • 1954年正式发布的Fortran语言是最早的高级语言,本意是公式翻译
  • 人们只需要关系怎么书写程序,针对不同机器的编译的事交给编译器关心处理

低级语言到高级语言

  • 语言越高级,越接近人类的自然语言和数学语言
  • 语言越低级,越能让机器理解
  • 高级语言和低级语言之间需要一个转换的工具:编译器、解释器
  • C、C++ 等语言的源代码需要本地编译
  • Java、Python、C# 的源代码需要被解释器编译成中间代码(Bytecode),在虚拟机上运行
  • 编辑语言,把源代码转换成目标机器的CPU指令
  • 解释语言,解释后转换成字节码,运行在虚拟机上,解释器执行中间代码

高级语言的发展

非结构化语言

  • 编号或标签、GOTO,子程序可以有多个入口和出口
  • 有分支、循环

结构化语言

  • 任何基本结构只允许是唯一入口和唯一出口
  • 顺序、分支、循环,飞起GOTO

面向对象语言

  • 更加接近人类认知世界的方式,万事万物抽象对象,对象间关系抽象成类和继承
  • 封装、继承、多态

函数式语言

  • 古老的编程范式,应用在数学计算、并行处理的场景。引入到了很多现代高级语言中
  • 函数是“一等公民”,高阶函数

程序Program

程序

  • 算法 + 数据结构 = 程序
  • 数据是一切程序的合信
  • 数据结构是数据在计算机中的类型和组织方式
  • 算法是处理数据的方式,算法有优劣之分

写程序难点

  • 理不清数据
  • 搞不清处理方式
  • 无法把数据设计转换成数据结构,无法把处理方式转换成算法
  • 无法用设计范式来进行程序设计
  • 世间程序皆有bug,但不会debug

Python解释器

官方Cpython

  • C语言开发的,最广泛的Python解释器

Ipython

  • 一个交互式、功能增强的Cpython

PyPy

  • Python、语言写的Python解释器,JIT技术,动态编译Python代码

Jython

  • Python的源代码编译成Java的字节码,跑在JVM

IronPython

  • 与Jython类似,运行在.Net平台上的解释器,Python代码呗变异成.Net的字节码

Python 的语言类型

  • Python 是动态语言、强类型语言
  • 静态编译语言
  • 实现声明变量类型,类型不能再改变
  • 编译时检查
  • 动态编译语言
  • 不用实现声明类型,随时可以复制为其他类型
  • 编译时不知道是什么类型,很难推断
  • 强类型语言

不同类型之间操作,必须要强制类型转换为同一类型

  • 弱类型语言

不同类型间可以操作,自动隐式转换

1. Python 基础概述 和 环境安装的更多相关文章

  1. Python基础学习(一)之Python的概述与环境安装

    Python介绍 Python语言介绍 Python是一门高级的.面向对象的.解释性.脚本语言. 高级语言:贴近开发者,对应底层语言,底层语言贴近机器:java.C#.php .ruby 面向对象对应 ...

  2. Java基础-配置开发环境-安装JDK

    Java基础-配置开发环境-安装JDK 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.计算机基础知识 1>.计算机的组成 计算机有硬件与软件组成. 2>.硬件: 硬 ...

  3. Python基础学习之环境搭建

    Python如今成为零基础编程爱好者的首选学习语言,这和Python语言自身的强大功能和简单易学是分不开的.今天我们将带领Python零基础的初学者完成入门的第一步——环境搭建.本文会先来区分几个在P ...

  4. Python For Mac 开发环境安装 以及问题记录

    Python For Mac 开发环境安装记录 把自己安装的过程记录一下,亲测可用 1.Python3环境安装(转载http://www.cnblogs.com/meng1314-shuai/p/90 ...

  5. Python系列:一、Python概述与环境安装--技术流ken

    Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...

  6. Python第一章概述与环境安装

    Python简介 Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项 ...

  7. python基础初识介绍以及安装

    python介绍 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,做为ABC 语言的一种继承. ...

  8. Python 3.6 -win64环境安装PIL模块

    PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了.PIL功能非常强大,但API却非常简单易用. 由于PIL仅支持到Python 2.7,加上年久失修 ...

  9. Selenium2+python自动化1(环境安装)

    前言 目前selenium版本已经升级到3.0了,网上的大部分教程是基于2.0写的,所以在学习前先要弄清楚版本号,这点非常重要.本系列依然以selenium2为基础,目前selenium3坑比较多,暂 ...

随机推荐

  1. 在线预览office文件

    Office Online 实现在线预览 office的在线预览,针对不同的浏览器版本和系统具有要求,具体的相关文档请参考官方文档. 利用office online 平台进行office 文档的在线查 ...

  2. 作为一名程序员,你真正了解CDN技术吗?

    本文导读: 物流仓库配送如何加速 静态资源文件部署方式 静态资源加速之CDN技术 解析过程中的名词解释 最后的总结 1.物流仓库配送如何加速 我们还是从生活中购物的例子来展开. 将时光倒回到几年前,在 ...

  3. SVD分解

    首先,有y = AX,将A看作是对X的线性变换 但是,如果有AX = λX,也就是,A对X的线性变换,就是令X的长度为原来的λ倍数. *说起线性变换,A肯定要是方阵,而且各列线性无关.(回想一下,A各 ...

  4. CSS汇总之CSS选择器

    要使用css对HTML页面中的元素实现一对一,一对多或者多对一的控制,这就需要用到CSS选择器. 一.通配符选择器 语法:*{ } 说明:通配符选择器可以选择页面上所有的html标签(包括body,h ...

  5. 实测Maven上传jar包到私服的方法归纳

    Hello,各位小伙伴大家好,我是小栈君.好久不见,最近因为工作的缘故,导致了更新变慢,但是小栈君也在积极的做素材的规划,毕竟学习知识点的归纳和提炼需要一定的时间. 所以还请大家多多见谅,下一期的分享 ...

  6. 大数据之路week01--自学之面向对象java(static,this指针(初稿))

    函数的重载 返回值不一样会报错 java中,如果自己定义了构造函数的话,它就不会给你默认一个无参函数 如果一个属性,只进行定义,不初始化,自动补0,如果是一个布尔属性,默认是false但是如果一个局部 ...

  7. lrd 模拟 总结

    觉得是时候总结一下达哥的考试了!达哥的考试我就没有考好过,就之前达哥的考试都是人家ak我爆零,然后这次也不例外,我总是想在考场上尝试一些新的东西,其实就是作死行为,有的时候这种行为可以为我带来收益但是 ...

  8. 深入理解计算机系统 第八章 异常控制流 part1

    本章主旨 第八章的目的是阐述清楚应用程序是如何与操作系统交互的(之前章节的学习是阐述应用程序是如何与硬件交互的) 异常控制流 异常控制流,即 ECF(exceptional contril flow) ...

  9. JDBC事务的简单使用

    在实际功能当中,经常会碰到同时对一组数据进行增加和减少,最常见的就是交易功能. 事务内执行的语句,要么都成功,要么都失败,如果有一句没执行成功,整个事务都不会提交的. import java.sql. ...

  10. 苹果客户端input时页面自动放大的问题

    一.问题: 最近在用vue测试的时候发现,安卓端在输入框input时不存在页面自动缩放的问题,苹果客户端认为是考虑到用户的体验效果,才出现输入框自动放大的功能.但也收到了不少用户反馈体验效果不周. 二 ...