python中复合函数的参数传递

1.()与(,)的区别

def func(para):
    print(para)
func((1))
func((1,))

可知若只传入一个数则前者传到函数中的是一个数,后者是一个元组

def func(para):
    print(para)
func((1,2))
func((1,2,))

若传入两个数则无区别

2.这些知识其实我之前已经了解了,但由于又忘了,所以在编程时出现了错误,今天将实参传到虚参时,一直被虚参设置的默认值赋值。问题如下:

def func1(para1,para2=60):
    print(para1)
    print(para2)
def func2(para1,para2=60):
    func1(para1,para2)
运行func2(1,30)这样输出没问题,输出就是1与30

def func1(para1,para2=60):
    print(para1)
    print(para2)
def func2(para1,para2=60):
    func1(para1,para2=60)
运行func2(1,30),输出为1与60,因为func2中的func1的para2相当于实参,其被赋值为60

def func1(para1,para2=[],para3=60):
    print(para1)
    print(para3)
def func2(para1,para2=[],para3=60):
    func1(para1,para3)
运行func2(1,30),输出为1与60,原因是fun2将para2赋给func1的para3,而func1将para3的值传给位置参数para2,最后para3由于没有参数输入,输出的就是默认参数。即在func2中的func1的参数para1与para3只是实参并不是形参

我的解决办法,当然本人有点笨,如果您有什么见解请留言:

def func1(para11,para12=60):
    print(para11)
    print(para12)
def func2(para21,para22=60):
    para11=para21
    para12=para22
    func1(para11,para12)
这样运行func2(1,30),便输出的是1与30

当出现多个位置参数时,需要写清楚传入哪个参数:

def func1(para11,para12=[],para13=60):
    print(para11)
    print(para13)
def func2(para21,para22=[],para23=60):
    para11=para21
    para12=para22
    para13=para23
    func1(para11,para12,para13)
这样运行func2(1,para23=30),输出的也是1与30.

发布了53 篇原创文章 · 获赞 23 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37083038/article/details/103100124