一,python介绍
1,python是一种结合了解释型,编译型,互动型的面向对象的脚本语言。
2,优点:
(1)优雅,简单,明确;
(2)开发效率高;
(3)具有可移植性;
(4)可扩展性强;
(5)可切入性强。
3,缺点
(1)运行速度慢
(2)代码不能加密
(3)不能实现同一线程对多核cpu的使用
注:CIL即全局解释锁,是计算机程序设计语言中用于同步线程的工具,使得任何时刻仅有一个线程是操作系统的原生线程。一个python解释器进程内仅有一条主线程,以及多条用户程序的执行线程,即使在多核cpu中,由于CIL的存在,所以禁止多条线程并发执行
4,python的执行过程
(1)当python程序运行时,编译的结果保存在位于内存的PyCodeObject中,当python程序运行结束时,python解释器将PyCodeObject写回到pyc文件中。
(2)当python程序第二次运行时,首先程序会在硬盘中寻址pyc文件,如果找到,则直接载入,否则就重新上面的过程。
解释:PyCodeObject是python编译器真正编译成的结果;
pyc是PyCodeObject的一种持久化保存方式。
二,python解释器
解决解释型语言执行效率低下的问题。
解释器 | 特点 |
---|---|
Cpython | 官方版的解释器,由c语言编写 |
Pypy | 采用JIT技术,对python代码进行动态编译,所以可以显著提高python代码的执行效率 |
shedskin | 将python代码翻译成c++,然后再编译 |
注:由于Pypy和Cpython有一些不同,所以相同的python代码在两种不同的解释器下执行出来的结果可能有所不同。
三,python安装
1,在Linux下安装python
上传安装包并解压
[root@localhost ~]# tar xf Python-3.8.2.tgz -C /usr/local/src/
[root@localhost ~]# yum install gcc gcc-c++ make zlib* -y
[root@localhost ~]# yum install libffi-devel -y
[root@localhost Python-3.8.2]# ./configure --prefix=/usr/local/python3
[root@localhost Python-3.8.2]# make && make install
由于linux中默认装有python2的版本,因此在执行命令时调用2版本
配置执行文件的路径,会生成python3的命令
[root@localhost bin]# ln -fs /usr/local/python3/bin/python3 /usr/bin/python3
2,安装pycharm
上传安装包
[root@localhost ~]# tar xf pycharm-professional-2018.3.7.tar.gz\?_ga\=2.211598423.353379605.1584669292-1103173413.1584669292 -C /usr/local/src/
[root@localhost ~]# cd /usr/local/src/pycharm-2018.3.7/
[root@localhost pycharm-2018.3.7]# cd bin/
[root@localhost bin]# ./pycharm.sh
[root@localhost bin]# ln -s /usr/local/src/pycharm-2018.3.7/bin/pycharm.sh /usr/sbin/pycharm
四,搭建python开发虚拟环境
1,什么是虚拟环境?
在同一个执行机上,运行的相互独立的python运行环境。
2,为什么要使用虚拟环境?
(1)当有不同的版本需求时;
(2)不同的项目需要不同的运行环境。
3,安装虚拟主机
(1)安装虚拟插件
[root@localhost ]# yum install python-virtualenv
(2)新建虚拟环境(创建的文件都在当前目录下)
[root@localhost src]# virtualenv py2
New python executable in /usr/local/src/py2/bin/python
Installing setuptools, pip, wheel...done.
virtualenv 文件名 创建名为。。的虚拟环境
[root@localhost src]# virtualenv -p /usr/local/python3/bin/python3 py3
virtualenv -p python安装目录 文件名
(3)运行虚拟环境
[root@localhost src]# cd py3/bin/
[root@localhost bin]# ls
activate activate.fish easy_install pip pip3.8 python3 python-config
activate.csh activate_this.py easy_install-3.8 pip3 python python3.8 wheel
[root@localhost bin]# source activate
(py3) [root@localhost bin]#
(py3) [root@localhost bin]# python
Python 3.8.2 (default, Mar 29 2020, 23:14:04)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-36)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>
>>>
>>> exit()
(4)退出虚拟环境
(py3) [root@localhost bin]# deactivate
五,基础语法
1,用脚本编写python程序
[root@localhost ~]# cat python.py
#!/usr/bin/python2
#-*- encoding:utf-8 -*-
print("你好,世界")
[root@localhost ~]# python python.py
你好,世界
注:用python2运行时中文一般解析不了,要指定字符串utf-8,
[root@localhost ~]# cat python.py
#!/usr/bin/python3
print("你好,世界")
[root@localhost ~]# python3 python.py
你好,世界
用python3运行时不用指定字符串,它默认的就是utf-8.
2,标识符
(1)在python里,标识符由数字,字母,下划线组成。
(2)标识符中不能以数字开头。
(3)标识符区分大小写。
(4)以下划线开头的标识符具有特殊含义
a,以但下划线开头(_name)表示不能直接访问的类属性,需要通过类提供的接口访问。
b,以双下划线开头(__name)表示类的私有成员变量。
c,以双下划线开头结尾(_name_)表示特殊方法的标识符,
3,保留字符
4,注释
(1)单行注释:#
(2)多行注释:'''
'''
5,用户交互与格式化输出
(1)用户交互输入
username=input("please input name:")
print(username)
(2)格式化输出
方法一,字符串拼接
username=input("please input name:")
passwd=input("please input password:")
phone=input("please input phone:")
info='''---------name:'''+username+'''----------
password:'''+passwd+'''
phone:'''+phone+'''
'''
print(info)
方法二:format函数变量映射
username=input("please input name:")
passwd=input("please input password:")
phone=input("please input phone:")
info='''---------name:{_username}----------
password:{_passwd}
phone:{_phone}
'''.format(_username=username,
_passwd=passwd,
_phone=phone
)
print(info)
方法三:format函数顺序映射
username=input("please input name:")
passwd=input("please input password:")
phone=input("please input phone:")
info='''---------name:{0}----------
password:{1}
phone:{2}
'''.format(username,passwd,phone)
print(info)
方法四:带格式输出
username=input("please input name:")
passwd=input("please input password:")
phone=input("please input phone:")
info='''---------name:%s----------
password:%s
phone:%s
'''%(username,passwd,phone)
print(info)
注:若将第四种方法的%s换为%d,则
%s:字符串
%d:整型
可以打印输入值的字符类型:print(type(phone))
可以看出输入的字符为字符串,所以可以将输入的值强转:phone=int (input (“please input your phone”)
6,空行
(1)函数之间或类的方法之间用空行分割,表示一段新代码的开始;
(2)类和函数入口之间用一行空行分隔,以突出函数入口的开始。
注:空行不是python语法的一部分,但是程序代码的一部分。