(1)pyhton是一种强类型的,动态语言;java
强类型语言:不一样数据类型之间的操做,必须进行强制类型转换才能操做,例如:java,python等node
弱类型语言:能够进行不一样数据类型之间操做,解释器会进行隐私转换,例如:JScript等python
print('a'+1)
==> 运行报错
'''
TypeError: Can't convert 'int' object to str implicitly
'''
print('a'+str(1))
==>a+1
(2)什么是动态语言?静态语言?linux
动态语言简单的理解为:在编译前不须要定义变量的数据类型,例如 :a=2,直接能使用a;优势:便于使用;缺点:不严谨;git
静态语言:在编译前必事先定义变量类型,典型的语言为:java,定义变量 int a=2;github
(3)语言类型分类图:web
计算机由五大部分组成:算法
(1)输入设备:常见的例如键盘鼠标等;sql
(2)寄存器:用来存放数据和程序的地方;shell
(3)运算器:运算算术运算和逻辑运算;
(4)控制器:主要控制程序的运行;
(5)输出设备:常见的例如各类显示设备;
冯诺依曼主要提出了0和1二进制做为计算机的控制信号,给将来计算机发展提供了方向;(我的理解)
程序=算法+数据结构
数据结构:数据在计算机系统中的类型和组织结构;
算法:简单理解为处理数据的方式;
(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 0101 1111 1111 +1 0000 0100 符号位溢出,则取值为 0000 0100结果为4
总结:正数的原码,反码和补码都相同;负数的反码符号位不变,其余位按位取反,补码在反码的基础上加1;
# pyenv:是一款python的多版本控制器,能经过virtualenv插件彻底隔离用户的python环境;
(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_profile export PATH="/home/python/.pyenv/bin:$PATH" eval "$(pyenv init -)" eval "$(pyenv virtualenv-init -)" # souce ~/.bash_profile
# 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 $ 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
# 为何要使用虚拟环境?
由于刚才使用的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]$
# 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.com windows则在登陆用户的家目录建立一个pip目录,而后再建立内容和上面同样的pip.ini文件便可;
# 虚拟环境的好处就在于和其余项目运行环境隔离。每个独立的环境均可以使用pip命令导出已经安装的包,在另
一个环境中安装这些包 ;
1 (mag353) [python@node web]$ pip freeze > requirement
//导出包文件名,内容例如:
backcall==0.1.0
bleach==2.1.3
decorator==4.3.0 2 (mag353) [python@node web]$ mkdir ~/magedu/projects/pro1 3 (mag353) [python@node web]$ cd ~/magedu/projects/pro1 4 [python@node pro1]$ pyenv install --list 5 [python@node pro1]$ pyenv install 3.6.4 6 [python@node pro1]$ pyenv virtualenv 3.6.4 mag364 7 [python@node pro1]$ pyenv local mag364 8 (mag364) [python@node pro1]$ mv ../web/requirement ./ 9 (mag364) [python@node pro1]$ pip install -r requirement
(1)先启动python解释器;
(2)python解释器把文件从硬盘读取到内存;
(3)读入内存后,Python解释器解释执行;
(1)定义一个变量的3个特征:
1 a=10 # 定义变量a 2 id(a) # 先理解为在内存的地址 3 type(a) # 变量类型 4 value # 变量值,10
总结:id相同,则type和value一定相同;value相同,则type相同,id未必相同;python中的变量名没有存值的功能,变量名与变量值只是一种绑定关系;
(2)变量的定义规范
1)变量名只能是字母,数字或者下划线的任意组合;
2)变量名的第一个字符不能以数字开头;
3)python的关键字不能声明为变量名;
4)定义方式:最好是有具体含义,一看能明白的驼峰体;
# 代码注释分为:单行注释和多行注释;单行注释用#表示,多行注释用''' '''来表示;
# 写注释原则:不用所有都写注释,只须要在本身以为很差理解的代码加上注释便可;
# 关于文件开头:
#!/usr/bin/env python ==> 声明解释器; # -*- coding:utf-8 -*- ==> 声明编码格式;
(1)数字类型:int和float
(2)字符串:在python中加了引号就表示为字符串类型str,注意:python没有单个字符类型;
(3)列表:有序,能够存放多个值,而且每一个值可使任意数据类型;
(4)字典:无序,采用key:value方式存储,能够存放多个值;每一个key必须是不可变数据类型,每一个value可使任意数据类型;
(5)布尔类型:True和False;注意:全部数据类型都自带布尔值,其中None、0、和空三种状况为False;其他为True;
2.5.一、算数运算符
a = 0011 1100 b = 0000 1101 ----------------- a&b = 0000 1100 a|b = 0011 1101 a^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
# 与或非,and or not
# 短路运算:
and:若是第一个表达式为False,后面的表达式则不须要运算,结果必定为False;
or:若是第一个表达式为True,后面的表达式不须要运算,结果必定为True;
# 算数运算符 > 位运算符 > 身份运算符 > 成员运算符 > 逻辑运算符;记不住顺序用括号来区分优先级;
# 表达式由:数字、符号、括号和变量等的组合
算数表达式
逻辑表达式
赋值表达式
在python中,赋值即定义;
2.6.一、单分支
2.6.二、多分支
2.6.三、循环语句
2.6.四、循环控制continue与break