在 python 中,strings, tuples, 和 numbers 是不可更改的对象,而 list,dict 等则是可以修改的对象。
不可变类型:
a = 1 #把1赋值给a
a = 2 #把2赋值a
这一过程中其实是重新创建新的值为2的对象a,原先指向1的变量a 被废弃了
可变类型:
l = [1,2,3]
l[0] = 99
l这一过程中只是修改而已,l 指向这个列表的变量没有变化
def changeList(self,mylist):
mylist.extend([1,2,3])
print('函数内的list: ',mylist)
def changeInt(self,a):
a = 10
print('函数内的int: ',10)
if __name__ == '__main__':
s = Student()
l = [11,22,33]
s.changeList(l)
print('函数外的list:',l)
a = 100
s.changeInt(a)
print('函数外的int: ',a)
结果:
函数内的list: [11, 22, 33, 1, 2, 3]
函数外的list: [11, 22, 33, 1, 2, 3]
函数内的int: 10
函数外的int: 100
小结:
从代码可以看出,不可变的参数传入后并函数外并没有改变值,具有不可变性;而列表,传入参数后列表内容发生改变,函数外的列表也一同发生改变,具有可变性。
===========================================================================
以下是调用函数时可使用的正式参数类型:
必需参数
关键字参数
默认参数
不定长参数
必须参数:
调用该函数数必须传参数
def fun(needValue):
print(needValue)
fun(123)
关键字参数:郑州不 孕 不 育医院:jbk.39.net/yiyuanzaixian/zztjyy/
在调用函数的时候,可以指定关键字,此时可以不需要管函数的参数顺序。
def fun(needValue):
print(needValue)
fun(needValue = 123)
默认参数:
如果定义函数的时候,参数是设置为默认的形式,在调用函数的时候,参数可以不需要填写。
def fun(needValue=123):
print(needValue)
fun()
不定长参数:
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述 2 种参数不同,声明时不会命名。基本语法如下:
*参数 表示以元组(tuple)的形式导入
第一个参数为可选参数
def functionname([formal_args,] *var_args_tuple ):
“函数_文档字符串”
function_suite
return [expression]
def fun(str,*args): #传两个参数,第一个是一个值的,第二个是一个元组
print(str,args)
fun('kyd','a','b','c')
结果:
kyd ('a', 'b', 'c')
def fun(str,*args): #传两个参数,第一个是一个值的,第二个是一个元组
print(str,args)
fun('str') #只传第一个参数,第二个参数不传
结果:
kyd () 得到结果是一个空元组
def fun(*args): #只定义多参数的元祖
print(args)
fun(1,2,3)
结果:
(1,2,3)
**args 不定长参数可以以字典的形式,基本语法:
def functionname([formal_args,] **var_args_dict ):
“函数_文档字符串”
function_suite
return [expression]
def fun(str,**args):
print(str)
print((args))
fun('kyd',a=1,b=2,c=3) #注意调用函数的时候,字典的键值对以=分割
结果:
kyd
{'a': 1, 'b': 2, 'c': 3}
转载于:https://blog.51cto.com/14263495/2390314