Python入门基础(章节 六 参数)

xiaoxiao2021-03-01  25

参数

1.1 参数的定义 形参定义:在函数定义的时候用到的参数,没有具体值,只是一个占位符称为形参。 实参:在调用函数的时候输入的值。 在def语句中。位于函数名后面的变量通常称为形参,而调用函数时提供的的值称为实参。 以前接触过c/c++的时候

>>>int f(int a,int b)//自定义函数中括号里的a,b就是形参,它在函数自定义过程中实际并不占内存 ... >>>int main() >>>{ >>>int m=1,n=2,result; >>>result=f(m,n);//这里的m,n就是实参 >>>/* >>>运行过程是: >>>int a,b; >>>a=m; >>>b=n; >>>即临时创建两个变量a,b,然后将实参的值赋予形参,然后形参按照f函数进行运>>>算。 >>>*/ >>>return 0; }

在Python里面

>>>def add(a, b) : ... return a+b ... >>>if __name__=="__main__" >>> x = 2 >>> y = 3 >>> print add(x, y)

程序如上,在函数定义中的a,b是形参,函数调用中的x,y是实参


1.2 参数的修改

>>>def a(n): ... n = 'Jack' ... >>>name = 'aaa' >>>a(n) >>>name >'Jack'

在a内,将新值赋给参数n,但对name的值没有影响,结果表明这是一个不同的变量。

>>>name ='Jack' >>>n = 'b' >>>name = n #赋值是在一个函数内进行的 >>>name >b

name的值变了,即函数内部赋值时,函数外部不受影响。参数储存在局部作用域之内。


字符串和元组是不能修改的,但参数为可变结构(如列表)

>>>def change(n): ... n[0] = 'Jack' ... >>>names = ['a','b'] >>>change(names) >['Jack','b']

以上是在函数内修改参数,用了函数调用。如果不用函数调用,修改参数

>>>names = ['a','b'] >>>n = names >>>n[0] = 'Jack' >>>name >['Jack','b']

将同一个列表赋值给两个变量时这两个变量将同时指向这个列表。为了避免这种结果,必须创建列表的副本。对列表进行切片操作时,返回的切片都是副本。如果创建的是整个列表的切片,得到的将是列表的副本。

>>>names = ['a','b'] >>>n = names[:]

n和names包含两个相等但不同的列表。

>>>n == names >True >>>n is names >False

如果修改n的元素,是不会影响names

>>>n[0] = 'c' >>>n >['c','b'] >>>names >['a','b']

总而言之n是副本,修改副本的值是不会影响原始列表names


1.3 位置参数

def addfa(a,b): result = 1 if b >0: a+=1 result = result*b+a return result print (addfa(3,4))

addfa(a,b)里面有两个参数,a和b是位置参数,再调用时按照顺序依次传递给a和b。 位置参数也叫必选参数


1.3 默认参数

默认参数最大的优点在于可以指定默认值,参数作用清晰。

def addfa(a,b=1): result = 1 if b >0: a+=1 result = result*b+a return result print (addfa(3))

第一:必选参数在前,默认参数在后,否则python解释器会报错,在程序当中就是a在前面。

第二:默认参数一定要指向不变对象

如果不懂python在可变和不可变对象,请参考 https://www.jianshu.com/p/c5582e23b26c


1.4 可变参数 定义:在参数前面加了一个*号,函数可以接收0个或多个值作为参数,返回的结果是一个元组。一般默认的参数为*args *args:将参数组织成元组;

#*args:将参数组织成元组; def print_params(*args): print(args) >> print_params('Testing') ('Testing', ) >> print_params(1, 2, 3) (1, 2, 3) #------------------------------------ #与普通参数的组合使用: def print_params(title, *args): print(title) print(args) >> print_params('Params', 1, 2, 3) Params (1, 2, 3)

星号不会收集关键字参数(z=3),要收集关键字参数,可以使用两个星号,一般默认为**kwargs,返回的是一个字典而不是元组

def print_params(x, y, z=3, *parms, **kw): print(x, y, z) print(params) print(kw) >> print_params(1, 2, 3, 5, 6, 7, foo=1, bar=2) 1 2 3 (5, 6, 7) {'foo':1, 'bar':2}

1.5 参数的分配

def add(x, y): return x+y params = (1, 2) >>> add(*params) 3

通过调用函数时使用运算符实现的,部分位于参数的末尾,通过*可将字典中的值分配给关键字参数。

转载请注明原文地址: https://www.6miu.com/read-4150169.html

最新回复(0)