zoukankan      html  css  js  c++  java
  • Python学习笔记_01:基本概念介绍

    目录

    1.Python语言简介

    2.Python中常用数据结构

    2.1什么是列表?

    2.2什么是元组?

    2.3什么是字典?

    2.4索引及分片

    3.其它基本概念

    3.1数据类型和变量

    3.2生成器

    3.3迭代器

    3.4模块

     

     


    1.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 仍然占据着至关重要的作用,指导其进展。

     

    特点:

      Python是一种解释型的、面向对象的、带有动态语义的高级程序设计语言。

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

     

    功能:

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

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

     

    适合开发哪些类型应用呢?

      首选是网络应用,包括网站、后台服务等等;

      其次是许多日常需要的小工具,包括系统管理员需要的脚本任务等等;

      另外就是把其他语言开发的程序再包装起来,方便使用。

      许多大型网站就是用Python开发的,例如YouTube、Instagram,还有国内的豆瓣。很多大公司,包括Google、Yahoo等,甚至NASA(美国航空航天局)都大量地使用Python。

     

    缺点:

      第一个缺点就是运行速度慢,和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会一行一行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。

      第二个缺点就是代码不能加密。如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows上常见的xxx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。

     

     


    2.Python中常用数据结构

    2.1什么是列表?

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

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

     列表用[ ]标识。是python最通用的复合数据类型。看这段代码就明白。

     列表中的值得分割也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认0开始的,从右到左索引默认-1开始,下标可以为空表示取到头或尾。

     

      加号(+)是列表连接运算符,星号(*)是重复操作。如下实例:

     #!/usr/bin/python
     # -*- coding: UTF-8 -*-
    
     list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
     tinylist = [123, 'john']
    
     print list # 输出完整列表
     print list[0] # 输出列表的第一个元素
     print list[1:3] # 输出第二个至第三个的元素 
     print list[2:] # 输出从第三个开始至列表末尾的所有元素
     print tinylist * 2 # 输出列表两次
     print list + tinylist # 打印组合的列表

     

        以上实例输出结果:

     ['abcd', 786, 2.23, 'john', 70.2]
     abcd
     [786, 2.23]
     [2.23, 'john', 70.2]
     [123, 'john', 123, 'john']
     ['abcd', 786, 2.23, 'john', 70.2, 123, 'john']

     

     

    2.2什么是元组?

      元组是另一个数据类型,类似于List(列表)。

      元组用"()"标识。内部元素用逗号隔开。但是元素不能二次赋值,相当于只读列表。

     #!/usr/bin/python
     # -*- coding: UTF-8 -*-
    
     tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
     tinytuple = (123, 'john')
    
     print tuple # 输出完整元组
     print tuple[0] # 输出元组的第一个元素
     print tuple[1:3] # 输出第二个至第三个的元素 
     print tuple[2:] # 输出从第三个开始至列表末尾的所有元素
     print tinytuple * 2 # 输出元组两次
     print tuple + tinytuple # 打印组合的元组

     

       以上实例输出结果:

    ('abcd', 786, 2.23, 'john', 70.2)
     abcd
     (786, 2.23)
     (2.23, 'john', 70.2)
     (123, 'john', 123, 'john')
     ('abcd', 786, 2.23, 'john', 70.2, 123, 'john')

     

       以下是元组无效的,因为元组是不允许更新的。而列表是允许更新的:

    #!/usr/bin/python
     # -*- coding: UTF-8 -*-
    
     tuple = ( 'abcd', 786 , 2.23, 'john', 70.2 )
     list = [ 'abcd', 786 , 2.23, 'john', 70.2 ]
     tuple[2] = 1000 # 元组中是非法应用
     list[2] = 1000 # 列表中是合法应用

     

     

    2.3什么是字典?

      字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。

      两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

      字典用"{ }"标识。字典由索引(key)和它对应的值value组成。

     #!/usr/bin/python
     # -*- coding: UTF-8 -*-
    
     dict = {}
     dict['one'] = "This is one"
     dict[2] = "This is two"
    
     tinydict = {'name': 'john','code':6734, 'dept': 'sales'}
    
    
     print dict['one'] # 输出键为'one' 的值
     print dict[2] # 输出键为 2 的值
     print tinydict # 输出完整的字典
     print tinydict.keys() # 输出所有键
     print tinydict.values() # 输出所有值

     

    2.4索引及分片

    索引:列表或者元组中的所有元素都是有编号的——从0开始递增。这些元素可以通过编号分别访问,如下图所示:

    >>> greeting = ‘Hello’
    
    >>> greeting[0]
    
    ‘H’

     

      可以通过索引获取元素。所有列表或者元组可以通过这种方式进行索引。使用负数索引时,就是从列表最后一个元素开始计数,倒数第一为-1,倒数第二个为-2,依次按照负数大小从右往左绝对值大小递增编号。

     

    分片:与使用索引来访问单个元素类似,可以使用分片操作来访问一定范围内的元素。分片通过冒号隔开的两个索引来实现:

    >>> numbers = [1,2,3,4,5,6,7,8,9,10]
    
    >>> numbers[3:6]
    
    [4,5,6]
    
    >>> numbers[0:1]
    
    [1]

     

      简而言之,分片操作的实现需要提供两个索引作为边界,第1个索引的元素是包含在分片内的,而第2个则不办含在分片内。

     

     


    3.其它基本概念

    3.1数据类型和变量

    数据类型:

      在内存中存储的数据可以有多种类型。

      例如,person.s年龄作为一个数值存储和他或她的地址是字母数字字符存储。

         Python有一些标准类型用于定义操作上,他们和为他们每个人的存储方法可能。

         Python有五个标准的数据类型:

      Numbers(数字)

      String(字符串)

      List(列表)

      Tuple(元组)

      Dictionary(字典)

    变量:

          Python中的变量不需要声明,变量的赋值操作既是变量声明和定义的过程。

      每个变量在内存中创建,都包括变量的标识,名称和数据这些信息。

      每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

      等号(=)用来给变量赋值。

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

     

    3.2生成器

      通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

      所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator。

     

    3.3迭代器

      可以直接作用于for循环的数据类型有以下几种:

      一类是集合数据类型,如list、tuple、dict、set、str等;

      一类是generator,包括生成器和带yield的generator function。

     

      这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。

      而生成器不但可以作用于for循环,还可以被next()函数不断调用并返回下一个值,直到最后抛出StopIteration错误表示无法继续返回下一个值了。

      可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。

      生成器都是Iterator对象,但list、dict、str虽然是Iterable(是可迭代对象),却不是Iterator。

      凡是可作用于for循环的对象都是Iterable类型;

      凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;

      集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。

     

    3.4模块

      模块让你能够有逻辑地组织你的Python代码段。

      把相关的代码分配到一个 模块里能让你的代码更好用,更易懂。

      模块也是Python对象,具有随机的名字属性用来绑定或引用。

      简单地说,模块就是一个保存了Python代码的文件。模块能定义函数,类和变量。模块里也能包含可执行的代码。

     

     

    参考资料:

    1.http://www.shouce.ren/api/view/a/4615

    2.https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000

     

  • 相关阅读:
    前端--页面提交重置功能
    ztree获取当前选中节点子节点id集合的方法(转载)
    sqlserver锁表、解锁、查看销表 (转载)
    解决前端文件修改后浏览器页面未更新的问题
    简单的上传文件
    如何在Eclipse中查看JDK以及JAVA框架的源码(转载)
    设计模式--观察者模式
    WebService 学习
    学习quartz定时
    JS 中AJAX,Fetch,Axios关系
  • 原文地址:https://www.cnblogs.com/liuzhen1995/p/7739435.html
Copyright © 2011-2022 走看看