浅谈python中的变量赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈python中的变量赋值相关的知识,希望对你有一定的参考价值。
参考技术A 在python中,变量赋值的语法比较简单,语法就是 “变量名 = 对象”,由于python属于动态语音,所以不需要像c、 java那样在变量赋值时需要声明变量的类型。c 变量赋值
int x = 1;
python 变量赋值
x = 1
y = "hello world!"
a = [1, 2]
b = ('a', 'b')
c = "foo": "bar"
python 变量赋值中,所涉及到的变量命名是有一定规则的:
1. 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为name_1,但不能将其命名为1_name
2. 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名name_one可行,但变量名name one会引发错误。
3. 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如not、pass等。
4. 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好, 虽说简短好,但是不能依照自己的意愿随意简写,尽量使用大家约定俗成的简写,如果不是还不如写全拼。
5. python 变量名中大小写敏感,所以 NAME, Name, name 代表三个不同的表里名, 这里提一下就是慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;
再说变量赋值中赋予给变量的值,python中万事皆对象,所以python中只要是对象就能给变量赋值。如:
x = 1 # x赋值为数字1;
x = sum # x赋值为内建求和函数sum;
python的赋值真实上说应该不是赋值,而更像是“引用”,如何理解“引用”呢,python中一直对象的生成是会在内存中分配给一个内存地址,这个内存地址可以使用id()方法去获取,然后在变量赋值时,将变量直接引用该对象的内存地址,进而完成变量赋值,如:
x = 1, 赋值时x直接引用1所在内存的地址, y = x, 此时是y直接引用x的所指向的内存地址
python中有判断变量的方法如 is() 和 ==,二者在判断变量时是有区别的,is函数是判断变量的内存地址是否相同,而 == 是判断变量的值是否相同,举例说明:
a = 1; b = 1.0
a is b # False
a == b # True
小心python变量赋值的陷阱
看到上面的所述知道了python变量赋值实则是引用,引用的是对象的内存地址。所赋的值可以分两类,一类是可变的,如列表,字典,集合;一类是不可变的,如字符串、元组。所以当对象为可变类型时就会出现一种情景,我们举例说明:
x = [1, 2, 3]
y = x
print x == y # True
print x is y # True
print x # [1, 2, 3]
print y # [1, 2, 3]
y.append(4)
print x # [1, 2, 3, 4]
print y # [1, 2, 3, 4]
可以看到y在进行调整时(添加了一个元素),x也跟着变动了,这进一步说明了,python中的变量赋值时引用,x,y 赋值时指向了同一处内存地址,所以当y变动时,x同样也发送了变化,解决这中现象的方法可以是x, y = [1,2,3], [1,2,3]这样赋值,虽说此时 x==y 是True,但是确实是2个不同的内存地址,所以 x is y 则是 False。或者可以使用copy模块,实质是相同的,创建2个不同的内存地址,使其分离。
python中的变量和数据类型
一、变量定义:变量是计算机内存中的一块区域,存储规定范围内的值,值 可以改变,通俗的说变量就是给数据起个名字。
二、变量命名规则:
1. 变量名由字母、数字、下划线组成
2. 数字不能开头
3. 不可以使用关键字, 举例:a,a1,a_1
三、变量的赋值:
1. Python中的变量不需要声明,变量的赋值就是变量声明和 定义的过程;
2. 每个变量在使用前都必须赋值,变量赋值以后该变量才会 被创建;
3. 等号(=)用来给变量赋值,等号(=)运算符左边是一个 变量名,等号(=)运算符右边是存储在变量中的值。 举例:a=1
四、多个变量赋值:
Python允许同时为多个变量赋值。
例如:a = b = c = 1 也可以为多个对象指定多个变量。
例如:a2,b2,c2 = "zz",18,1
五、变量分类:
1. 不可变变量:数字、元组()、字符串 (值变的时候会指向一个新的地址)
2. 可变变量:列表[]、字典{} (值变,id不变)
六、标准数据类型:
Numbers(数字):整形、长整形(123L,超出int自动转成 long)、浮点型、复数型(a=1j)
String(字符串):" " \' \' """ """
List(列表):[],值可变
Tuple(元组):(),值不可变
Dictionary(字典):{}
6.1、数字类型:Number
数字数据类型用于存储数值。是不可改变的数据类型(不可变 变量),这意味着改变数字数据类型会分配一个新的对象。 当指定一个值时,Number对象就会被创建:num = 123 Python支持四种不同的数字类型:
1. int(有符号整型)
2. long(长整型[也可以代表八进制和十六进制])
3. float(浮点型)
4. complex(复数)
6.2、字符串:String
字符串(String)是由数字、字母、下划线组成的一串字符。
加号(+)是字符串连接运算符,星号(*)是重复操作。
6.3、字符串格式化:
Python 支持格式化字符串的输出 。
最基本的用法是将一个值插入到一个有字符串格式符 %s 的字 符串中。
例如:
6.4、list:列表
列表可以完成大多数集合类的数据结构实现。 它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。
加号(+)是列表连接运算符,星号(*)是重复操作。
常见列表操作:
list.append(obj) 在列表末尾添加新的对象
list.insert(index, obj) 将对象插入列表
list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
list.count(obj) 统计某个元素在列表中出现的次数
list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用 新列表扩展原来的列表)
del(list[index]) 删除某个元素
list.remove(obj) 删除第一个匹配的元素
list.pop(index) 移除列表中的一个元素(默认最后一个元素),并 且返回该元素的值
list.sort() 对原列表进行排序
list.reverse() 反向列表中元素
6.5、元祖:Tuple
元组用"()"标识,类似于List(列表),但是元组是不可变变量,元素不能二 次赋值,相当于只读列表。
如下实例:
>>> list=[1,2,3]
>>> tuple=(4,5,6)
>>> list[0]=10
>>> list [10, 2, 3]
>>> tuple[0]=40
Traceback (most recent call last):
File "<pyshell#26>", line 1, in <module>
tuple[0]=40
TypeError: \'tuple\' object does not support item assignment
6.6、dictionary:字典
字典由索引(key)和它对应的值(value)组成,字典是Python唯一的映射类型。
字典也被称作关联数组或哈希表。
keys() 返回键列表,values() 返回值列表,items() 返回键值对的元组,has_key(key) 返回是否含有该key。
两个重要的点需要记住:
1.字典中的键必须独一无二,但值则不必。创建时如果同一个键被赋值两次,后一个值会被记住;
2. 键必须不可变,可以用数字,字符串或元组充当,但是不可以用列表。
创建字典的两个方法:
1. 使用工厂方法dict()创建字典:
例:
2. 内建方法fromkeys(),字典中的元素具有相同的值,默认 为None
例:
查看遍历字典
查看字典中的值:
1. dict[key]
2. dict.get(key,value)
两种遍历字典的方法:
1. for key in dict:
print key, dict[key]
2. for key, value in dict.items():
print key, value
增改删字典:
dict[key]=value#无该key增加,有则更新该key对应的value
dict1.update(dict2) #更新dict2到dict1,无则添加,重复则覆盖
dict.pop(key)#删除指定的键值,返回对应的值
dict.clear() #清空字典
del dict #彻底删除
7、json模块
http://wthrcdn.etouch.cn/weather_mini?city=北京
通过城市名称,获得天气数据
import json
json.dumps() #编码,字典转成字符串
json.loads() #解码,字符串转成字典
8、数据类型转换
- 字典可转换为字符串、元组、列表
方式str(dict)、tuple(dict)、list(dict)
- 元组转换为字符串、列表
如:t=(1,2,3)
转换成字符串:t.__str__()
转换成列表:list(t)
- 列表转换为字符串、元组
- 字符串转换为元组、列表、字典
转为元组和列表:
转为字典:
9、序列操作
序列包括:字符串、列表、元组 序列的两个特征是“索引”和“切片” 索引,根据index获取特定元素 切片,获取序列片段
序列操作应用:
最后举个工作中用到的小例子,数据存在一个列表中,如:
list=[\'23.34%\',\'30.88%\',\'15.90%\'] 需要取列表中的值与已知数据进行大小比较,为了方便比较, 想到先去掉最后的%,然后将字符串转换成float,用切片很 容易实现: >>> list=[\'23.34%\',\'30.88%\',\'15.90%\']
>>> float(list[0][:-1])
23.34
常见序列操作:
len() 求长度
+ 连接两个序列
* 重复序列元素
in 判断元素是否在序列中
max() 返回最大值
min() 返回最小值
cmp() 比较两个序列
以上是关于浅谈python中的变量赋值的主要内容,如果未能解决你的问题,请参考以下文章