zoukankan      html  css  js  c++  java
  • python数据类型2

    1、Python标准数据类型

    5个标准数据类型:

    • Numbers(数字)
    • String(字符串)
    • Tuple(元组)
    • List(列表)
    • Dictionary(字典)

    1.1 Numbers(数字)

    Python支持四种不同的数字类型:

    • int(有符号整型)
    • long(长整型[也可以代表八进制和十六进制])
    • float(浮点型)
    • complex(复数)

    1.2 String(字符串)

    字符串或串(String)是由数字、字母、下划线组成的一串字符。
    字符串用" "标识,一般记为 : s="a1a2···an"(n>=0)

    1.3 Tuple(元组)

    元组用( )标识。
    元组是另一个数据类型,类似于List(列表)。
    内部元素用逗号隔开。但是元组不能二次赋值,相当于只读列表。

    1.4 List(列表)

    列表用 [ ] 标识,是 python 最通用的复合数据类型、使用最频繁的数据类型。
    列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(即嵌套)。

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

    加号 + 是列表连接运算符,星号 * 是重复操作。

    1.5 Dictionary(字典)

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

    字典(dictionary)是除列表以外python之中最灵活的内置数据结构类型。
    列表是有序的对象结合,字典是无序的对象集合。
    两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。


    2、可更改(mutable)与不可更改(immutable)对象

    strings, tuples, numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。

    • 不可变类型:变量赋值 a=5 后再赋值 a=10,这里实际是新生成一个 int 值对象 10,再让 a 指向它,而 5 被丢弃,不是改变a的值,相当于新生成了a。
    i=8
    i+=2 #计算i+8,得到结果存储在新的空间,将i重新绑定到这个新的int对象;如果之前的对象没有其他对象引用,则进入垃圾回收
    i=88
    j=88
    print(i is j) #True
    

    字符串(string)与int类似,+=时,会创建一个新的字符串,对象引用将重新绑定到新的字符串。

    • 可变类型:变量赋值 la=[1,2,3,4] 后再赋值 la[2]=5 则是将 list la 的第三个元素值更改,本身la没有动,只是其内部的一部分值被修改了。

    列表(list)是可变的,+=后,原始的列表对象会被修改(在后面加一个字符?)没有重新绑定。

    python 函数的参数传递

    • 不可变类型
      类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

    • 可变类型
      类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

    python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。


    身份操作符 is
    is 左端的对象引用与右端引用指向同一对象时,返回true,否则false。
    eg:
    a='someThing'
    b=None
    a is not None # True
    b is None # True

    list ,索引从0开始;str的索引是从1开始。(python3.3)
    参数在Python里都是按引用传递。
    如果你在函数里修改了参数,那么在调用这个函数的函数里,原始的参数也被改变了。
    例如:
    def changeme( mylist ):
    mylist.append([1,2,3,4]);
    print(mylist)
    return

    mylist = [10,20,30];
    changeme( mylist );
    print (mylist )
    [10, 20, 30, [1, 2, 3, 4]]
    [10, 20, 30, [1, 2, 3, 4]]


    必备参数(最一般的情况)
    必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
    命名参数
    命名参数和函数调用关系紧密,调用方用参数的命名确定传入的参数值。你可以跳过不传的参数或者乱序传参,因为Python解释器能够用参数名匹配参数值。
    printme( str = "My string");
    缺省参数
    调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
    def printinfo( name, age = 35 ):
    print( "Name: ", name)
    print( "Age ", age)
    return
    printinfo( age=50, name="miki" );
    printinfo( name="miki" );
    变量和局部变量
    定义在函数内部的变量拥有一个局部作用域,定义在函数外的拥有全局作用域。
    局部变量只能在其被声明的函数内部访问,而全局变量可以在整个程序范围内访问。
    total = 0; #全局 global
    def sum( arg1, arg2 ):
    total = arg1 + arg2;# 局部
    print ("Inside the function local total : ", total)
    return total
    sum( 10, 20 );#30
    print ("Outside the function global total : ", total )#0
    列表与元组:
    列表与元组不是真正的存储数据项,而是存放对象的引用。

  • 相关阅读:
    JVM调优2
    CAP理论/AP架构/CP架构
    JDK8 JVM性能优化-1
    string+和stringbuffer的速度比较
    @SpringBootApplication注解分析
    Spring Cloud底层原理
    Window 下安装 redis
    Spring的任务调度@Scheduled注解——task:scheduler和task:executor的解析
    多线程捕获线程中的异常
    将 HTML 页面内容转换为图片或PDF文件
  • 原文地址:https://www.cnblogs.com/iois/p/7076530.html
Copyright © 2011-2022 走看看