标签:自定义变量 删除对象 包括 表达 允许 赋值 编程风格 注意 mem
1 print("yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy2 yyyyyyyyyyyyyyyyyyyyyyy")
1 print(‘cyy‘);print(‘zzl‘) 2 3 输出结果: 4 cyy 5 zzl
标识符是计算机语言中允许作为名字的有效字符串集合
下划线对于解释器来说有特殊意义,而且是内建标识符所使用符号,不建议自定义变量以下划线开头
变量定义方法很简单:
1 x=5 2 print(x,type(5)) 3 print(x*5,type(x*5)) 4 5 结果: 6 5 <class ‘int‘> 7 25 <class ‘int‘>
注意:在赋值时,值是什么数据类型,就决定了这个变量的类型,变量名引用了数值的同时也引用了它的类型。
变量命名规范
1、变量名可以包括字母、数字、下划线,但是数字不能做为开头。例如:name1是合法变量名,而1name就不可以。
2、系统关键字不能做变量名使用
3、除了下划线之个,其它符号不能做为变量名使用
4、Python的变量名是除分大小写的,例如:name和Name就是两个变量名,而非相同变量哦。
python中使用对象模型来存储数据,用来生成数据类型的工厂函数本质上是类,新建数据的结果本质是实例化一个对象
对象有三种特性
变量无序指定类型
程序员无须关心内存管理
变量会自动回收
del能够直接释放内存对象(减少对象的引用计数)
解释:mem删除的则是引用,并不是100占用的这块内存地址,也不是100,删除引用以后,内存地址会自动回收
增加引用计数:
减少引用计数:
示例说明:
1 增加引用计数: 2 name = ‘yyp’ #创建内存变量yyp,将变量yyp的引用传给name,此刻yyp的引用计数为1 3 name1 = name #name有赋值给name1,现在yyp的引用计数增加到2 4 def foo(name): #作为函数调用的时候,引用计数加1 5 pass 6 7 减少引用计数 8 name1=‘sy’ #创建新的内存变量sy,将变量sy的引用传给name1,原本指向yyp的name1,此刻给了2,所以1的引用计数减少了1 9 10 del name #删除了内存对象yyp的引用name,此刻yyp再无引用,此刻它就成了python解释器回收的目标
数字:
数字更改元素,内存地址发生变化,所以数字是不可变的数据类型
字符串:
字符串更改元素,内存地址发生变化,所以字符串是不可变的数据类型
列表:
列表元素发生改变,内存地址不变,所以列表是可变类型
元组:
元祖本身就不能修改,所以元组是不可变的数据类型
字典:
字典元素发生改变,内存地址不变,所以字典是可变类型
补充知识:
一上两种情况,实际上应该开辟两块内存空间,为什么内存空间地址相同?
因为:如果变量占用的内存地址的长度比较短,所有python解释器会缓存起来
下面写一个长的内存地址进行对比:
#_*_coding:utf-8_*_ #!/usr/bin/env python
eg:
1 #!/usr/bin/python # (1)起始行 2 #coding=utf-8 #mod.__doc__ 引用类的文档 3 #"this is test module" (2)模块文档(文档字符串) 4 import sys #(3)模块导入 5 import os 6 7 debug = true 8 name = "Tom" #(4)全局变量 9 10 class FooClass(object): #(5)类定义(若有) 11 "Foo class" 12 pass 13 14 def test(): 15 "test function" 16 foo = FooClass() #将类实例化 17 if debug: 18 print ‘ran test()‘ 19 20 def main(name): #(6)函数定义(若有) 21 ‘‘‘ 22 test func 23 :return: 24 ‘‘‘ 25 pass 26 27 28 29 if __name__ == ‘__main__‘#(7)主程序 30 test() 31 main()
标签:自定义变量 删除对象 包括 表达 允许 赋值 编程风格 注意 mem
原文地址:http://www.cnblogs.com/Vae1242/p/6940810.html