Python之路【第一篇】:介绍、基本语法、流程控制

一、python 简介

python 特点

Python是一种计算机程序设计语言。你可能已经听说过很多种流行的编程语言,比如非常难学的C语言,非常流行的Java语言,适合初学者的Basic语言,适合网页编程的JavaScript语言等等。

那Python是一种什么语言?

首先,我们普及一下编程语言的基础知识。用任何编程语言来开发程序,都是为了让计算机干活,比如下载一个MP3,编写一个文档等等,而计算机干活的CPU只认识机器指令,所以,尽管不同的编程语言差异极大,最后都得“翻译”成CPU可以执行的机器指令。而不同的编程语言,干同一个活,编写的代码量,差距也很大。

比如,完成同一个任务,C语言要写1000行代码,Java只需要写100行,而Python可能只要20行。

所以Python是一种相当高级的语言。

你也许会问,代码少还不好?代码少的代价是运行速度慢,C程序运行1秒钟,Java程序可能需要2秒,而Python程序可能就需要10秒。

那是不是越低级的程序越难学,越高级的程序越简单?表面上来说,是的,但是,在非常高的抽象计算中,高级的Python程序设计也是非常难学的,所以,高级程序语言不等于简单。

但是,对于初学者和完成普通任务,Python语言是非常简单易用的。连Google都在大规模使用Python,你就不用担心学了会没用。

用Python可以做什么?可以做日常任务,比如自动备份你的MP3;可以做网站,很多著名的网站包括YouTube就是Python写的;可以做网络游戏的后台,很多在线游戏的后台都是Python开发的。总之就是能干很多很多事啦。

Python当然也有不能干的事情,比如写操作系统,这个只能用C语言写;写手机应用,只能用Swift/Objective-C(针对iPhone)和Java(针对Android);写3D游戏,最好用C或C++。

python前世今生

Python是著名的“龟叔”Guido van Rossum在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言。

龟叔给Python的定位是“优雅”、“明确”、“简单”,所以Python程序看上去总是简单易懂,初学者学Python,不但入门容易,而且将来深入下去,可以编写那些非常非常复杂的程序。

总的来说,Python的哲学就是简单优雅,尽量写容易看明白的代码,尽量写少的代码。如果一个资深程序员向你炫耀他写的晦涩难懂、动不动就几万行的代码,你可以尽情地嘲笑他。

                                    编程语言排行榜TOP20榜单-2017年1月

     

  • 总的来说,这几种编程语言各有千秋。C语言是可以用来编写操作系统的贴近硬件的语言,所以,C语言适合开发那些追求运行速度、充分发挥硬件性能的程序。而Python是用来编写应用程序的高级编程语言。
  • 当你用一种语言开始作真正的软件开发时,你除了编写代码外,还需要很多基本的已经写好的现成的东西,来帮助你加快开发进度。比如说,要编写一个电子邮件客户端,如果先从最底层开始编写网络协议相关的代码,那估计一年半载也开发不出来。高级编程语言通常都会提供一个比较完善的基础代码库,让你能直接调用,比如,针对电子邮件协议的SMTP库,针对桌面环境的GUI库,在这些已有的代码库的基础上开发,一个电子邮件客户端几天就能开发出来。
  • Python就为我们提供了非常完善的基础代码库,覆盖了网络、文件、GUI、数据库、文本等大量内容,被形象地称作“内置电池(batteries included)”。用Python开发,许多功能不必从零编写,直接使用现成的即可。
  • 除了内置的库外,Python还有大量的第三方库,也就是别人开发的,供你直接使用的东西。当然,如果你开发的代码通过很好的封装,也可以作为第三方库给别人使用。
  • Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域,首选是网络应用,包括网站、后台服务,数据分析等等;
  • 目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等,甚至NASA(美国航空航天局)都大量地使用Python。互联网公司广泛使用Python来做的事一般有:自动化运维自动化测试大数据分析、爬虫、Web 等。

:上述重点字体表示该公司主要使用Python语言开发

python应用领域

  • 云计算: 云计算最火的语言, 典型应用OpenStack
  • WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django
  • 科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas
  • 系统运维: 运维人员必备语言
  • 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测
  • 图形GUI: PyQT, WxPython,TkInter

python与其他高级语言对比

  • C 和 Python、Java、C#等

       C语言: 代码编译得到 机器码 ,机器码在处理器上直接执行,每一条指令控制CPU工作

     其他语言: 代码编译得到 字节码 ,虚拟机执行字节码并转换成机器码再后在处理器上执行

  • Python 和 C  Python这门语言是由C开发而来

    对于使用:Python的类库齐全并且使用简洁,如果要实现同样的功能,Python 10行代码可以解决,C可能就需要100行甚至更多.
    对于速度:Python的运行速度相较与C,绝逼是慢了

  • Python 和 Java、C#等

    对于使用:Linux原装Python,其他语言没有;以上几门语言都有非常丰富的类库支持
    对于速度:Python在速度上可能稍显逊色

  所以,Python和其他语言没有什么本质区别,其他区别在于:擅长某领域、人才丰富、先入为主。

python 优缺点

优点:

  • 作为初学python的科班出身的小白,python非常简单,非常适合人类阅读。阅读一个良好的Python程序就感觉像是在读英语一样,尽管这个英语的要求非常严格!Python的这种伪代码本质是它最大的优点之一。它使你能够专注于解决问题而不是去搞明白语言本身。
  • 易学。python虽然是用c语言写的,但是它摈弃了c中非常复杂的指针,简化了python的语法。
  • 可移植性————由于它的开源本质。
  • Python既支持面向过程的函数编程也支持面向对象的抽象编程。在面向过程的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在面向对象的语言中,程序是由数据和功能组合而成的对象构建起来的。与其他主要的语言如C++和Java相比,Python以一种非常强大又简单的方式实现面向对象编程。
  • 可扩展性和可嵌入性。如果你需要你的一段关键代码运行得更快或者希望某些算法不公开,你可以把你的部分程序用C或C++编写,然后在你的Python程序中使用它们。你可以把Python嵌入你的C/C++程序,从而向你的程序用户提供脚本功能。
  • 丰富的库。Python标准库确实很庞大。
  • 规范的代码。Python采用强制缩进的方式使得代码具有极佳的可读性。

不足之处(算不上缺点):

  • 运行速度,有速度要求的话,用C++改写关键部分吧。不过对于用户而言,机器上运行速度是可以忽略的。因为用户根本感觉不出来这种速度的差异。
  • 既是优点也是缺点,代码不能加密,因为PYTHON是解释性语言,它的源码都是以名文形式存放的,不过我不认为这算是一个缺点,如果你的项目要求源代码必须是加密的,那你一开始就不应该用Python来去实现。
  • 线程不能利用多CPU问题,这是Python被人诟病最多的一个缺点,GIL即全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU平台上,由于GIL的存在,所以禁止多线程的并行执行。关于这个问题的折衷解决方法,我们在以后线程和进程章节里再进行详细探讨。

Python解释器

  • Cpython
    当我们从Python官方网站下载并安装好Python 3.5后,我们就直接获得了一个官方版本的解释器:CPython。这个解释器是用C语言开发的,所以叫CPython。在命令行下运行python就是启动CPython解释器。CPython是使用最广的Python解释器。
  • Ipython

    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。

    CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。

  • Jyhton
        Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。
  • IronPython
       IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。
  • PyPy(特殊)
        PyPy是另一个Python解释器,它的目标是执行速度。PyPy采用JIT技术,对Python代码进行动态编译(注意不是解释),所以可以显著提高Python代码的执行速度。

      绝大部分Python代码都可以在PyPy下运行,但是PyPy和CPython有一些是不同的,这就导致相同的Python代码在两种解释器下执行可能会有不同的结果。如果你的代码要放到PyPy下执行,就需要了解PyPy和CPython的不同点

小结

  Python的解释器很多,但使用最广泛的还是CPython。如果要和Java或.Net平台交互,最好的办法不是用Jython或IronPython,而是通过网络调用来交互,确保各程序之间的独立性。

二、python 安装

  • 因为Python是跨平台的,它可以运行在Windows、Mac和各种Linux/Unix系统上。在Windows上写Python程序,放到Linux上也是能够运行的。
  • 目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于3.x版越来越普及,建议电脑上安装的Python版本是最新的3.5.x或升级自己本地的python版本为3.5.x版本。

 windows:

1、下载安装包
    https://www.python.org/downloads/
2、安装
    默认安装路径:C:python35
3、配置环境变量
    【右键计算机】--》【属性】--》【高级系统设置】--》【高级】--》【环境变量】--》【在第二个内容框中找到 变量名为Path 的一行,双击】 --> 【Python安装目录追加到变值值中,用 ; 分割】
    如:原来的值;C:python35,切记前面有分号

首先,根据你的Windows版本(64位还是32位)从Python的官方网站下载Python 3.5对应的64位安装程序32位安装程序(网速慢的同学请移步国内镜像),然后,运行下载的EXE安装包:

特别要注意勾上Add Python 3.5 to PATH,然后点“Install Now”即可完成安装。

验证:

安装成功后,打开命令提示符窗口,敲入python后,会出现两种情况:

情况一:

看到上面的画面,就说明Python安装成功!

你看到提示符>>>就表示我们已经在Python交互式环境中了,可以输入任何Python代码,回车后会立刻得到执行结果。现在,输入exit()并回车,就可以退出Python交互式环境(直接关掉命令行窗口也可以)。

情况二: 得到一个错误

'python' 不是内部或外部命令,也不是可运行的程序或批处理文件。

这是因为Windows会根据一个Path的环境变量设定的路径去查找python.exe,如果没找到,就会报错。如果在安装时漏掉了勾选Add Python 3.5 to PATH,那就要手动把python.exe所在的路径添加到Path中。

如果你不知道怎么修改环境变量,建议把Python安装程序重新运行一遍,务必记得勾上Add Python 3.5 to PATH

Linux:

无需安装,原装Python环境,默认2.6版本
PS:如果自带2.6版本,请更新至3.5版本

 升级python2.x至python 3.5.x

 Windows升级:

卸载重装即可

Linux升级:

Linux的yum依赖自带Python,为防止错误,此处更新其实就是再安装一个Python,建议在python官网下载源码包进行编译安装。

查看默认Python版本
[root@shuke data]# python -V

升级步骤:

1、安装gcc,用于编译Python源码
    yum install gcc
2、下载源码包,https://www.python.org/ftp/python/
3、解压并进入源码文件
4、编译安装
    ./configure
    make all
    make install
5、查看版本
    /usr/local/bin/python3.5 -V
6、修改默认Python版本
    mv /usr/bin/python /usr/bin/python2.6
    ln -s /usr/local/bin/python3.5 /usr/bin/python
7、防止yum执行异常,修改yum使用的Python版本
    vi /usr/bin/yum
    将头部 #!/usr/bin/python 修改为 #!/usr/bin/python2.6

8、升级完成后,验证版本

[root@shuke day01]# python -V
Python 3.5.2                      # 升级后的python版本为3.5.2

 pycharm的使用

  1、使用:

    a、创建项目:file ---> new project

    b、新建文件夹:右击要创建文件夹的项目或上级目录 ----〉new ---〉directory 

    c、新建文件:右击要创建文件夹的项目或上级目录 ----〉new ---〉file

    d、运行文件:要执行的.py文件内容---〉右击---〉run xx.py

   2、文件编码:

    file ---->default settings --->editor --->file encodings

   3、程序文件模版:

    file ---->default settings --->editor --->file and code templates 

   4、改变字体大小:

    file ----〉settings ----〉editor ---> General ---〉mouse

  ps.pycharm的更多应用请访问:

    http://www.cnblogs.com/wangshuyang/articles/5846563.html

三、python入门

脚本式编程

在linux 下创建一个文件名称为hello.py,并输入

print("Hello World!")

然后终端执行命令:python hello.py 

[root@shuke day01]# cat hello.py 
 print("Hello World!")
[root@shuke day01]# python hello.py 
 Hello World!

执行 python hello.py 时,明确的指出 hello.py 脚本由 python 解释器来执行。

  • 指定解释器

在Linux/Unix系统中,你可以在脚本顶部添加以下命令让Python脚本可以像SHELL脚本一样可直接执行: 

#!/usr/bin/env python			# 生命头部,指定解释器
#_*_coding:utf-8_*_			# 指定字符编码,python3.x默认为utf-8

print("Hello World!")

执行前将py脚本文件赋予执行权限:

[root@shuke day01]# chmod +x hello.py         # 添加执行权限
[root@shuke day01]# ll hello.py 
-rwxr-xr-x 1 root root 45 Apr 27 16:49 hello.py
[root@shuke day01]# ./hello.py                 # 直接运行脚本文件
Hello World!

交互式编程

我们可以在命令提示符中输入"Python"命令来启动Python解释器:

[root@shuke day01]# python                                                   # 进入交互模式
Python 3.5.2 (default, Apr 27 2017, 11:27:01)                   # python版本信息
[GCC 4.4.7 20120313 (Red Hat 4.4.7-17)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> print ("Hello, Python!");          # 输入
Hello, Python!                   # 输出
>>> flag = True
>>> if flag :                               # 当键入一个多行结构时,续行是必须的。我们可以看下如下 if 语句:
...     print("flag 条件为 True!")
...                         # 需再次输入回车
flag 条件为 True!                # 输出
>>>

 

四、字符编码

python解释器在加载 .py 文件中的代码时,会对内容进行编码(在python2.x版本中默认为ascill,在python3.x版本中默认字符编码为:unicode)

ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。

------关于中文------

为了处理汉字,程序员设计了用于简体中文的GB2312和用于繁体中文的big5。

GB2312(1980年)一共收录了7445个字符,包括6763个汉字和682个其它符号。汉字区的内码范围高字节从B0-F7,低字节从A1-FE,占用的码位是72*94=6768。其中有5个空位是D7FA-D7FE。

GB2312 支持的汉字太少。1995年的汉字扩展规范GBK1.0收录了21886个符号,它分为汉字区和图形符号区。汉字区包括21003个字符。2000年的 GB18030是取代GBK1.0的正式国家标准。该标准收录了27484个汉字,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不作要求。所以手机、MP3一般只支持GB2312。

从ASCII、GB2312、GBK 到GB18030,这些编码方法是向下兼容的,即同一个字符在这些方案中总是有相同的编码,后面的标准支持更多的字符。在这些编码中,英文和中文可以统一地处理。区分中文编码的方法是高字节的最高位不为0。按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集 (DBCS)。

有的中文Windows的缺省内码还是GBK,可以通过GB18030升级包升级到GB18030。不过GB18030相对GBK增加的字符,普通人是很难用到的,通常我们还是用GBK指代中文Windows内码。

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定所有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536,
注:此处说的的是最少2个字节,可能更多

UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...

所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(在python2.x中默认ascill),在2.x版本运行内容包含中文的脚本时,会报错:

报错:ascii码无法表示中文

#!/usr/bin/env python
print "你好,世界"           # 显示为乱码

改正:应该显示的告诉python解释器,用什么编码来执行源代码,即:

#!/usr/bin/env python
# -*- coding: utf-8 -*-     # 指定使用utf-8编码进行编码
  
print "你好,世界"         # 显示正常

在python3.x版本中由于默认编码是unicode,由于unicode编码兼容中文,所以可以正常显示中文!

五、注释

确保对模块, 函数, 方法和行内注释使用正确的风格

Python中的注释有单行注释和多行注释:

Python中单行注释以#开头,例如:

print("Hello, World!")      # 这是一个注释

多行注释用三个单引号(''')或者三个双引号(""")将注释括起来,例如:

1、单引号(''')

#!/usr/bin/python3 
'''
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
这是多行注释,用三个单引号
'''
print("Hello, World!") 

2、双引号(''')

#!/usr/bin/python3 
"""
这是多行注释,用三个单引号
这是多行注释,用三个单引号 
这是多行注释,用三个单引号
"""
print("Hello, World!") 

  

六、pyc文件是什么鬼?

执行Python代码时,如果导入了其他的 .py 文件,那么,执行过程中会自动生成一个与其同名的 .pyc 文件,该文件就是Python解释器编译之后产生的字节码。

PS: 代码经过编译可以产生字节码;字节码通过反编译也可以得到代码。

简述Python的运行过程

在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件。

我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器真正编译成的结果。我们先简单知道就可以了,继续向下看。

当python程序运行时,编译的结果则是保存在位于内存中的PyCodeObject中,当Python程序运行结束时,Python解释器则将PyCodeObject写回到pyc文件中。

当python程序第二次运行时,首先程序会在硬盘中寻找pyc文件,如果找到,则直接载入,否则就重复上面的过程。

所以我们应该这样来定位PyCodeObject和pyc文件,我们说pyc文件其实是PyCodeObject的一种持久化保存方式。

七、变量

  • "变量的声明":  (Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。)
  • 在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
  • 等号(=)用来给变量赋值。

    等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。

#!/usr/bin/env python
#_*_coding:utf-8_*_ name = "shuke"

上述代码声明了一个变量,变量名为: name,变量name的值为:"shukei" 

变量定义的规则:

  • 变量名只能是 字母、数字或下划线的任意组合
  • 变量名的第一个字符不能是数字
  • 以下关键字不能声明为变量名
    ['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']

多个变量赋值

a = b = c = 1                      # 该实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。
a, b, c = 1, 2, "runoob"               # 该实例,两个整型对象 1 和 2 的分配给变量 a 和 b,字符串对象 "runoob" 分配给变量 c。

 

八、用户输入

#!/usr/bin/env python
#_*_coding:utf-8_*_
 
 
#name = raw_input("What is your name?")       #only on python 2.x
name = input("What is your name?")
print("Hello " + name )

输入密码时,如果想要不进行明文显示,需要利用getpass 模块中的 getpass方法,即:

注: getpass模块需要在终端测试效果,在pycharm IDE中不能测试效果

#!/usr/bin/env python
# -*- coding: utf-8 -*-
  
import getpass

pwd = getpass.getpass("请输入密码:")     # 将用户输入的内容赋值给 pwd 变量
print(pwd)                       # 打印输入的内容 

九、数据类型

Python3 中有六个标准的数据类型:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Sets(集合)
  • Dictionary(字典)

  1.  Number(数字)

  2 是一个整数的例子。
  长整数 不过是大一些的整数。
  3.23和52.3E-4是浮点数的例子。E标记表示10的幂。在这里,52.3E-4表示52.3 * 10-4。
  (-5+4j)和(2.3-4.6j)是复数的例子

  int(整型)

    在32位机器上,整数的位数为32位,取值范围为-2**31~2**31-1,即-2147483648~2147483647
    在64位系统上,整数的位数为64位,取值范围为-2**63~2**63-1,即-9223372036854775808~9223372036854775807
  long(长整型)
    跟C语言不同,Python的长整数没有指定位宽,即:Python没有限制长整数数值的大小,但实际上由于机器内存有限,我们使用的长整数数值不可能无限大。
    注意,自从Python2.2起,如果整数发生溢出,Python会自动将整数数据转换为长整数,所以如今在长整数数据后面不加字母L也不会导致严重后果了。
  float(浮点型)
    浮点数用来处理实数,即带有小数的数字。类似于C语言中的double类型,占8个字节(64位),其中52位表示底,11位表示指数,剩下的一位表示符号。
  complex(复数)
    复数由实数部分和虚数部分组成,一般形式为x+yj,其中的x是复数的实数部分,y是复数的虚数部分,这里的x和y都是实数。
注: Python中存在小数字池:-5 ~ 257
内置的 type() 函数可以用来查询变量所指的对象类型,type函数同样适用于元组、列表、字典、集合。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

此外还可以用 isinstance 来判断:

>>> a = 111
>>> isinstance(a, int)
True

isinstance 和 type 的区别在于:

class A:
    pass

class B(A):
    pass

isinstance(A(), A)  # returns True
type(A()) == A      # returns True
isinstance(B(), A)    # returns True
type(B()) == A        # returns False

区别就是:

  • type()不会认为子类是一种父类类型。
  • isinstance()会认为子类是一种父类类型。

注:在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。到 Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。

您也可以使用del语句删除一些对象引用。

del语句的语法是:

del var1[,var2[,var3[....,varN]]]]

您可以通过使用del语句删除单个或多个对象。例如:

del var
del var_a, var_b

数值运算

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余 
2
>>> 2 ** 5 # 乘方
32

注意

  • 1、Python可以同时为多个变量赋值,如a, b = 1, 2。
  • 2、一个变量可以通过赋值指向不同类型的对象。
  • 3、数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
  • 4、在混合计算时,Python会把整型转换成为浮点数。

2.  bool (布尔值)

  真或假
  1 或 0

3.  string (字符串)

"hello world"
万恶的字符串拼接:
  python中的字符串在C语言中体现为是一个字符数组,每次创建字符串时候需要在内存中开辟一块连续的空,并且一旦需要修改字符串的话,就需要再次开辟空间,万恶的+号每出现一次就会在内从中重新开辟一块空间。
字符串格式化:
name = "shuke"
print "i am %s " % name
#输出: i am shuke
注: 字符串是 %s;整数 %d;浮点数%f
Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠()转义特殊字符。

与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。

注意

  • 1. 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
  • 2. 字符串可以用+运算符连接在一起,用*运算符重复。
  • 3. Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
  • 4. Python中的字符串不能改变。
基本操作:
  • 移除空白
  • 分割
  • 长度
  • 索引
  • 切片

4.  List(列表)

List(列表) 是 Python 中使用最频繁的数据类型。

列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。

列表是写在方括号([])之间、用逗号分隔开的元素列表。

和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。

创建列表:
name_list = ['alex', 'seven', 'eric']
或
name_list = list(['alex', 'seven', 'eric'])

List内置了有很多方法,例如append()、pop()等等,这在后面会讲到。

注意

  • 1、List写在方括号之间,元素用逗号隔开。
  • 2、和字符串一样,list可以被索引和切片。
  • 3、List可以使用+操作符进行拼接。
  • 4、List中的元素是可以改变的。

基本操作:

  • 索引
  • 切片
  • 追加
  • 删除
  • 长度
  • 切片
  • 循环
  • 包含

5. Tuple(元组)(不可变的列表)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。

创建元组:

ages = (11, 22, 33, 44, 55)
或
ages = tuple((11, 22, 33, 44, 55))

string、list和tuple都属于sequence(序列)。

注意:

  • 1、与字符串一样,元组的元素不能修改。
  • 2、元组也可以被索引和切片,方法一样。
  • 3、注意构造包含0或1个元素的元组的特殊语法规则。
  • 4、元组也可以使用+操作符进行拼接。
基本操作:
  • 索引
  • 切片
  • 循环
  • 长度
  • 包含

6.  Dictionary(字典)(无序)

字典(dictionary)是Python中另一个非常有用的内置数据类型。

列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。

键(key)必须使用不可变类型。

在同一个字典中,键(key)必须是唯一的。

创建字典:

person = {"name": "mr.wu", 'age': 18}
或
person = dict({"name": "mr.wu", 'age': 18})

另外,字典类型也有一些内置的函数,例如clear()、keys()、values()等。

注意

  • 1、字典是一种映射类型,它的元素是键值对。
  • 2、字典的关键字必须为不可变类型,且不能重复。
  • 3、创建空字典使用{}。

基本操作:

  • 索引
  • 新增
  • 删除
  • 键、值、键值对
  • 循环
  • 长度

7.  set(集合)

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号 {} 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 {},因为 {}是用来创建一个空字典。

创建集合:

student = {'Tom', 'Jim', 'Mary', 'Tom', 'Jack', 'Rose'}
name = set()       #创建一个空集合

注意

  • 1、无序
  • 2、元素不重复
  • 3、关系测试
  • 4、天然去重

  基本操作:   

  • print(a - b)    # a和b的差集
  • print(a | b)    # a和b的并集
  • print(a & b)   # a和b的交集
  • print(a ^ b)    # a和b中不同时存在的元素

十、运算

  •  算数运算

  以下假设变量: a=10,b=20

  

  • 比较运算

  以下假设变量a为10,变量b为20:

  

  • 赋值运算

  以下假设变量a为10,变量b为20:

  

  • 逻辑运算

  

  • 成员运算

  

  • 身份运算

  

  • 位运算

  

  • 运算符优先级

  

  更多内容:http://www.runoob.com/python/python-operators.html

 十一、三元运算

 示例:

result = 值1 if 条件 else 值2            # 如果条件成立,那么将 “值1” 赋值给result变量,否则,将“值2”赋值给result变量

如果条件为真:result = 值1
如果条件为假:result = 值2

十二、流程控制 if...else...

Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。

可以通过下图来简单了解条件语句的执行过程:

Python程序语言指定任何非0和非空(null)值为true,0 或者 null为false。

Python 编程中 if 语句用于控制程序的执行,基本形式为:

if 判断条件:
    执行语句……
else:
    执行语句…

其中"判断条件"成立时(非零),则执行后面的语句,而执行内容可以多行,以缩进来区分表示同一范围。

else 为可选语句,当需要在条件不成立时执行内容则可以执行相关语句,具体例子如下:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 例1:if 基本用法

flag = False
name = 'luren'
if name == 'python':         # 判断变量否为'python'
    flag = True          # 条件成立时设置标志为真
    print 'welcome boss'    # 并输出欢迎信息
else:
    print name              # 条件不成立时输出变量名称

if 语句的判断条件可以用>(大于)、<(小于)、==(等于)、>=(大于等于)、<=(小于等于)来表示其关系。

当判断条件为多个值时,可以使用以下形式:

if 判断条件1:
    执行语句1……
elif 判断条件2:
    执行语句2……
elif 判断条件3:
    执行语句3……
else:
    执行语句4……
#!/usr/bin/python
# -*- coding: UTF-8 -*-
# 例2:elif用法

num = 5     
if num == 3:            # 判断num的值
    print 'boss'        
elif num == 2:
    print 'user'
elif num == 1:
    print 'worker'
elif num < 0:           # 值小于零时输出
    print 'error'
else:
    print 'roadman'     # 条件均不成立时输出

当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外 and 和 or 的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

简单的语句组

你也可以在同一行的位置上使用if条件判断语句,如下实例:

#!/usr/bin/python 
# -*- coding: UTF-8 -*-
 
var = 100 
if ( var  == 100 ) : print "变量 var 的值为100" 
print "Good bye!"

十二、循环

1. for循环

用户按照顺序循环可迭代对象中的内容:
li = [11,22,33,44]
for item in li:
    print item

2. enumrate

为可迭代的对象添加序号
sequence = [12, 34, 34, 23, 45, 76, 89]
for k,v in enumerate(sequence):
  print(k,v)

3. range和xrange

指定范围,生成指定的数字
print range(1, 10)
# 结果:[1, 2, 3, 4, 5, 6, 7, 8, 9]
print range(1, 10, 2)
# 结果:[1, 3, 5, 7, 9] 
print range(30, 0, -2)
# 结果:[30, 28, 26, 24, 22, 20, 18, 16, 14, 12, 10, 8, 6, 4, 2]

 4. 循环使用 else 语句

在 python 中,for … else 表示这样的意思,for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完(即 for 不是通过 break 跳出而中断的)的情况下执行,while … else 也是一样。

#!/usr/bin/python
# -*- coding: UTF-8 -*-
 
for num in range(10,20):  # 迭代 10 到 20 之间的数字
   for i in range(2,num): # 根据因子迭代
      if num%i == 0:      # 确定第一个因子
         j=num/i          # 计算第二个因子
         print '%d 等于 %d * %d' % (num,i,j)
         break            # 跳出当前循环
   else:                  # 循环的 else 部分
      print num, '是一个质数'

 使用场景:

  • 文件操作时当操作完成时输出提示
with open('a.txt','r',encoding='utf-8') as read_f,
        open('aa.txt','w',encoding='utf-8') as write_f:

    for line in read_f:
        write_f.write(line)
    else:
        print('write successfull')

  

while 循环

1. Gif 演示 Python while 语句执行过程

2.  无限循环

 有一种循环叫死循环,一经触发,就运行个天荒地老、海枯石烂。

count = 0
while True:
    print("你是风儿我是沙,缠缠绵绵到天涯...",count)
    count +=1

3.  循环使用 else 语句

在 python 中,while … else 在循环条件为 false 时执行 else 语句块:

#!/usr/bin/python

count = 0
while count < 5:
   print count, " is  less than 5"
   count = count + 1
else:
   print count, " is not less than 5"

4.  简单语句组

类似 if 语句的语法,如果你的 while 循环体中只有一条语句,你可以将该语句与while写在同一行中, 如下所示:

#!/usr/bin/python

flag = 1
while (flag): print 'Given flag is really true!'
print "Good bye!"

注意:1. 以上的无限循环你可以使用 CTRL+C 来中断循环。

   2. pass是空语句,是为了保持程序结构的完整性。

5. 循环控制

while 语句时还有另外两个重要的命令 continue,break 来跳过循环,continue 用于跳过该次循环,break 则是用于退出循环,此外"判断条件"还可以是个常值,表示循环必定成立,具体用法如下:

# continue 和 break 用法

i = 1
while i < 10:   
    i += 1
    if i%2 > 0:     # 非双数时跳过输出
        continue
    print i         # 输出双数2、4、6、8、10

i = 1
while 1:            # 循环条件为1必定成立
    print i         # 输出1~10
    i += 1
    if i > 10:     # 当i大于10时跳出循环
        break

参考资料: http://www.cnblogs.com/alex3714/articles/5465198.html

 
原文地址:https://www.cnblogs.com/aslongas/p/6773398.html