关于Python函数括号内写不写参数的问题?

#此时t是全局变量,这个gain函数,括号内有没有t都无所谓
t= int(input('请输入该员工工作时长(月数):'))
def gain(): 
    if t < 6:
        money = 500
    elif 6 <= t < 12:
        money = 120 * t
    else:
        money = 180 * t
    return money
print(gain())

#---------------------------------------------------

#这个gain()函数,括号内有参数t就会报错,为什么?
def gain():
    t= int(input('请输入该员工工作时长(月数):'))
    if t < 6:
        money = 500
    elif 6 <= t < 12:
        money = 120 * t
    else:
        money = 180 * t
    return money
print(gain())

#---------------------------------------------------

#这个gain(t)函数,括号里没有参数t就会报错,这又是为什么?
#t的值同样都是由input函数向外界获取的
def gain(t):
    if t < 6:
        money = 500
    elif 6 <= t < 12:
        money = 120 * t
    else:
        money = 180 * t
    return money
def A():
    t= int(input('请输入该员工工作时长(月数):'))
    print(gain(t))
A()

 

第二段程序有t会报错的原因是因为:函数gain(t)是需要在调用函数的时候在里面输入一个具体的t的值。

第三段程序会报错的原因是t没有在全局定义,也没有局部定义,如果不通过函数定义t而是直接用的话会报错。

 

调用函数时传递的参数的个数必须与声明函数时定义的参数的个数一致。

 

def gain(): #声明函数时没有定义参数

    return 5

 

print(gain()) #调用函数时就不能传递参数

-----------------------------------------

def gain(t): #声明函数时定义一个参数

    return t*5

 

print(gain(2)) #调用函数时就必须传递一个参数

 

-----------------------------------------

def gain(t=2): #如果声明函数时定义参数设置了默认值

    return t*5

 

print(gain()) #则调用函数时可以不传递这个参数