函数
def sum(num1,num2):
	"两数之和" # 函数说明
	return num1+num2
# 调用函数
print(sum(5,6))
def sum(num1,num2):
	# 两数之和
	if not (isinstance (num1,(int ,float)) and isinstance (num2,(int ,float))):
		raise TypeError('参数类型错误') # 这样可以做类型检查
	return num1+num2
print(sum('a',2))
def  division ( num1, num2 ):
	# 求商与余数
    a = num1 % num2
    b = (num1-a) / num2
    return b , a
num1 , num2 = division(9,4) # 可以有多个返回值,实际上是一个元组
tuple1 = division(9,4)
print (num1,num2)
print (tuple1)
def print_user_info(name, age, sex = '男'):# 可以有缺省参数,但是只有在形参表末尾的那些参数可以有默认参数值
    # 打印用户信息
    print('昵称:{}'.format(name), end = ' ')
    print('年龄:{}'.format(age), end = ' ')
    print('性别:{}'.format(sex))
    return;
# 调用 print_user_info 函数
print_user_info('lzy', 18, '女')
print_user_info('zsh', 25)
def print_info(a, b = []):# 默认参数的值是不可变的对象,如果对其改变会带来麻烦
    print(b)
    return b ;
result = print_info(1)
result.append('error')
print_info(2)
_no_value =object()
def print_info(a, b = _no_value):# 判断默认参数有没有值传递进来
    if b is _no_value :
        print('b 没有赋值')
    return
print_info(1)
def print_user_info(name, age, sex = '男'):
    # 打印用户信息
    print('昵称:{}'.format(name), end = ' ')
    print('年龄:{}'.format(age), end = ' ')
    print('性别:{}'.format(sex))
    return
print_user_info(name = 'lzy', age = 18, sex = '女')# 利用形参的名字设置位置参数
print_user_info(name = 'lzy', sex = '女', age = 18)
def print_user_info(name, age, sex = '男', **hobby):# *hobby是可变参数,hobby其实就是一个tuple,**hobby是关键字参数,hobby就是一个dict
    # 打印用户信息
    print('昵称:{}'.format(name), end = ' ')
    print('年龄:{}'.format(age), end = ' ')
    print('性别:{}'.format(sex), end = ' ')
    print('爱好":{}'.format(hobby))
    return
print_user_info(name = 'lzy', age = 18, sex = '女', hobby = ('打篮球','打羽毛球','跑步'))