美文网首页我爱编程
python(—)了解、和简单的数据类型转换

python(—)了解、和简单的数据类型转换

作者: 承諾過往雲煙 | 来源:发表于2018-06-10 15:14 被阅读0次

    认识python image.png

    (1)

    image.png
    由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!
    Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。
    (2)
    目前Python主要应用领域
    云计算: 云计算最火的语言, 典型应用OpenStackWEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣。。。, 典型WEB框架有Django科学运算、人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas系统运维: 运维人员必备语言金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而且重要性逐年提高。原因:作为动态语言的Python,语言结构清晰简单,库丰富,成熟稳定,科学计算和统计分析都很牛逼,生产效率远远高于c,c++,java,尤其擅长策略回测图形GUI: PyQT, WxPython,TkInter。

    二、

    pyhton运算

    image.png
    image.png

    三、

    pyhton变量

    * 在 Python 中,每个变量 在使用前都必须赋值,变量 赋值以后 该变量 才会被创建
    * 等号(=)用来给变量赋值
    
        * = 左边是一个变量名
        * = 右边是存储在变量中的值
    

    什么是变量
    对于变量,在数学中我们已经了解过,就是一个值可能会改变的量。在C++中,我们对变量的认识应该相当于一个标识符,创建一个变量,即开辟一块内存然后给这块内存起个名字,那么这个名字就是“变量”,当然,这个变量的含义和内存地址以及指针都是不相同的。
    那么在Python中,变量意味着什么呢?按照我的理解,一言蔽之,就是一个指针。这确实和之前学过的强类型语言是有不同的。为什么这么说呢?首先,python中的变量是没有类型的,有类型的是“对象”,而不是变量。变量没有类型,那么就意味着它可以随意指向任何对象。在强类型语言中,变量其实都是有具体的类型来限制的,规定一个类型的变量只能被赋值与该类型相同或兼容的值。但是在python中,显然变量的自由度更大。其次,之前学过体系结构的同学都应该了解,指针的内存空间大小是与类型无关的,其内存空间只是保存了所指向数据的内存地址。之所以说指针也有类型,是因为在计算偏移量的时候,确实需要类型相关的信息。所以,从深层次的含以上来理解,python中的变量与强类型语言中的指针非常相似。
    In [1]: a = 3

    In [2]: a = "abc"

    In [3]: a
    Out[3]: 'abc'
    从上述代码中也可以明显的印证我们上面对python中变量行为的总结是正确的,与指针的行为非常相似。
    什么是对象
    我的理解是:对象=确定内存空间+存储在这块内存空间中的值。这一点其实和java有些相似。<<java编程思想>>这本书前面第一章,就对对象和引用这两个概念做了很清晰的区分。Java中,对象是分配在堆上的,存储真正的数据,而引用是在堆栈中开辟的内存空间用于引用某一个对象。抛开java中引用的概念不谈,两种语言对于对象这个概念的理解,我认为还是可以等价的,都是数据+内存空间感觉。Python中,对象才有类型,不同的对象可以拥有不同类型的数据。
    什么是引用
    引用在Python中的语义应该是一种关系,即变量和对象之间的关系,其实也就是指针指向某一块内存空间的关系。既然是变量和对象之间的关系,那么其实就意味着,对于一个对象来说,和不同的变量可能存在着多个“引用”关系。因为变量是无类型的,他想关联谁就可以指向谁,这也就牵扯到了一个“引用计数”的概念,python中的gc大体上就是使用这种原理在做的。
    既然说到多个变量可以引用同一个对象,那么就不得不说一下,如果其中一个引用改变了值,会影响到其他指向这个对象的变量么?
    In [4]: a = 2

    In [5]: b = a

    In [6]: a
    Out[6]: 2

    In [7]: b
    Out[7]: 2

    In [8]: b =3

    In [9]: a
    Out[9]: 2

    In [10]: b
    Out[10]: 3
    从上面的代码结果来看,答案应该是否定的。如果了解清楚变量和对象的语义就能对这个问题很容易做出判断,变量值的改变,就相当于指针变量内存空间内值的改变,也就是指向的对象换了一个,但其实之前所指向对象的内容是并没有收到影响的。
    但是也有特例,比如列表,指向列表的变量通过索引访问的方式,可以直接改动列表在该索引处存储的值。这个时候,如果有两个变量同时引用一个列表对象,那么其中任何一个变量利用这种方式对列表的修改,都会影响到另外一个。
    为了能够避免这种情况,可以对列表单独拷贝一份。两个变量互不干涉,而拷贝列表最直接的方式,莫过于“切片”操作了。

    变量的比较
    对于变量的比较,见得最多的,莫过于“==”和“is”。前者比较的是对象所存储的数据的值是否相等,后者则比较的是两个变量是否都引用了同一个对象。这些显而易见的东西,很多人应该不以为然,但是一些因语言内部优化的小细节,可能会打破你之前的认识。
    In [12]: a = 3

    In [13]: b = 3

    In [14]: a == b
    Out[14]: True

    In [15]: a is b
    Out[15]: True
    按照我们之前所讲的,a和b两个变量应该是引用了两个不同的对象,但是这两个对象内存中的值都是3。但是,a is b得到的结果却是True。原因有如下两点:
    Python在底层做了一定的优化,对于使用过整数以及字符串都会被缓存起来。所以上述b引用的应该是被缓存过的3
    之所以采用这种优化的方式,是因为python中数字和字符串一经创建都是不可修改的。所以不会出现,因使用了缓存的对象值造成“脏读”的问题

    结尾
    任何一种语言或是一种知识,表面上看起来都是有很多相似的地方的。这也是计算机相关知识的一个比较大的特点。但是很多东西,稍微的往底层走一点,其实还是差别很大的。接触了c++, golang, java, python这几种语言,仅仅是在对象,变量,引用这种最基本的概念上还是有挺多细节上的不同的,这也恰恰能够体现了每种编程语言的设计哲学。所以现在想想,多接触几门语言,并不是一件坏事。

    变量的输入:

    (1) 关于函数
    * 一个 提前准备好的功能(别人或者自己写的代码),可以直接使用,而 不用关心内部的细节
    * 目前已经学习过的函数

    函数
    说明
    print(x)
    将 x 输出到控制台
    type(x)
    查看 x 的变量类型
    (2) input 函数实现键盘输入
    * 在 Python 中可以使用 input 函数从键盘等待用户的输入
    * 用户输入的 任何内容 Python 都认为是一个 字符串

    (3)类型转换函数

    image.png
    变量的格式化输出
    * 在 Python 中可以使用 print 函数将信息输出到控制台
    * 如果希望输出文字信息的同时,一起输出 数据,就需要使用到 格式化操作符
    * % 被称为 格式化操作符,专门用于处理字符串中的格式
    
        * 包含 % 的字符串,被称为 格式化字符串
        * % 和不同的 字符 连用,不同类型的数据 需要使用 不同的格式化字符
    

    下面是完整的,它可以与%符号使用列表:

    image.png

    0.1 标识符和关键字

    1.1 标识符

    标示符就是程序员定义的 变量名、函数名

    名字 需要有 见名知义 的效果,见下图:

    image.png
    • 标示符可以由 字母、下划线 和 数字 组成
    • 不能以数字开头
    • 不能与关键字重名

    1.2 关键字

    * 关键字 就是在 Python 内部已经使用的标识符
    * 关键字 具有特殊的功能和含义
    * 开发者 不允许定义和关键字相同的名字的标示符
    

    通过以下命令可以查看 Python 中的关键字


    image.png

    In [1]: import keywordIn [2]: print(keyword.kwlist)

    提示:关键字的学习及使用,会在后面的课程中不断介绍
    * import 关键字 可以导入一个 “工具包”
    * 在 Python 中不同的工具包,提供有不同的工具

    python支持以下几种运算符
    * 算术运算符

    下面以a=10 ,b=20为例进行计算
    运算符
    描述
    实例


    两个对象相加 a + b 输出结果 30


    得到负数或是一个数减去另一个数 a - b 输出结果 -10


    两个数相乘或是返回一个被重复若干次的字符串 a * b 输出结果 200
    /

    x除以y b / a 输出结果 2
    //
    取整除
    返回商的整数部分 9//2 输出结果 4 , 9.0//2.0 输出结果 4.0
    %
    取余
    返回除法的余数 b % a 输出结果 0
    **

    返回x的y次幂 a**b 为10的20次方, 输出结果 100000000000000000000

    9/2.0
    4.5
    9//2.0
    4.0
    * 赋值运算符

    运算符
    描述
    实例
    =
    赋值运算符
    把=号右边的结果给左边的变量 num=1+2*3 结果num的值为7

    a, b = 1, 2
    a
    1
    b
    2
    * 复合赋值运算符

    运算符
    描述
    实例
    +=
    加法赋值运算符
    c += a 等效于 c = c + a
    -=
    减法赋值运算符
    c -= a 等效于 c = c - a
    *=
    乘法赋值运算符
    c *= a 等效于 c = c * a
    /=
    除法赋值运算符
    c /= a 等效于 c = c / a
    %=
    取模赋值运算符
    c %= a 等效于 c = c % a
    **=
    幂赋值运算符
    c **= a 等效于 c = c ** a
    //=
    取整除赋值运算符
    c //= a 等效于 c = c // a

    四、

    常用的数据类型转换

    image.png

    结语

       Python支持多种数据类型,在计算机内部,可以把任何数据都看成一个“对象”,而变量就是在程序中用来指向这些数据对象的,对变量赋值就是把数据和变量给关联起来。
    

    注意:Python的整数没有大小限制。
    Python的浮点数也没有大小限制,但是超出一定范围就直接表示为inf(无限大)。

    相关文章

      网友评论

        本文标题:python(—)了解、和简单的数据类型转换

        本文链接:https://www.haomeiwen.com/subject/mfwfeftx.html