函数

 (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 指向它。
原文地址:https://www.cnblogs.com/bashliuhe/p/12610037.html