python函数主要就是函数的传参:参数都有以下几种:普通参数、关键字参数、默认参数、动态参数。
普通参数:就是我们传入的参数是以正确的顺序传入,没有任何指定值,有几个形参就传几个对应的实参进去
列:
def myfc(x,y): print(x,y) myfc(5,8)
》》》5,8
关键字参数:和普通参数差不多,但传入的参数可以不分顺序,但在传参时要指定形参的值
列:
def myfc(x,y): print(x,y) add(x=5,y=8) add(y=8,x=5)
》》》5,8
》》》5,8
默认参数:默认参数要写在普通参数后面,参数传递参数时如果给定了值就按给定的值使用,如果没有给定,那就按形参里面早就赋值了的值使用
列:
def myfc(x,y,z=9): print(x,y,z) myfc(5,8,10) myfc(5,8)
》》》5,8,10
》》》5,8,9
动态参数:又叫不定长参数,我们传参时如果要接收多个参数,意思就是我们需要一个函数能处理比当时声明时的更多参数,这些参数就叫不定长参数,
列def myfc(x,y,*z): print(x,y) print(z) myfc(5,8,10,20,30,40,50)》》》5 8》》》(10,20,30,40,50)def myfc(x,y,*z,**d): print(x,y) print(z) print(d) myfc(5,8,10,20,30,qwe=123,rty=456,yui=789)》》》5 8》》》(10,20,30)》》》{'qwe': 123, 'rty': 456, 'yui': 789}这里有一个最大的重点,那就是可变类型和不可变类型简单来说就是我们传参后参数是否可以修改,记住,这里的修改可不是替换它的值,而是真正的修改,可变类型有:列表、字典不可变类型有:number 字符串 元组我们传入一个不可变类型,并且使用return,如:》》》5def myfc(x): x=10 return x a=5 print(a) a=myfc(a) print(a)》》》10a和x都属于不可变类型,a的值传递给x,这里是创建两个引用,a是指向5的引用,x也是指向5的引用,在函数内部,x重新指向10的引用,调用函数时将x赋值给a,这相当于更新了a的引用。并不算修改a的值传入不可变类型,不使用return,列:def myfc(x): x=10 print(x) a=5print(a)
myfc(a)print(a)》》》5》》》10》》》5传递值时是创建引用,之后x重新引用并输出传入可变类型:列:def myfc(x): x[2]=10 print(x) a=[1,2,3,4,5] print(a) myfc(a) print(a)》》》[1, 2, 3, 4, 5] 》》》[1, 2, 10, 4, 5] 》》》[1, 2, 10, 4, 5]这里才是正在的修改参数里面的值,在函数里面修改能影响外面的值如果你想要向函数中传递一个不可变对象,那么可以首先将这个不可变对象放到一个可变对象之中(如列表),
之后再将这个可变对象作为参数传递给函数。
def myfc(x): x[2]=10 a=(1,2,3,4,5) a=list(a) print(a) myfc(a) print(a)》》》[1, 2, 3, 4, 5]
》》》[1, 2, 10, 4, 5]
也可在函数内部进行强转,但根本不会影响a的值
def myfc(x): x=list(a) x[2]=10 print(x) a=(1,2,3,4,5) print(a) myfc(a) print(a)》》》(1, 2, 3, 4, 5)
》》》[1, 2, 10, 4, 5]
》》》(1, 2, 3, 4, 5)
在函数内部进行强转,并返回值,可以看到a的值改变了
def myfc(x): x=list(a) x[2]=10 return x a=(1,2,3,4,5) print(a) a=myfc(a) print(a)》》》(1, 2, 3, 4, 5)
》》》[1, 2, 10, 4, 5]