变量
变量定义的规则:
变量名只能是 字母、数字或下划线的任意组合
变量名的第一个字符不能是数字
以下关键字不能声明为变量名
['and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'not', 'or', 'pass', 'print', 'raise', 'return', 'try', 'while', 'with', 'yield']
实例:
name="Alex Li" name2=name print("My name is ",name,name2) name="PaoChe Ge" print(name,name2) ————————结果———————— My name is Alex Li Alex Li PaoChe Ge Alex Li
分析:

name、name2首先执行Alex Li,然后name改为指向PaoChe Ge,而name不改变
Python中的赋值(复制)、浅拷贝、深拷贝之间的区别
1.赋值: 只是复制了新对象的引用,不会开辟新的内存空间。
2.浅拷贝: 创建新对象,其内容是原对象的引用。
浅拷贝有三种形式:切片操作,工厂函数,copy模块中的copy函数。
如: lst = [1,2,3,[4,5]]
切片操作:lst1 = lst[:] 或者 lst1 = [each for each in lst]
工厂函数:lst1 = list(lst)
copy函数:lst1 = copy.copy(lst)
浅拷贝之所以称为浅拷贝,是它仅仅只拷贝了一层,在lst中有一个嵌套的list[4,5],如果我们修改了它,情况就不一样了。
3.深拷贝:只有一种形式,copy模块中的deepcopy函数。
和浅拷贝对应,深拷贝拷贝了对象的所有元素,包括多层嵌套的元素。
深拷贝出来的对象是一个全新的对象,不再与原来的对象有任何关联。
详情浏览:http://python.jobbole.com/82294/
will = ["Will",28,["Python","C#","JavaScript"]] wilber = will print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) will[0]="Wilber" will[2].append("CSS") print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) --------结果--------- 4867056 ['Will', 28, ['Python', 'C#', 'JavaScript']] [2339904, 498161824, 6659928] 4867056 ['Will', 28, ['Python', 'C#', 'JavaScript']] [2339904, 498161824, 6659928] 4867056 ['Wilber', 28, ['Python', 'C#', 'JavaScript', 'CSS']] [6649696, 498161824, 6659928] 4867056 ['Wilber', 28, ['Python', 'C#', 'JavaScript', 'CSS']] [6649696, 498161824, 6659928]
#浅拷贝 import copy will=["Will",28,["Pyhon","C#","JavaScirpt"]] wilber=copy.copy(will) print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) will[0]="Willer" will[2].append("CSS") print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) --------结果------------- 41425536 ['Will', 28, ['Pyhon', 'C#', 'JavaScirpt']] [33666112, 496064672, 41425296] 41212304 ['Will', 28, ['Pyhon', 'C#', 'JavaScirpt']] [33666112, 496064672, 41425296] 41425536 ['Willer', 28, ['Pyhon', 'C#', 'JavaScirpt', 'CSS']] [41056096, 496064672, 41425296] 41212304 ['Will', 28, ['Pyhon', 'C#', 'JavaScirpt', 'CSS']] [33666112, 496064672, 41425296]
import copy will = ["Will", 28, ["Python", "C#", "JavaScript"]] wilber=copy.deepcopy(will) print(id(will)) print(will) print([id(ele) for ele in will]) print(id(wilber)) print(wilber) print([id(ele) for ele in wilber]) will[0] = "Wilber" will[2].append("CSS") print (id(will)) print (will) print ([id(ele) for ele in will]) print (id(wilber)) print (wilber) print ([id(ele) for ele in wilber]) --------------结果------------ 7674496 ['Will', 28, ['Python', 'C#', 'JavaScript']] [4502592, 494950560, 7674256] 6281616 ['Will', 28, ['Python', 'C#', 'JavaScript']] [4502592, 494950560, 6281816] 7674496 ['Wilber', 28, ['Python', 'C#', 'JavaScript', 'CSS']] [6125408, 494950560, 7674256] 6281616 ['Will', 28, ['Python', 'C#', 'JavaScript']] [4502592, 494950560, 6281816]

浙公网安备 33010602011771号