1、python简介及python环境安装
1.1、python的语言类型
(1)pyhton是一种强类型的,动态语言;
强类型语言:不同数据类型之间的操作,必须进行强制类型转换才能操作,例如:java,python等
弱类型语言:可以进行不同数据类型之间操作,解释器会进行隐私转换,例如:JScript等
print('a'+1) ==> 运行报错'''TypeError: Can't convert 'int' object to str implicitly'''print('a'+str(1)) ==>a+1
(2)什么是动态语言?静态语言?
动态语言简单的理解为:在编译前不需要定义变量的数据类型,例如 :a=2,直接能使用a;优点:便于使用;缺点:不严谨;
静态语言:在编译前必事先定义变量类型,典型的语言为:java,定义变量 int a=2;
(3)语言类型分类图:
1.2、冯诺依曼体系
计算机由五大部分组成:
(1)输入设备:常见的例如键盘鼠标等;
(2)寄存器:用来存放数据和程序的地方;
(3)运算器:运算算术运算和逻辑运算;
(4)控制器:主要控制程序的运行;
(5)输出设备:常见的例如各种显示设备;
冯诺依曼主要提出了0和1二进制作为计算机的控制信号,给未来计算机发展提供了方向;(个人理解)
1.3、程序是什么?
程序=算法+数据结构
数据结构:数据在计算机系统中的类型和组织结构;
算法:简单理解为处理数据的方式;
1.4、原码,反码和补码
(1)原码:所谓的原码其实就是符号位加上数字的二进制表示;(符号位一般为最高位,0表示正数,1表示负数);《方便人类识别》
7的原码: 0000 0111 -7的原码: 1000 0111
(2)反码:正数的反码与原码相同;负数的反码,符号位不变,其他位按位取反;
-7的原码: 1000 0111-7的反码: 1111 1000
(3)补码:计算机内存中表示数据都是通过补码的形式表示的,其中正数的补码与原码相同;负数的补码则为在反码的基础上加1;
+7的原码:0000 0111 ==> 反码 0000 0111 ==> 补码 0000 0111-7的原码:1000 0111 ==> 反码 1111 1000 == >补码 1111 1001
(4)运算练习:计算5-1
5的反码:0000 0101-1的原码:1000 0001 ==> 反码 1111 1110==>补码:1111 1111# 计算机内部运算都通过反码计算0000 01011111 1111 +10000 0100 符号位溢出,则取值为 0000 0100结果为4
总结:正数的原码,反码和补码都相同;负数的反码符号位不变,其他位按位取反,补码在反码的基础上加1;
1.5、pyenv
1.5.1、pyenv简介
# pyenv:是一款python的多版本控制器,能通过virtualenv插件完全隔离用户的python环境;
1.5.2、pyenv安装
(1)系统环境准备
Centos6.10_x64
(2)安装过程
# 安装git
# yum install git -y
# 安装python编译环境
# yum -y install gcc make patch gdbm-devel openssl-devel sqlite-devel readline-devel zlib-devel bzip2-devel
# 创建python用户
# useradd python# echo python | passwd --stdin python
# 切换python用户登录系统,并安装pyenv
# curl -L https://github.com/pyenv/pyenv-installer/raw/master/bin/pyenv-installer | bash###pyenv-installer 一个pyenv安装的shell脚本###
# 如果出现“curl: (35) SSL connect error ”,则是nss版本低造成的,更新nss即可;
# yum update nss
# 修改python用户的环境变量
# vim ~/.bash_profileexport PATH="/home/python/.pyenv/bin:$PATH"eval "$(pyenv init -)"eval "$(pyenv virtualenv-init -)"# souce ~/.bash_profile
1.5.3、pyenv的使用
# python版本及patch路径
$ python --version$ echo $PATH
# pyenv命令
install命令$ pyenv install --list //列出所有可用版本$ pyenv install 3.5.3 //在线安装指定python版本,在线安装由于网速限制可能比较慢,推荐通过cache的方式安装; # cache方式安装 1)先在~/.pyenv目录下,新建cache目录,放入下载好的待安装文件,由于不确定安装时候到底需要哪个具体文件,最好将xz,gz,tgz等文件都放到cache目录中 2)执行$ pyenv install 3.5.3$ pyenv versions //显示已有版本
1.5.4、pyenv的python多版本控制
1 $ pyenv version //显示当前python版本2 $ pyenv versions //显示当前系统所有可用的pyton版本,*表示当前生效版本3 4 $ pyenv global 3.5.3 // 表示当前用户全局生效5 $ pyenv shell 3.5.3 // 当前shell生效6 $ pyenv local 3.5.3 // 当前目录及子目录生效 # 取消设置为 pyenv local --unset
1.5.5、virltualenv虚拟环境设置
# 为什么要使用虚拟环境?
因为刚才使用的python环境都为一个公共的空间,如果多个项目同时开发,并且使用的不同的python版本开发,或者使用不同版本的python进行部署运行等都可能会照成冲突,最好的解决方法为:
每个项目都是用单独独立的环境中,此时virltualenv是一种比较好的解决方案;
# viltualenv插件目录 /home/python/.pyenv/plugins
# 建立虚拟环境
$ pyenv virtualenv 3.5.3 mag353 // 相当于建立一个以3.5.3为基础的mag353环境
# 查看可用版本
# 具体使用实例:
[python@node ~]$ mkdir -p magedu/projects/web[python@node ~]$ cd magedu/projects/web/[python@node web]$ pyenv local mag353(mag353) [python@node web]$ cd ..[python@node projects]$ cd web/(mag353) [python@node web]$
1.6、pip的使用
# pip是python 的包管理工具,和rhel的yum工具类似,也需要配置源站:
linux系统下pip配置:$ mkdir ~/.pip$ vim ~/.pip/pip.conf###配置如下###[global]index-url=https://mirrors.aliyun.com/pypi/simple/trusted-host=mirrors.aliyun.comwindows则在登录用户的家目录创建一个pip目录,然后再创建内容和上面一样的pip.ini文件即可;
1.7、pyenv导出与导入包
# 虚拟环境的好处就在于和其他项目运行环境隔离。每一个独立的环境都可以使用pip命令导出已经安装的包,在另一个环境中安装这些包 ;
1 (mag353) [python@node web]$ pip freeze > requirement //导出包文件名,内容例如: backcall==0.1.0 bleach==2.1.3 decorator==4.3.02 (mag353) [python@node web]$ mkdir ~/magedu/projects/pro13 (mag353) [python@node web]$ cd ~/magedu/projects/pro14 [python@node pro1]$ pyenv install --list5 [python@node pro1]$ pyenv install 3.6.46 [python@node pro1]$ pyenv virtualenv 3.6.4 mag3647 [python@node pro1]$ pyenv local mag3648 (mag364) [python@node pro1]$ mv ../web/requirement ./9 (mag364) [python@node pro1]$ pip install -r requirement
2、python基础语法
2.1、python文件执行过程
(1)先启动python解释器;
(2)python解释器把文件从硬盘读取到内存;
(3)读入内存后,Python解释器解释执行;
2.2、python变量
(1)定义一个变量的3个特征:
1 a=10 # 定义变量a2 id(a) # 先理解为在内存的地址3 type(a) # 变量类型4 value # 变量值,10
总结:id相同,则type和value必定相同;value相同,则type相同,id未必相同;python中的变量名没有存值的功能,变量名与变量值只是一种绑定关系;
(2)变量的定义规范
1)变量名只能是字母,数字或者下划线的任意组合;
2)变量名的第一个字符不能以数字开头;
3)python的关键字不能声明为变量名;
4)定义方式:最好是有具体含义,一看能明白的驼峰体;
2.3、关于python的注释
# 代码注释分为:单行注释和多行注释;单行注释用#表示,多行注释用''' '''来表示;
# 写注释原则:不用全部都写注释,只需要在自己觉得不好理解的代码加上注释即可;
# 关于文件开头:
#!/usr/bin/env python ==> 声明解释器;# -*- coding:utf-8 -*- ==> 声明编码格式;
2.4、python的基本数据类型
(1)数字类型:int和float
(2)字符串:在python中加了引号就表示为字符串类型str,注意:python没有单个字符类型;
(3)列表:有序,可以存放多个值,并且每个值可以使任意数据类型;
(4)字典:无序,采用key:value方式存储,可以存放多个值;每个key必须是不可变数据类型,每个value可以使任意数据类型;
(5)布尔类型:True和False;注意:所有数据类型都自带布尔值,其中None、0、和空三种情况为False;其余为True;
2.5、运算符
2.5.1、算数运算符
2.5.2、位运算
a = 0011 1100b = 0000 1101-----------------a&b = 0000 1100a|b = 0011 1101a^b = 0011 0001~a = 1100 0011 移位操作: >> 左移位:将操作数的二进制码整体左移指定位数,左移之后的空使用“0”来补位;值变大,幂运算; >> 右移位:将操作数的二进制码整体右移指定位数,右移之后的空使用“符号位”(正数为“0”,负数为“1”)来补位;值变小12>>2 ,0000 1100 ==> 0000 0011=4
常见的移位操作: 1) m*2^n :左移是乘以2的幂,例如:2^3 ==> 1<<3 ==> 1*2^3=8
2.5.3、逻辑运算
# 与或非,and or not
# 短路运算:
and:如果第一个表达式为False,后面的表达式则不需要运算,结果一定为False;
or:如果第一个表达式为True,后面的表达式不需要运算,结果一定为True;
2.5.4、运算符的优先级
# 算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符;记不住顺序用括号来区分优先级;
2.5.5、表达式expression
# 表达式由:数字、符号、括号和变量等的组合
算数表达式
逻辑表达式
赋值表达式
在python中,赋值即定义;
2.6、程序控制语句
2.6.1、单分支
2.6.2、多分支
2.6.3、循环语句
2.6.4、循环控制continue与break