(1)
>>> def add_args(arg1,arg2): print(arg1+arg2) >>> def run_someting_with_args(func,arg1,ag2): func(arg1,ag2) ''' 定义一个函数run_something_with_args,它带有三个参数: func---可以运行的函数 arg1---func函数的第一个参数 arg2---func函数的第二个参数 ''' >>> run_something_with_args(add_args,5,9) 14
在函数run_something_with_args()内部,函数名add_args被赋值给参数func,5和9分别赋值给arg1和arg2。程序最后执行:
add_args(5,9)
可以在此用上*args(位置参数收集)和**kwargs(关键字参数收集)的技巧。备注:sum()函数,是python的一个内建函数用来计算(整数或者浮点数)参数的和
>>> def sum_args(*args): return sum(args) >>> def run_with_positinoal_args(func,*args): retun func(*args) SyntaxError: invalid syntax >>> def run_with_positinoal_args(func,*args): return func(*args) >>> run_with_positinoal_args(sum_args,1,2,3,4) 10 >>>
(2)
#传不可变对象实例 def ChangeInt(a): print('修改前a的值:',a) a = 10 print('修改后a的值:',a) b = 2 ChangeInt(b) print(b) 运行结果: 修改前a的值: 2 修改后a的值: 10 分析: ChangeInt(b)把b的值复制给a,a未修改前a=b=同一内存地址;a=10重新修改后,a重新生成一个对象指针指向了10,但是b的指针还是指向的2,所以b的值为2而非10
实例中有 int 对象 2,指向它的变量是 b,在传递给 ChangeInt 函数时,按传值的方式复制了变量 b,a 和 b 都指向了同一个 Int 对象,在 a=10 时,则新生成一个 int 值对象 10,并让 a 指向它。