1.python语言介绍
1.1)介绍
python是一个高层次的结合了解释性,编译型,互动性和面向对象的脚本语言
python的设计具有很强的可读性(eg:if test>2: 看起来很清晰)相比其他语言经常使用英文关键字,其他语言的一些标点符号
python是一种解释性语言,不会先编译,在运行前一刻,会有一个称之为结束程序的外壳程序将源代码转化为二进制代码,容易移植(无论是linux,windows的解释程序)转换成的二进制代码一样
python是动态语言,这就意味着可以在一个python提示符>>>后直接执行代码
python是强类型语言,意味着python支持面向对象的风格或代码封装在对象的编程技术
1.2)优缺点
优点:1)“优雅”“简单”“明确”
2)“开发效率高”
3)可移植性
4)可扩展性
5)可切入性
缺点:1)运行速度慢(没有编译)
2)代码不能解密
3)线程不能利用多cpu问题
2.python解释器
当我们编写Python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平高,谁都可以开发解释器。
1)Cpython
当我们存Python官网上下载并安装好Python后,我们就获得了官方版的解释器:Cpython。这个解释器使用C语言写的。在命令行下运行Python就是启动了Cpython解释器。
2) Pypy
Pypy是另一个Python解释器,他的目标是执行速度。Pypy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著的python代码的执行效率
绝大多数Python代码都可以在Pypy下运行,但是Pypy和Cpython有一些是不同的,这就导致相同的Python代码 在两种和解释器下执行可能会有不同的结果。
///不同的python脚本在不同的解释器下执行可能的结果会不同 ///
3.python环境搭建
官方下载文档https://www.python.org/downloads/windows/ (windows)
https://www.python.org/ftp/python/3.7.3/Python-3.7.3.tar.xz (linux)
搭建以linux为例
把下载的包解压
[root@localhost ~]# tar xf Python-3.7.3.tar.xz
安装python373
[root@localhost ~]# yum install gcc gcc-c++ make zlib* -y
[root@localhost ~]# yum install libffi-devel -y
[root@localhost ~]# ./configure --prefix=/usr/local/python3
[root@localhost ~]# make
[root@localhost ~]# make install
配置执行文件和路径
[root@localhost ~]# cd /usr/bin
[root@localhost ~]# ln -s /usr/local/python3/bin/python3 /usr/bin/python373
安装之后就可以测试 python2 和 python373都有可以使用
4.集成开发环境 PyCharm
PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……
官方下载文档PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/#section=windows(windows)
https://www.jetbrains.com/pycharm/download/#section=linux (linux)
安装以linux为例
先把下载下来的包解压
然后执行pucharm的运行脚本 最后软连接到/usr/sbin下
[root@localhost ~]# cd /usr/local/src/pycharm-2018.3.7/bin
[root@localhost bin]# ./pycharm.sh
[root@localhost bin]# ln -s /usr/local/src/pycharm-2018.3.7/bin/pycharm.sh /usr/sbin/pycharm
5.虚拟环境
1)什么是虚拟环境
在同一个执行机上,运行的相互隔离独立的python运行环境
2)为社么要使用虚拟环境
a.当有不同版本需求的时候
b.不同项目需要不同的运行环境
3)如何创建虚拟环境
以linux为例子
搭建虚拟环境:
a.pycharm
b.virtualenv
yum install epel-release -y
yum install python-pip -y
pip install --upgrade pip
pip intall virtualenv
创建虚拟环境 (默认创建的文件在当前目录下)
用 virtualenv -p python对应版本路径 名字
virtualenv 名字 不指定版本 默认为2.7.5的版本
运行虚拟环境:
cd(当前目录)/创建的名字/bin/
source activate 就会进去对应的python环境
退出此环境 用 deactivate
4)如何管理虚拟环境
安装管理工具:virtualenvwrapper
pip install -i https://pypi.douban.com/simple/ virtualenvwrapper
find / -name virtualenvwrapper.sh 找出此脚本的路径
vim /$HOME/.bashrc
存放虚拟环境的路径 (自己指定)
配置的环境变量
( eg:export WORKON_HOME=$HOME/.virtualenvs --------->"存放虚拟环境的路径"
source /usr/bin/virtualenvwrapper.sh --------->配置的环境变量)
配置之后 reboot
管理工具
创建虚拟环境并运行
mkvirtualenv 名字 默认的版本为2.7.5
mkvirtualenv --python=对应版本目录 名字
(eg:mkvirtualenv mypy2
mkvirtualenv --python=/usr/local/python3/bin/python373 mypy3
deactive 退出此环境)
创建之后自动进入 进去之后可以装包在这个版本内
退出虚拟环境
退出用deactivate
再次使用虚拟环境
workon 名字 就可以使用了
workon 可以查看有几个虚拟环境
6.python的基础语法
python预留的标识符
a.运行程序 交互,脚本文件
定义变量字符串 每一个字符都有下标(从0开始)
(eg:
name = 'women'
name[:1] 执行结果为w
name[:5] 执行结果为women)
创建一个python脚本之后 在进去python虚拟环境之后
执行脚本
python 脚本名字 在python3版本之后 字符集默认为utf-8
b.标识符
只能是 数字、字符、_ 或者组合 但是数字不能开头
(eg:
_ name = 'linux' name = 'linux' 都可以定义 888name = 'linux' 就不能定义)
区分大小写
(eg:
name = 'linux' Name = 'python' print(name)和print(Name)结果就不一样)
以_开头的定义变量 有特殊含义
_name:不能直接访问的类属性
__name:表示类的私有成员
__name__:表示的特使方法, 有__main__
"and","or","not" (python预留的字符)不能作为标识符
python里面 双引号和单引号没有本质的区别
注释符 单行用#
多行用 ''' ''' 中间注释
c.用户交互
shell 里面用的是 read -p
python 里面用的 eg:
username = input("please input you name:")
userIP = input('please input you IP:')
userSN = input('please input you SN:')
print(username,userIP,userSN)
定义的变量还可以转变字符类型 int()str()
eg: userSN = str(input('please input you SN:')) 将字符类型转变为字符串
password = int(input('please input your password:')) 将字符类型转变为整数性
定义输出格式: 简缩的方式
方法一:字符串拼接
eg:
info = '''
------user:'''+username+'''------
USERname:'''+username+'''
USERIP:'''+userIP+'''
USERSN:'''+userSN
'''
方法二:带格式输出
eg:
info = '''
------info of %s ------
username: %s
userIP: %s
userSN: %s
''' %(username,username,userIP,userSN)
方法三:format函数变量映射
eg:
info = '''
------ info of {_userna} ------
username: {_userna}
userIP: {_userip}
userSN: {_usersn}
''' .format( _userna = username,
_userip = userIP,
_usersn = userSN
)
方法四:format函数顺序映射
eg:
info = '''
------ info of {0} ------
username: {0}
userIP: {1}
userSN: {2}
''' .format(username,userIP,userSN)
作业脚本
使用python实现一个用户登录的功能:
a.让用户输入:
username:
password:
b.认证成功之后“欢迎登录....”
c.当用户账号或密码输入三次错误之后,将账号冻结。
脚本
username1 = 'leilei'
password1 = 123456
num = 0
while True:
username = input('please input your username:')
password = int(input('please input your password:'))
if username == username1 and password == password1:
print('认证成功')
break
else:
print('认证失败')
num = num+1
if num >= 3:
print('你的账号已被冻结')
break