定义函数时,小括号中的参数,用来加收参数用的
调用函数时,小括号中的参数,用来传递给函数用的
def add(num1:int,num2:int)->int:
if isinstance(num1,int) and isinstance(num2,int):
return num1+num2
else:
return -1
num1=2
num2=1
result1=add(num1,num2)
print(result1)
num3='a'
num4='d'
result2=add(num3,num4)
print(result2)
结果
3
-1
默认参数可以降低调用函数的难度
可变参数不能作为默认参数
def mypow(x,y=2,z=None):
"""求次方,默认求2次方"""
return x**y
if __name__ == '__main__':
print(mypow(2))
print(mypow(2,3))
结果
4
8
def connect_mysql(user,passwd,host='localhost',port=3306,charset='utf-8'):
print('connect mysql....',user,passwd,host,port,charset)
if __name__ == '__main__':
connect_mysql('root','redhat')
结果
connect mysql.... root redhat localhost 3306 utf-8
可变参数就是传入的参数个数是可变的,用*args表示
def square_sum(*args):
print(args)
square_sum(1)
square_sum(1,2)
square_sum(1,2,3)
结果
(1,)
(1, 2)
(1, 2, 3)
def square_sum(*nums):
"""求多个数的平方和"""
result=0
for num in nums:
result=result+pow(num,2)
return result
if __name__ == '__main__':
result=square_sum(1,2,3)
print(result)
结果
14
如果已经有一个list或者tuple,如何调用一个可变参数?
#求100以内所有奇数的平方和,
#这里有一个元组,解包为可变参数传入
nums=range(1,100,2)
sum=square_sum(*nums)
print(sum)
结果
166650
def student_info(name,age,**kwargs):
print(name,age,kwargs)
#函数调用
student_info('xiaoming',18)
student_info('xiaohong',20,hobit='python program',city='西安')
结果
xiaoming 18 {
}
xiaohong 20 {
'hobit': 'python program', 'city': '西安'}
类似可变参数解包
在list或tuple前面加两个* 号
infomation ={
'city':'浙江',
'hobby':'玩游戏'
}
student_info('qianzong',23,**infomation)
结果
qianzong 23 {
'city': '浙江', 'hobby': '玩游戏'}