• Python学习week2-python介绍与pyenv安装


    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 0101
    1111 1111
           +1
    0000 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_profile
    
    export 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.com
    
    windows则在登录用户的家目录创建一个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.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

    2、python基础语法

    2.1、python文件执行过程

    (1)先启动python解释器;

    (2)python解释器把文件从硬盘读取到内存;

    (3)读入内存后,Python解释器解释执行;

    2.2、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)定义方式:最好是有具体含义,一看能明白的驼峰体;

    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、算数运算符

    +      加法
    -      减法
    *      乘法
    /      除法
    **     幂运算
    //     取整除,返回商的正数部分;例如:9//2 = 4 , 50021 // 10000 =5

    2.5.2、位运算

    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

    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

  • 相关阅读:
    (转)hdu 3436Queue-jumpers--splay+离散化
    (原)2018牛课多校第4场--G
    解压和生成 system.img&data.img ( ext4格式)
    Linux中的shift命令
    git commit 编辑器
    关于android.mk中的LOCAL_OVERRIDES_PACKAGES 说明
    android源码解析 ---- camera 照相机 摄像机
    补丁git format-patch && git-am用法
    LCD背光设备的 驱动框架2
    PWM(脉宽调制)的基本原理 及其 应用实例
  • 原文地址:https://www.cnblogs.com/soulgou123/p/9394913.html
Copyright © 2020-2023  润新知