• Python 变量和数据类型


    变量的定义与赋值

    Python 是动态语言,我们不需要为变量指定数据类型,只需要输入变量名和值就行了。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。

    此外 Python 允许你同时为多个变量赋值。例如:

    a = b = c = 1
    

    以上实例,创建一个整型对象,值为1,三个变量被分配到相同的内存空间上。

    你甚至可以在一行内将多个值赋值给多个变量,这个技巧用来交换两个数的值非常方便。

    >>> a, b = b , a
    >>> a
    54
    >>> b
    45
    

    这涉及到元组的知识,在赋值语句的右边我们创建了一个元组,我们称这为元组封装(tuple packing),赋值语句的左边我们则做的是元组拆封 (tuple unpacking)。

    标准数据类型

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

    1. Number(数字)

      • Python3 支持 int、float、bool、complex(复数)。在Python3 里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
      • isinstance() 和 type() 函数可以用来判断变量所指的对象类型,不同的是:type()不会认为子类是一种父类类型,而isinstance()则会认为子类是一种父类类型。
      # a为int类型则返回true
      isinstance(a, int)
      # 打印a的数据类型
      print (type(a))
      
    2. String(字符串)

      • Python 中字符串用单引号或双引号括起来,使用反斜杠 转义特殊字符。使用三引号( '''""" )可以指定一个多行字符串,反斜杠 也可以作为续行符(转义换行符,也适用于表达式和语句)。
      • 在交互式解释器中,输出的字符串会用引号引起来,特殊字符会用反斜杠转义。如果字符串中只有单引号而没有双引号,就用双引号引用,否则用单引号引用。print() 函数生成可读性更好的输出, 它会省去引号并且打印出转义后的特殊字符。
      • 如果你前面带有 的字符被当作特殊字符,你可以使用原始字符串,方法是在第一个引号前面加上一个 r
        >>> print(r'C:some
        ame')  # note the r before the quote
        C:some
        ame
        

      但是原始字符串不能以反斜杠 结尾,最后的引号会被转义(bug?),让解释器不清楚是否应该结束该字符串。一个简单的解决办法是把反斜杠单独出来,写成 r"str" "\"

      • 支持索引,索引获得单个字符。字符串的第一个字符索引为 0 ,不过索引也可以是负数,这将导致从右边开始计算,-1 表示最后一个字符,-2 表示倒数第二个这样。
      • 支持切片,切片获得一个子字符串。切片包含起始的字符不包含末尾的字符。这使得 s[:i] + s[i:] 永远等于 s 。切片的索引有非常有用的默认值,省略的第一个索引默认为零,省略的第二个索引默认为切片的字符串的大小。Python 能够优雅地处理那些没有意义的切片索引:一个过大的索引值(即下标值大于字符串实际长度)将被字符串实际长度所代替,当上边界比下边界大时(即切片左值大于右值)就返回空字符串。
      • 内置函数 len(String str) 将会返回字符串的长度。
      • 字符串可以由 + 操作符连接(粘到一起),可以由 * 表示重复。
      • 注意,Python 没有单独的字符类型,一个字符就是长度为1的字符串。
      • 与 C 字符串不同的是,Python 字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误。
    3. List(列表)

      • 列表是写在方括号 [] 之间、用逗号分隔开的元素列表,支持+连接。
      • 列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
      • 和字符串一样,列表同样可以被索引切片,列表被截取后返回一个包含所需元素的列表(浅拷贝)。
      • 与Python字符串不一样的是,列表中的元素是可以改变的,允许对索引和切片赋值。
      • 对切片赋值会改变原列表的值或尺寸,但严格上来说这不是切片操作,只是形式一样而已。
    4. Tuple(元组)

      • 元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
      • 虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
      • 构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
        tup1 = ()    # 空元组
        tup2 = (20,) # 一个元素,需要在元素后添加逗号
        
      • string、list和tuple都属于sequence(序列)
    5. Sets(集合)

      • 集合(set)是一个无序不重复元素的序列。
      • 基本功能是进行成员关系测试和删除重复元素。
      • 可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
    6. Dictionary(字典)

      • 列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过来存取的,而不是通过偏移存取。
      • 字典是一种映射类型,字典用 { } 标识,它是一个无序的键(key) : 值(value)对集合。
      • 键(key)必须使用不可变类型,而且在同一个字典中,键(key)必须是唯一的。

    类型转换

    Python 是强类型语言,所以必要的时候需要手动进行类型转换。

    类型转换函数 转换路径
    float(string) 字符串 -> 浮点值
    int(string) 字符串 -> 整数值
    str(integer) 整数值 -> 字符串
    str(float) 浮点值 -> 字符串
    complex(x) 将x转换到一个复数,实数部分为 x,虚数部分为 0
    complex(x, y) 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式

    参考资料

  • 相关阅读:
    百度2015校园招聘前端笔试题汇总
    雅虎网站页面性能优化的34条黄金守则(转)
    web跨域通信问题解决
    setTimeout(fn,0)的作用分析
    阿里校园招聘前端面试
    rownum浅谈(二)
    rownum浅谈(一)
    try catch finally 执行顺序面试题总结
    浅谈CPU、内存、硬盘之间的关系
    【多线程学习(2)】继承Thread类和实现Runnable接口、Callable接口的区别
  • 原文地址:https://www.cnblogs.com/mingyueanyao/p/7372498.html
Copyright © 2020-2023  润新知