最近在学习python,使用过程中有个List和dict的声明比较特殊,在此备注下 字典是可变对象,初始化一定不能放在for循环前面 List声明必须放在程序开头(按道理List也是可变对象,但不知道为什么一定要在刚开始时就声明) 代码中如果names=[]放在for循环里面, 其names.app ...
分类:
编程语言 时间:
2016-09-23 16:39:00
阅读次数:
139
dict字典 把数据放入dict:直接赋值、初始化时指定 pop删除key set集合 add添加元素 remove删除元素 字符串str是不可变对象,对字符串的操作都会返回新的字符串 pass 什么都不做 可以设置默认参数,但必须是不可变对象 *number 传入可变参数 尾递归是指在函数返回的时 ...
分类:
编程语言 时间:
2016-09-22 23:49:57
阅读次数:
196
什么是不可变对象? 众所周知, 在Java中, String类是不可变的。那么到底什么是不可变的对象呢? 可以这样认为:如果一个对象,在它创建完成之后,不能再改变它的状态,那么这个对象就是不可变的。不能改变状态的意思是,不能改变对象内的成员变量,包括基本数据类型的值不能改变,引用类型的变量不能指向其 ...
分类:
编程语言 时间:
2016-09-22 14:40:51
阅读次数:
263
31、String s = "Hello";s = s + " world!";这两行代码执行后,原始的String对象中的内容到底变了没有?没有。因为String被设计成不可变(immutable)类,所以它的所有对象都是不可变对象。在这段代码中,s原先指向一个String对象,内容是 "Hell ...
分类:
编程语言 时间:
2016-09-18 15:12:42
阅读次数:
271
一、函数的定义和使用 1、基本结构: 2、函数名: 和变量名命名规则一致,最好不要与内置函数名相同 3、参数: 和C/C++不同,参数无需指定类型,直接交由解释器去判断: 对于number, str, tuple等不可变的对象,相当于传值,即是传递了拷贝 对于list,dict,set等可变对象,相 ...
分类:
编程语言 时间:
2016-09-15 12:21:26
阅读次数:
304
简单来说,若对象a中存的是列表或字典等可变对象,b对a的浅拷贝只是对对象第一层的复制,修改b第二层的元素仍然会影响两个对象。 深拷贝则是不会影响原来的对象。 import copy.copy() 浅拷贝 copy.deepcopy() 深拷贝 赋值操作更像是一个引用,新的赋值会创建一个新的内存地址, ...
分类:
编程语言 时间:
2016-09-06 12:09:56
阅读次数:
162
在讲函数参数之前还是简单的讲一下Python中的可变对象与不可变对象。一、可变对象与不可变对象在Python中,一切皆对象,python中不存在所谓的传值调用,一切传递的都是对象的引用,也可以认为是传址。所谓可变对象是指,对象的内容可变,而不可变对象是指对象内容不可变(即在..
分类:
编程语言 时间:
2016-08-24 01:16:19
阅读次数:
227
1、设计类的时候,应充分运用属性来封装数据。 2、应该尽量把对外公布出来的属性设为只读,而且只在确有必要时才将属性对外公布。 3、若属性仅可于对象内部修改,则在“class-continuation分类”中将其由readonly属性扩展为readwrite属性。 这种做法下,如果该属性是nonato ...
分类:
其他好文 时间:
2016-08-09 19:08:49
阅读次数:
107
>>可变状态是至关重要的。 所有的并发问题都可以归结为如何协调并发状态的访问。可变状态越少,就越容易确保线程的安全性。 >>尽量将域声明成final类型,除非需要它们是可变的。 >>不可变对象一定是线程安全的。 不可变对象能极大地降低并发编程的复杂性,它们更为简单而且安全,可以任意共享而无需使用加锁 ...
分类:
其他好文 时间:
2016-08-06 20:23:19
阅读次数:
124
1、Java中的不可变对象和可变对象 (1)不可变类:当你获得这个类的实例的引用之后,你不可以改变这个实例的内容。比如:String,BigInteger,BigDecimal,还有基本数据类型的封装类,这些都是不可变类。用实例来调用方法时,不会改变里面的变量的值。代码: import java.m ...
分类:
编程语言 时间:
2016-08-04 00:00:31
阅读次数:
371