zoukankan      html  css  js  c++  java
  • 3-python学习——变量

    变量是我所接触过的编程语言中都具有的一个概念,只是这个概念有的强有的弱罢了。

    1、什么是python的变量

    变量这个东西怎么解释呢?不怎么好说。
    这么说吧,变量就相当于一个代名词,或者说是名字。
    计算机处理的都是二进制的数据,而变量就代表了一些二进制数据。
    例如变量a给它赋值为5,那么a就代表了一块内存区域,这块区域保存的数据是5。然后又让a="nihao",那么a就不在代表那块保存数据5的内存区域了,而改为代表保存了数据"nihao"的内存区域。

    2、变量声明与赋值

    python变量与C/C++这些强类型编程语言不同,它是弱类型的,也就是变量的类型并不是从一而终的(一次确定,终身不变)。

    python的变量,与对应内存区域的关系是可变的。当重新给变量赋值的时候,如果新赋值的类型与当前保存数据的类型不同,将会重新分派内存区域。

    我们并不需要显示的声明一个变量,实际上这也行不通。可以看下面

    >>> x
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'x' is not defined
    >>> print(x)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    NameError: name 'x' is not defined
    

    我们这里想声明一个变量,但是会报错,原因是它不知道这个x是什么。

    变量赋值

    我们在声明变量的时候,必须给变量赋一个初始值。
    等号(=)来赋值给变量。
    赋值方式以 变量 = 。等于号=的左边是变量,右侧的是在变量中存储的值。

    举个例子
    下面什么了三个变量,然后输出了一下。
    再对x重新赋值为字符串"你好",然后重新输出。
    对于中文字符串,这里输出的是十六进制的结果。如果在python3.x下,是可以正常输出中文的。

    >>> x=123
    >>> y=345
    >>> z=x*y
    >>> print(x,y,z)
    (123, 345, 42435)
    >>> x="你好"
    >>> print(x,y,z)
    ('xe4xbdxa0xe5xa5xbd', 345, 42435)
    

    多重赋值:

    • Python允许同时指定一个值给几个变量。例如:
    >>> a=b=c=123
    >>> print(a,b,c)
    123 123 123
    
    • 这里,整数对象创建的值1,并且所有三个变量被分配到相同的内存位置。您也可以将多个对象分别到多个变量。例如:
    >>> a,b,c=1,"你好",'X'
    >>> print(a,b,c)
    1 你好 X
    

    变量的删除

    变量的删除可以使用del来进行。

    >>> str="操作系统:ubuntu-15.04"
    >>> print(str)
    操作系统:ubuntu-15.04
    >>> del str
    >>> print(str)
    <class 'str'>
    

    3、python变量的类型

    python能够表示的数据类型有五种

    • 数字
    • 字符串
    • 列表
    • 元组
    • 字典

    这里并不打算进行非常细致的分析,遵循够用就好的原则来进行说明。

    数字

    数字是用于表示数值的类型,包括整数,浮点数,复数。

    • 浮点数就是实数,或者通俗点说就是有小数部分的数。

    • 整数又包括一般的有符号整数(int)和长整型数(long),长整型数在表示的时候用一个后缀L或者l表示,通常使用大写的L,避免混淆。注意:这个在python3.x中行不通了,python3.x中整数都是int类型。

    • 复数就是complex了,这里表示与我们在中学时候学习的可能有一点区别。中学时候学的是虚部加i表示,这里是虚部加j表示。也就是类似与1+2j的形式。

    python2.7下的示例

    >>> a,b,c,d = 100 , 10.3, 10+5j, 9901L
    >>> print(type(a),type(b),type(c),type(d))
    (<type 'int'>, <type 'float'>, <type 'complex'>, <type 'long'>)
    

    python3.4下的示例

    >>> a,b,c,d = 100 , 10.3, 10+5j, 99019999999999999999999999999999999
    >>> print(a,b,c,d)
    100 10.3 (10+5j) 99019999999999999999999999999999999
    >>> print(type(a),type(b),type(c),type(d))
    <class 'int'> <class 'float'> <class 'complex'> <class 'int'>
    

    上面没有说负数和整数的进制的。python的数据类型是可以为负数的。整数也可以用十六进制或八进制来表示的。

    >>> a,b,c = -15,-0x7f,80-5j
    >>> print(a,b,c)
    -15 -127 (80-5j)
    >>> print(a,hex(b),c)
    -15 -0x7f (80-5j)
    

    字符串

    • 字符串是被单引号或者双引号括起来的一串字符序列。
    • 对于字符串的整体的引用,直接使用变量名就是了。如果只是引用其中的部分,那么可以使用类似name[n:m]来表示。
    • python的字符串也可以看做一个字符数组,下标是从0开始的。如果我们要引用其中的某个元素,可以使用变量名[下标]的方式。如果是想引用倒数第几个,那么使用负数就是了,倒数第一个的下标为-1

    举个例子,先定义一个字符串str,然后输出它或者它中间的一部分。
    注意:使用中括号引用字符串中间的部分的时候如name[n:m]实际上代指的是字符串name中索引在半闭半开区间[n,m)的元素。n的默认值为0m的的默认值为-1

    >>> str="0123456789"
    >>> print(str)
    0123456789
    >>> print(str[:])  #中括号内不写数字,直接写冒号也是引用整个字符串
    0123456789
    >>> print(str[2])  #输出索引为2的元素
    2
    >>> print(str[2:4])  #输出索引从2开始,到索引为4之间的元素
    23
    >>> print(str[2:-3])  #输出索引从2开始,到倒数第三之间的元素
    23456
    >>> print(str[2:])  #输出索引从2开始,到最后的元素
    23456789
    >>> print(str[:-3])  #输出索引从0开始,到倒数第三之间的元素
    0123456
    
    • 字符串可进行加操作,其结果是两个字符串拼接起来的。字符串还可乘以一个正整数,其结果是该字符串重复多次拼接自身组成新字符串。(如果乘以一个负数,将变成空字符串)
    >>> print(list[-1])
    你好
    >>> str="你好"
    >>> print(str+"吗?")
    你好吗?
    >>> print(str*3)
    你好你好你好
    

    列表

    • 列表是最通用的Python复合数据类型。列表中包含以逗号分隔,并在方括号([])包含的项目。

    • 列表和C语言的数组很像,但是列表的各个元素类型是可以不一致的。例如list=[1,'c',"234",3.5]这个列表的元素类型不一致。

    • 上面说过的字符串可以看做列表的一种特殊形式。列表中的元素也有类似与字符串中元素那样的访问形式list[n:m]。这里就不详述了,看示例。

    注意下面的输出,有中括号的代表输出的是一个列表,没有的表示是一个元素。

    >>> list=[1,2.3,"你好"]
    >>> print(list)
    [1, 2.3, '你好']
    >>> print(list[:])   #打印列表所有元素
    [1, 2.3, '你好']
    >>> print(list[1])   #打印列表第二个元素(索引为1)
    2.3
    >>> print(list[1:3])   #打印列表第2到第3个元素元素(索引为1-2)
    [2.3, '你好']
    >>> print(list[-1])   #打印列表最后一个元素(索引为-1)
    你好
    
    • 列表也可以进行加操作,其结果是两个列表的合并。也可以乘以一个正整数,结果是该列表重复多次。(如果乘以一个负数,其结果是一个空列表)
    >>> print(list*3)
    [1, 2.3, '你好', 1, 2.3, '你好', 1, 2.3, '你好']
    >>> print(list+["+++",100,99.8])
    [1, 2.3, '你好', '+++', 100, 99.8]
    
    • 列表中的元素是可以修改的。这么来说,列表中的元素是变量,列表其实就是多个变量的集合。
    >>> print(list)
    [1, 2.3, '你好']
    >>> list[1]="请问"
    >>> print(list)
    [1, '请问', '你好']
    
    • 列表不可以越界访问,否则将报错。
    >>> list[3]="?"
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    IndexError: list assignment index out of range
    
    • 列表的扩展可以使用+=来进行,并不能直接隐式扩展。
    >>> print(list)
    [1, '请问', '你好']
    >>> list+=[100]
    >>> list+=["呵呵"]
    >>> print(list)
    [1, '请问', '你好', 100, '呵呵']
    
    • 列表中元素的删除可以使用del来进行
    >>> print(list)
    [1, 2, 100, 'da', 4, 5, 6]
    >>> del list[2:4]
    >>> print(list)
    [1, 2, 4, 5, 6]
    

    元组

    • 元组是类似于列表中的序列数据类型。一个元组由数个逗号分隔的值。不同于列表,不过,元组圆括号括起来。

    • 列表和元组之间的主要区别是:列表使用中括号[]表示,而元组使用小括号()表示。列表中的元素是变量,而元组中的元素是常量,是不可以再改变的。但是元组是可以被重新赋值的,不能改变的只是其元素。要明白python的变量是弱类型的。(原因很简单,你可以给一个变量赋值100,然后又给它赋值为200,但是你不能给100赋值为200吧。100=200不好)

    >>> tuple=(100,"头","牛")
    >>> print(tuple)
    (100, '头', '牛')
    >>> print(tuple[2])
    牛
    >>> print(tuple[1:-1])	#输出元组,当输出的元组只有一个元素
    					#的时候,元素后会加逗号来标识为元组
    ('头',)
    >>> tuple[2]="猪"	#视图改变元组的元素,报错
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item assignment
    >>> tuple=(123,321)	#重赋值给这个变量tuple
    >>> print(tuple)
    (123, 321)
    
    • 不能从元组中删除元素。
    >>> tuple=(1,2,3,4)
    >>> del tuple[1:3]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: 'tuple' object does not support item deletion
    >>> tuple=tuple[1:3]
    >>> print(tuple)
    (2, 3)
    

    字典

    • 字典,dictionary。这是很有用的一个数据结构。C++标准模板库(STL)中的map和这个很像。说白了就是键值对嘛。一个key对应一个value
    • 字典的键通常用数字或者字符串(不可以用列表作为键,但元组可以。因为key必须是不可变的)。值也可以是python支持的任意类型。值有重复的,但是键都是唯一的。
    >>> dict={1:"你好","2":"可以了",[0,9]:3.14159}
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'	#用列表为键出现错误
    
    • 字典是由花括号括号{},可分配值,并用方括号(dictionary[key])访问value
    >>> dict={1:"你好","2":"可以了",(0,9):3.14159}	#构建字典
    >>> print(dict)
    {(0, 9): 3.14159, 1: '你好', '2': '可以了'}
    >>> print(dict.keys())	#输出所有键key
    dict_keys([(0, 9), 1, '2'])
    >>> print(dict.values())	#输出所有值value
    dict_values([3.14159, '你好', '可以了'])
    >>> print(dict["2"])	#引用key "2"对于的value
    可以了
    
    • 字典可以添加元素,修改key对应的value
    >>> print(dict)
    {(0, 9): 3.14159, 1: '你好', '2': '可以了'}
    >>> dict[(0,9)]={1:1,2:[123,345]}	#修改,值可以是一个字典
    >>> print(dict)
    {(0, 9): {1: 1, 2: [123, 345]}, 1: '你好', '2': '可以了'}
    >>> print(dict[(0,9)][2])	#引用key对于value
    [123, 345]
    >>> dict["中国"]="祖国"	#添加元素
    >>> print(dict)
    {(0, 9): {1: 1, 2: [123, 345]}, 1: '你好', '2': '可以了', '中国': '祖国'}
    
    • 引用不存在的元素的时候,会报错。可以使用in来确定key是否存在。
    >>> print(dict["猴子"])
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: '猴子'
    >>> "猴子" in dict
    False
    
    • 字典元素的删除,可以同样也是使用del操作。
    >>> print(dict)
    {(0, 9): {1: 1, 2: [123, 345]}, 1: '你好', '2': '可以了', '中国': '祖国'}
    >>> del dict[(0,9)]
    >>> print(dict)
    {1: '你好', '2': '可以了', '中国': '祖国'}
    
  • 相关阅读:
    iOS 面试题搜集
    iOS 常用第三方类库、完整APP示例
    iOS 键盘遮挡输入 解决办法
    iOS UIColor RGB HEX
    iOS APP性能优化
    iOS Swift 数组 交换元素的两种方法
    iOS CoreData primitive accessor
    iOS Start developing ios apps (OC) pdf
    iOS 传值方式
    iOS IB_DESIGNABLE IBInspectable @IBDesignable @IBInspectable 加速UI开发
  • 原文地址:https://www.cnblogs.com/oloroso/p/4594846.html
Copyright © 2011-2022 走看看