------------恢复内容开始------------
1 python语言介绍
1.1介绍
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。在程序运行的前一刻,只有源码程序而没有可执行程序。而程序执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码。 容易移植。
Python 是动态语言:这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是强类型语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
1.2 Python的优缺点
1.2.1 优点
1 “优雅”“简单”“明确”。
2 开发效率高。
3 可移植性(避免使用依赖系统的性能)。
4 可扩展性。
6 可切入性
1.2.2 缺点
1.运行速度慢
2 代码不能加密
3 线程不能利用多CPU问题。
CIL即全局解释器锁(Global interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程是操作系统的原生线程。在Linux上为Pthread,在window上为 Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于CIL的存在,所以禁止多线程的并行执行。
1.3 Python的发展
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的。这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
1991年第一个Python编辑器诞生。使用C写的,并能够调用C语言库。从一出生,Python已经具有了:类,函数,异常处理,包含类和词典在内的核心数据类型,以及模块为基础的拓展结果。
1994年1.0 版本发布
2000年2.0版本发布
2008年3.0版本发布
1.4 python在一些知名企业的应用
谷歌:Google App Engine、code.google.com、google earch、谷歌爬虫、google广告等项目都在大量的使用python开发。
CIA:美国中情局网站使用python开发的
NASA:美国航天局(NASA)大量使用python进行数据分析和运算。
YouTube:世界上最大的视屏网站
Dropbox:美国最大的在线存储网站,全部使用Python实现,每天处理量在10亿个文件的上传和下载。
Instagram:美国最大的图片分享网社交网站,每天超过3千万张照片被分享,全部使用Python开发。
Facebook:最大的基础库均通过python实现
Redhat:世界上最流行的linux发行版中的yum包管理工具就是用python开发的。
豆瓣:公司几乎所有的业务均是通过python开发
知乎:国内最大的问答社区,通过python开发(国外Quora)
除了以上之外,还有搜狐、金山、腾讯、盛大、易网、百度、阿里、淘宝、土豆、新浪、果壳等公司都在使用python完成各种各样的任务。
1.5 Python 特点
1.易于学习:**Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:**Python代码定义的更清晰。
3.易于维护:**Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:**Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:**互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:**基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:**如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:**Python提供所有主要的商业数据库的接口。
9.GUI编程:**Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入:** 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
1.6 学习python能干什么?
(1)web开发 Django/pyramid/Toprnado/Bottle/Flask/WebPy
(2)网络编程 Twisted/Requests/Scrapy/Paramiko
(3)科学运算 SciPy/Pandas/Ipython
(4)GUI的图形开发 wxPython/PyQT/Kivy
(5)自动化运维 OpenStack/Saltstack/Ansible/腾讯蓝鲸
1.7 python与运维自动化
运维会开发以后:
随着计算机应用领域的规模的增大,运维自动化已经不是一个新名词了、新技术了。自动化运维无非就是对传统运维进行改造和升级罢了,由于近几年的互联网和PC端的飞速发展,敏捷开发带来的业务频繁更新、上线、业务访问量的突发剧增对系统承载能力的巨大考验等,这些都给运维带来了极大的挑战,运维人员必须不断思考如何满足一下问题?
如何高效的适应业务的频繁更新,变更,上线,扩展?
如何在最低成本的前提下实现业务并发运算能力的可伸缩式扩展?
如何实现运维人员从被动处理故障到故障防御和故障高度自愈的转换?
如果通过不断优化运维流程、自动化工具来降低运维成本、人工参与度,最终实现无人运维?
运维人员如何在这场浪潮中生存下来?《普通运维人员就是秋后的蚂蚱》https://www.jianshu.com/p/b381d1b6b75d
运维会了开发能干什么?
(1)开发各种自动化工具,制定开发各种开源软件。
(2)帮助评估和优化业务技术架构
(3)开发公司的内部办公系统,CRM,网站等
(4)全栈工程师
2.Python解释器
当我们编写Python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平高,谁都可以开发解释器。
2.1 Cpython
当我们存Python官网上下载并安装好Python2.7后,我们就获得了官方版的解释器:Cpython。这个解释器使用C语言写的。在命令行下运行Python就是启动了Cpython解释器。
2.2 Pypy
Pypy是另一个Python解释器,他的目标是执行速度。Pypy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著的python代码的执行效率
绝大多数Python代码都可以在Pypy下运行,但是Pypy和Cpython有一些是不同的,这就导致相同的Python代码 在两种和解释器下执行可能会有不同的结果。
2.3 shedskin
采用了一种新的办法,即“翻译”。它把python代码翻译成C++,然后再编译成pyd(windows下),so(*nix下)模块。这样在其它python代码中,可以简单的import 编译好的模块,非常高效、方便。
2.4 Psyco
是严格地在 Python 运行时进行操作的。也就是说,Python 源代码是通过 python 命令编译成字节码的,所用的方式和以前完全相同(除了为调用 Psyco 而添加的几个 import 语句和函数调用)。但是当 Python 解释器运行应用程序时,Psyco 会不时地检查,看是否能用一些专门的机器代码去替换常规的 Python 字节码操作。这种专门的编译和 Java 即时编译器所进行的操作非常类似(一般地说,至少是这样),并且是特定于体系结构的。到现在为止,Psyco 只可用于 i386 CPU 体系结构。Psyco 的妙处在于可以使用您一直在编写的 Python 代码(完全一样!),却可以让它运行得更快。
3 pytho开发环境搭建
Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:
Python官网:https://www.python.org/
你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。
Python文档下载地址:https://www.python.org/doc/
3.1 Windows下开发环境搭建
打开 WEB 浏览器访问https://www.python.org/downloads/windows/ 下载对应的软件包
1 python语言介绍
1.1介绍
编程语言的分类主要有一下几个维度,编译型和解释性;静态语言和动态语言;强类型语言和弱类型语言。
Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。
Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。
Python 是一种解释型语言:这意味着开发过程中没有了编译这个环节。在程序运行的前一刻,只有源码程序而没有可执行程序。而程序执行到源程序的某一条指令,则会有一个称之为解释程序的外壳程序将源代码转换成二进制代码。 容易移植。
Python 是动态语言:这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。
Python 是强类型语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。
1.2 Python的优缺点
1 “优雅”“简单”“明确”。
2 开发效率高。
3 可移植性(避免使用依赖系统的性能)。
4 可扩展性。
6 可切入性
1.2.2 缺点
1.运行速度慢
2 代码不能加密
3 线程不能利用多CPU问题。
CIL即全局解释器锁(Global interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程是操作系统的原生线程。在Linux上为Pthread,在window上为 Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于CIL的存在,所以禁止多线程的并行执行。
1.3 Python的发展
Python 是由 Guido van Rossum 在八十年代末和九十年代初,在荷兰国家数学和计算机科学研究所设计出来的。
Python 本身也是由诸多其他语言发展而来的。这包括 ABC、Modula-3、C、C++、Algol-68、SmallTalk、Unix shell 和其他的脚本语言等等。
像 Perl 语言一样,Python 源代码同样遵循 GPL(GNU General Public License)协议。
现在 Python 是由一个核心开发团队在维护,Guido van Rossum 仍然占据着至关重要的作用,指导其进展。
1991年第一个Python编辑器诞生。使用C写的,并能够调用C语言库。从一出生,Python已经具有了:类,函数,异常处理,包含类和词典在内的核心数据类型,以及模块为基础的拓展结果。
1994年1.0 版本发布
2000年2.0版本发布
2008年3.0版本发布
1.4 python在一些知名企业的应用
谷歌:Google App Engine、code.google.com、google earch、谷歌爬虫、google广告等项目都在大量的使用python开发。
CIA:美国中情局网站使用python开发的
NASA:美国航天局(NASA)大量使用python进行数据分析和运算。
YouTube:世界上最大的视屏网站
Dropbox:美国最大的在线存储网站,全部使用Python实现,每天处理量在10亿个文件的上传和下载。
Instagram:美国最大的图片分享网社交网站,每天超过3千万张照片被分享,全部使用Python开发。
Facebook:最大的基础库均通过python实现
Redhat:世界上最流行的linux发行版中的yum包管理工具就是用python开发的。
豆瓣:公司几乎所有的业务均是通过python开发
知乎:国内最大的问答社区,通过python开发(国外Quora)
除了以上之外,还有搜狐、金山、腾讯、盛大、易网、百度、阿里、淘宝、土豆、新浪、果壳等公司都在使用python完成各种各样的任务。
1.5 Python 特点
1.易于学习:**Python有相对较少的关键字,结构简单,和一个明确定义的语法,学习起来更加简单。
2.易于阅读:**Python代码定义的更清晰。
3.易于维护:**Python的成功在于它的源代码是相当容易维护的。
4.一个广泛的标准库:**Python的最大的优势之一是丰富的库,跨平台的,在UNIX,Windows和Macintosh兼容很好。
5.互动模式:**互动模式的支持,您可以从终端输入执行代码并获得结果的语言,互动的测试和调试代码片断。
6.可移植:**基于其开放源代码的特性,Python已经被移植(也就是使其工作)到许多平台。
7.可扩展:**如果你需要一段运行很快的关键代码,或者是想要编写一些不愿开放的算法,你可以使用C或C++完成那部分程序,然后从你的Python程序中调用。
8.数据库:**Python提供所有主要的商业数据库的接口。
9.GUI编程:**Python支持GUI可以创建和移植到许多系统调用。
10.可嵌入:** 你可以将Python嵌入到C/C++程序,让你的程序的用户获得"脚本化"的能力。
1.6 学习python能干什么?
(1)web开发 Django/pyramid/Toprnado/Bottle/Flask/WebPy
(2)网络编程 Twisted/Requests/Scrapy/Paramiko
(3)科学运算 SciPy/Pandas/Ipython
(4)GUI的图形开发 wxPython/PyQT/Kivy
(5)自动化运维 OpenStack/Saltstack/Ansible/腾讯蓝鲸
1.7 python与运维自动化
运维会开发以后:
随着计算机应用领域的规模的增大,运维自动化已经不是一个新名词了、新技术了。自动化运维无非就是对传统运维进行改造和升级罢了,由于近几年的互联网和PC端的飞速发展,敏捷开发带来的业务频繁更新、上线、业务访问量的突发剧增对系统承载能力的巨大考验等,这些都给运维带来了极大的挑战,运维人员必须不断思考如何满足一下问题?
如何高效的适应业务的频繁更新,变更,上线,扩展?
如何在最低成本的前提下实现业务并发运算能力的可伸缩式扩展?
如何实现运维人员从被动处理故障到故障防御和故障高度自愈的转换?
如果通过不断优化运维流程、自动化工具来降低运维成本、人工参与度,最终实现无人运维?
运维人员如何在这场浪潮中生存下来?《普通运维人员就是秋后的蚂蚱》https://www.jianshu.com/p/b381d1b6b75d
运维会了开发能干什么?
(1)开发各种自动化工具,制定开发各种开源软件。
(2)帮助评估和优化业务技术架构
(3)开发公司的内部办公系统,CRM,网站等
(4)全栈工程师
2.Python解释器
当我们编写Python代码时,我们得到的是一个包含python代码的以.py为扩展名的文本文件。要运行代码,就需要Python解释器去执行.py文件。
由于整个python语言从规范到解释器都是开源的,所以理论上,只要水平高,谁都可以开发解释器。
2.1 Cpython
当我们存Python官网上下载并安装好Python2.7后,我们就获得了官方版的解释器:Cpython。这个解释器使用C语言写的。在命令行下运行Python就是启动了Cpython解释器。
2.2 Pypy
Pypy是另一个Python解释器,他的目标是执行速度。Pypy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著的python代码的执行效率
绝大多数Python代码都可以在Pypy下运行,但是Pypy和Cpython有一些是不同的,这就导致相同的Python代码 在两种和解释器下执行可能会有不同的结果。
2.3 shedskin
采用了一种新的办法,即“翻译”。它把python代码翻译成C++,然后再编译成pyd(windows下),so(*nix下)模块。这样在其它python代码中,可以简单的import 编译好的模块,非常高效、方便。
2.4 Psyco
是严格地在 Python 运行时进行操作的。也就是说,Python 源代码是通过 python 命令编译成字节码的,所用的方式和以前完全相同(除了为调用 Psyco 而添加的几个 import 语句和函数调用)。但是当 Python 解释器运行应用程序时,Psyco 会不时地检查,看是否能用一些专门的机器代码去替换常规的 Python 字节码操作。这种专门的编译和 Java 即时编译器所进行的操作非常类似(一般地说,至少是这样),并且是特定于体系结构的。到现在为止,Psyco 只可用于 i386 CPU 体系结构。Psyco 的妙处在于可以使用您一直在编写的 Python 代码(完全一样!),却可以让它运行得更快。
3 pytho开发环境搭建
Python最新源码,二进制文档,新闻资讯等可以在Python的官网查看到:
Python官网:https://www.python.org/
你可以在以下链接中下载 Python 的文档,你可以下载 HTML、PDF 和 PostScript 等格式的文档。
Python文档下载地址:https://www.python.org/doc/
3.1 Windows下开发环境搭建
打开 WEB 浏览器访问https://www.python.org/downloads/windows/ 下载对应的软件包
两种选择,第一种系统选择;第二种自动故意安装,注意“选择环境变量,就后续不用添加“
我们选择自定义安装:
全部选择
安装到所有用户,并修改安装目录
正在安装
3.2 linux下开发环境搭建
python的不同版本各有差异,尤其是在2版本和3版本上变化巨大,不过在2版本即将退场。但是同一个大版本同版本在功能的实现方式上略有差异,这需要我们安装不同的版本来执行开发程序,现在我们来实现在linux上安装多个python版本。
(1)上传把并解压对应版本安装包
[root@bogon ~]# tar xf Python-3.7.3.tar.xz
(2)安装python3
[root@bogon Python-3.7.3]# yum install gcc gcc-c++ make zlib* -y
[root@bogon Python-3.7.3]# yum install libffi-devel -y
[root@bogon Python-3.7.3]# ./configure --prefix=/usr/local/python3
[root@bogon Python-3.7.3]# make
[root@bogon Python-3.7.3]# make install
(3) 配置执行文件路径
[root@bogon Python-3.7.3]# cd /usr/bin
[root@bogon bin]# mv /usr/bin/python /usr/bin/python2
[root@bogon bin]# ln -fs /usr/local/python3/bin/python3 /usr/bin/python3
(4) 安装完成后测试python3和python2能不能分别调用
(5)修改yum配置
[root@localhost ~]# vim /usr/bin/yum
[root@localhost ~]# vim /usr/libexec/urlgrabber-ext-down
3.3 集成开发环境 PyCharm
3.3.1 windows下安装
PyCharm 是由 JetBrains 打造的一款 Python IDE,支持 macOS、 Windows、 Linux 系统。
PyCharm 功能 : 调试、语法高亮、Project管理、代码跳转、智能提示、自动完成、单元测试、版本控制……
PyCharm 下载地址 : https://www.jetbrains.com/pycharm/download/
PyCharm 安装地址:http://www.runoob.com/w3cnote/pycharm-windows-install.html
安装
安装好之后,打开程序并配置完成
3.3.2 linux下安装
下载地址:https://www.jetbrains.com/pycharm/download/other.html
[root@localhost ~]# wget https://download.jetbrains.com/python/pycharm-professional-2018.3.7.tar.gz?_ga=2.211598423.353379605.1584669292-1103173413.1584669292
[root@localhost ~]# tar xvf 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/bin
[root@localhost bin]# ./pycharm.sh
[root@localhost bin]# ln -s /usr/local/src/pycharm-2018.3.7/bin/pycharm.sh /usr/sbin/pycharm
3.4 python 开发虚拟环境搭建
3.4.1 什么是python虚拟环境?
通俗的来讲,虚拟环境就是从电脑独立开辟出来的环境,相当于一个副本或备份,在这个环境你可以安装私有包,而且不会影响系统中安装的全局Python解释器。
3.4.2 为什么要用虚拟环境?
在实际项目开发中,我们通常会根据自己的需求去下载各种相应的框架库,如Scrapy、Beautiful Soup等,但是可能每个项目使用的框架库并不一样,或使用框架的版本不一样,这样需要我们根据需求不断的更新或卸载相应的库。直接怼我们的Python环境操作会让我们的开发环境和项目造成很多不必要的麻烦,管理也相当混乱。如以下场景:
场景1:项目A需要某个框架1.0版本,项目B需要这个库的2.0版本。如果没有安装虚拟环境,那么当你使用这两个项目时,你就需要来回的卸载安装了,这样很容易就给你的项目带来莫名的错误;
场景2:公司之前的项目需要python2.7环境下运行,而你接手的项目需要在python3环境中运行,如果不使用虚拟环境,这这两个项目可能无法同时使用,使用python3则公司之前的项目可能无法运行,反正则新项目运行有麻烦。而如果虚拟环境可以分别为这两个项目配置不同的运行环境,这样两个项目就可以同时运行。
3.4.3 安装虚拟环境
windows上:
pip install virtualenv
注意:如果下载过慢可在用国内源下载:
pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple virtualenv
linux上:
[root@localhost etc]# yum install python-virtualenv
同样,安装太慢可配置国内源安装:
[root@localhost ~]# yum install python-pip
[root@localhost ~]# pip install --upgrade pip
[root@localhost etc]# pip install -i http://pypi.douban.com/simple/ --trusted-host=pypi.douban.com/simple virtualenv
注意:若没有pip命令,则先安装epel源,再yum install python-pip。
3.4.4 新建虚拟环境
virtualenv scrapytest 创建名为 scrapytest 的虚拟环境
virtualenv -p C:\...(python安装目录) \python.ext scrapytest
[root@localhost ~]# virtualenv py2
[root@localhost bin]# virtualenv -p /usr/local/bin/python3 py3
3.4.5 运行虚拟环境
在windows下:
cd \scrapytest\Scripts\
source activate.bat
activate.bat
在linux下:
[root@localhost bin]# source activate
(py2) [root@localhost bin]# python
3.4.6 退出虚拟环境
windows下:
deactivate.bat
linux下:
(py2) [root@localhost bin]# deactivate
3.4.7 虚拟环境管理工具
#安装工具包
[root@localhost ~]# pip install -i https://pypi.douban.com/simple/ virtualenvwrapper
#查找文件
[root@localhost ~]# find / -name virtualenvwrapper.sh
/usr/bin/virtualenvwrapper.sh
#编辑环境变量
[root@localhost ~]# vim .bashrc
#重启服务
[root@localhost ~]#reboot
#测试
[root@localhost ~]# mkvirtualenv py2
(py2) [root@localhost ~]# deactivate
[root@localhost ~]# mkvirtualenv --python=/usr/local/python3/bin/python3 py3
4 Python基础语法
Python 语言与 Perl,C 和 Java 等语言有许多相似之处。但是,也存在一些差异。
4.1 第一个python程序
交互式编程
交互式编程不需要创建脚本文件,是通过Python解释器的交互模式进行编写代码。
linux上
Windows上
脚本式编程
通过脚本参数调运解释器开始执行脚本,知道脚本执行机完毕。当脚本执行完成后,解释器不在有效。
[root@bogon test]# cat hw.py
#/usr/bin/python3
#-*-coding:utf-8 -*-
print("您好,世界!!!")
[root@bogon test]#
[root@bogon test]# python3 hw.py
您好,世界!!!
4.2 标识符
在 Python 里,标识符由字母、数字、下划线组成。
在 Python 中,所有标识符可以包括英文、数字以及下划线(_),但不能以数字开头。
Python 中的标识符是区分大小写的。
以下划线开头的标识符是有特殊意义的。以单下划线开头 _foo 的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 而导入。
以双下划线开头的 __foo 代表类的私有成员,以双下划线开头和结尾的 foo 代表 Python 里特殊方法专用的标识,如 init() 代表类的构造函数。
Python 可以同一行显示多条语句,方法是用分号 ; 分开,如:
a = "anliu" ;print(a)
anliu
4.3 保留字符
下面的列表显示了在Python中的保留字。这些保留字不能用作常数或变数,或任何其他标识符名称。
所有 Python 的关键字只包含小写字母。
and | exec | not |
---|---|---|
assert | finally | or |
break | for | pass |
class | from | |
continue | global | raise |
def | if | return |
del | import | try |
elif | in | while |
else | is | with |
except | lambda | yield |
4.4 行与缩进
学习 Python 与其他语言最大的区别就是,Python 的代码块不使用大括号 {} 来控制类,函数以及其他逻辑判断。python 最具特色的就是用缩进来写模块。
缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行。
IndentationError: unindent does not match any outer indentation level**错误表明,你使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可。
如果是 **IndentationError: unexpected indent** 错误, 则 python 编译器是在告诉你"**Hi,老兄,你的文件里格式不对了,可能是tab和空格没对齐的问题**",所有 python 对格式要求非常严格。
建议你在每个缩进层次使用 单个制表符 或 两个空格 或 四个空格 , 切记不能混用
4.4 多行语句
Python语句中一般以新行作为语句的结束符。
但是我们可以使用斜杠( \)将一行的语句分为多行显示,如下所示:】
#!/bin/evn python
#-*- coding:utf-8 -*-
#Author:Anliu
item_one = 1
item_two = 2
item_three = 3
total = item_one + \
item_two + \
item_three
print(total)
语句中包含 [], {} 或 () 括号就不需要使用多行连接符。如下实例:
#!/bin/evn python
#-*- coding:utf-8 -*-
#Author:Anliu
dict = {"shangluo":"shanxi",
"yuncheng":"shanxi",
"zhumadian":"henan"
}
print(dict)
4.5 引号
Python 可以使用引号( ' )、双引号( " )、三引号( ''' 或 """ ) 来表示字符串,引号的开始与结束必须的相同类型的。
其中三引号可以由多行组成,编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释。
4.6 注释
python中单行注释采用 # 开头。注释可以在语句或表达式行末:
#!/bin/evn python
#-*- coding:utf-8 -*-
#Author:Anliu
# 第一个注释
print("Hello, Python!") # 第二个注释
python 中多行注释使用三个单引号(''')或三个双引号(""")。
#!/bin/evn python
#-*- coding:utf-8 -*-
#Author:Anliu
# 第一个注释
print("Hello, Python!") # 第二个注释
'''
这是什么鬼
这到底是什么鬼
'''
4.7 空行
函数之间或类的方法之间用空行分隔,表示一段新的代码的开始。类和函数入口之间也用一行空行分隔,以突出函数入口的开始。
空行与代码缩进不同,空行并不是Python语法的一部分。书写时不插入空行,Python解释器运行也不会出错。但是空行的作用在于分隔两段不同功能或含义的代码,便于日后代码的维护或重构。
记住:空行也是程序代码的一部分。
4.8 用户交互
下面的程序执行后就会等待用户输入,按回车键后就会退出:
#!/bin/evn python
#-*- coding:utf-8 -*-
#Author:Anliu
input("please input you name:\n" )
以上代码中 ,\n 实现换行。一旦用户按下 enter(回车) 键退出,其它键显示。
4.9 输出
print 默认输出是换行的,如果要实现不换行需要在变量末尾加上逗号 ,
#!/bin/evn python
#-*- coding:utf-8 -*-
#Author:Anliu
x = "a"
y = "b"
print(x)
print(y)
print("_____")
print("the number is a:",x,y)
4.10 模块
Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和Python语句。
模块让你能够有逻辑地组织你的 Python 代码段。
把相关的代码分配到一个模块里能让你的代码更好用,更易懂。
模块能定义函数,类和变量,模块里也能包含可执行的代码。
例子
下例是个简单的模块 support.py:
support.py 模块:
#Author:Anliu
def print_func( par ):
print("Hello:", par)
return
4.10.1 import 语句
模块的引入
模块定义好后,我们可以使用 import 语句来引入模块,语法如下:
import module1[, module2[,... moduleN]]
比如要引用模块 math,就可以在文件最开始的地方用 import math 来引入。在调用 math 模块中的函数时,必须这样引用:
模块名.函数名
当解释器遇到 import 语句,如果模块在当前的搜索路径就会被导入。
搜索路径是一个解释器会先进行搜索的所有目录的列表。如想要导入模块 support.py,需要把命令放在脚本的顶端:
#Author:Anliu
# 导入模块
import support
# 现在可以调用模块里包含的函数了
support.print_func("Runoob")
一个模块只会被导入一次,不管你执行了多少次import。这样可以防止导入模块被一遍又一遍地执行。
4.10.2 from…import 语句
Python 的 from 语句让你从模块中导入一个指定的部分到当前命名空间中。语法如下:
from modname import name1[, name2[, ... nameN]]
例如,要导入模块 fib 的 fibonacci 函数,使用如下语句:
from fib import fibonacci
这个声明不会把整个 fib 模块导入到当前的命名空间中,它只会将 fib 里的 fibonacci 单个引入到执行这个声明的模块的全局符号表。
4.10.3 from…import* 语句
把一个模块的所有内容全都导入到当前的命名空间也是可行的,只需使用如下声明:
from modname import *
这提供了一个简单的方法来导入一个模块中的所有项目。然而这种声明不该被过多地使用。
例如我们想一次性引入 math 模块中所有的东西,语句如下:
from math import *
4.10.4 搜索路径
当你导入一个模块,Python 解析器对模块位置的搜索顺序是:
-
1、当前目录
-
2、如果不在当前目录,Python 则搜索在 shell 变量 PYTHONPATH 下的每个目录。
-
3、如果都找不到,Python会察看默认路径。UNIX下,默认路径一般为/usr/local/lib/python/。
模块搜索路径存储在 system 模块的 sys.path 变量中。变量里包含当前目录,PYTHONPATH和由安装过程决定的默认目录。
PYTHONPATH 变量
作为环境变量,PYTHONPATH 由装在一个列表里的许多目录组成。PYTHONPATH 的语法和 shell 变量 PATH 的一样。
在 Windows 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=c:\python27\lib;
在 UNIX 系统,典型的 PYTHONPATH 如下:
set PYTHONPATH=/usr/local/lib/python
4.10.5 模块例举
Python的强大之处就是在于他有非常丰富和强大的标准库和第三方库,几乎你想实现的任何功能都有相应的Python库支持。
模块加载时,回根据环境路径去查找模块。
默认的第三方库在
E:\Python3\Lib\site-packages
现在简单介绍以下两个模块:
#Author:Anliu
import sys
print(sys.argv)
os.system不保存打印结果
#Author:Anliu
import os
cmd_res = os.system("dir")
print("----->",cmd_res)
os.popen将打印结果保存
#Author:Anliu
import os
#cmd_res = os.system("dir")
#print("----->",cmd_res)
cmd_res = os.popen("dir").read()
print("------->",cmd_res)
模块的导入,首先当前目录下查找文件,查找不到再到系统定义的路径下去查找.
OS模块可以再我们的标准库中找到,而sys模块是在标准库中找不到的,因为python中sys模块是写到python解释器里面的。所以我们说模块不仅仅是用户定义或者标准库第三方库提供,python解释器本身也提供。
4.11 .pyc
pyc设什么东西?
我们知道python是一门解释性语言,但是在执行之后,会产生一个.pyc的文件,例如:
如果是解释性语言,那么生成的.pyc是干什么的呢?c应该是compiled的缩写才对。
4.11.1 解释型语言和编译型语言
计算机是不能够识别高级语言的,所以当我们运行一个高级语言编程的时候,就需要一个“翻译机”来从事把高级语言变成计算机能读懂的机器语言。这个过程分为两类:一种是编译,一种是解释。
编译型语言在程序执行之前,先会通过编译器对程序执行一个编译的过程,把程序转换为机器语言。运行时就不需要翻译,而直接执行就可以了。最典型的例子就是C语言。
解释型语言就是没有这个编译的过程,而是在程序运行的时候,通过编译器对程序做出解释,然后直接运行,最典型的例子就是ruby。
由此可知,编译型语言在程序执行之前就已经对程序做出了翻译,所以在运行时就少掉了“翻译”的过程,所以效率比较高。但是我们不能一概而论,一些解释型语言也可以通过解释器的优化来在对程序做出翻译时对整个程序做出优化,从而在效率上超过编译型语言。
此外,随着Java基于虚拟机语言的兴起,我们又不能把语言纯粹的分为解释型和编译型两种.
用JAVA举个例子,Java首先是通过编译器编译成字节码文件,然后在运行时通过解释器给解释成机器文件,所以Java是一个先编译后解释的语言。
4.11.2 Python到底是什么?
其实Python和Java/C#一样,也是一种基于虚拟机的语言,我们先来从表面上简单的解释一下python程序的运行过程:
当我们在命令行中输入“Python hello.py”的时候,其实是激活了Python的解释器,告诉解释器,你要开始工作了。
可以在解释之前,其实执行的第一项工作和Java一样,是编译。
Java hello.java
java hello.class
只是我们在使用Eclipse之类的IDE时,将这两部给融合成一步了而已。其实,Python也一样当我们执行Python hello.py时,他也一样执行了这么一个过程,所以我们应该这样来描述Python: Python是一门先编译后解释的语言。
4.11.3 简述Python的执行过程:
在说这个问题之前,我们来说两个概念,PyCodeObject和pyc文件。
我们在硬件上看到Pyc自然不必多说,而实际PyCodeObject则是Python编译器真正真正编译成的结果。
当Python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。
当Python程序第二次运行时,首先程序会在硬盘中寻找Pyc文件,如果找到,则直接载入,否则就重新上面的过程。
所以我们应该来定位PyCodeObject和pyc文件,我们说pyc文件就是PyCodeObject的一种持久化保存的方式。
------------恢复内容结束------------