函数的参数传递 可变对象和不可变对象: 不可变对象(number,string,tuple):”引用传递“,该对象的值不能发生改变。 数据类举例: defadd(num):num=num+2returnnumnumber1=10number2=add(number1)#number1作为实参引用传递,该变量的值本身没有发生变化print(number1)print(number2) 字符串类型举例: defadd(num):num=num+'world'returnnumstring='hello'string2=add(string)#string作为实参引用传递,该变量的值本身没有发生变化print(string)#函数调用后原字符串的值没有改变print(string2) hellohelloworld 元组类型举例: defadd(num):num=num+(1,5,6)returnnumtuple1=(12,23,45)tuple2=add(tuple1)#tuple1作为实参引用传递,该变量的值本身没有发生变化print(tuple1)print(tuple2) (12,23,45)(12,23,45,1,5,6) 可变对象(字典,列表,集合):“值传递”,该对象的值会发生变化。 列表为例: defchange(num):num.append(0)li=[]#定义一个空列表liprint(li)change(li)#把li作为实参传递到函数体,传递过去变量值print(li)#列表li的值已经发生变化 [][0] 字典为例: defdict_s(dict1):dict1['color']='red'dict1={'名称':'太阳'}print(dict1)dict_s(dict1)print(dict1) 集合为例: defset(set1):set1.add('python')set1={'hello','world'}print(set1)set(set1)print(set1) 查看变量内存地址: 为了提高内存利用效率,对于不大于256的整数,python会将具有相同值的整数对象给予相同的内存地址 举例: a,b=10,20print(id(a),id(b))#变量值相同,内存相同,即使变量名不相同a=b=10print(id(a),id(b))c=50print(id(c))b=cprint(id(b),id(c)) |
|