#1.函数的功能：完成某个功能的代码块，用来给别人复用
#2.函数定义

sum=0
def mianji(chang,kuan):
    s = chang*kuan
    # print('面积为',s)
    return s
#这个程序的功能是：接收2个参数chang，kuan，然后计算面积返回。
def tiji(chang,kuan,gao):
    return chang*kuan*gao
#3.调用函数：语法：函数名(参数)
print(mianji(3,12))#表示长是3，宽是12
print(mianji(12,3))#表示长是12，宽是3
print()
#4.函数参数：（里面的）
#4.1分类1：形式参数和实际参数
##其中，形式参数是形式上的，即函数定义时的参数名。
##而实际参数是函数实际调用的时候传入的值。
#4.2分类2：可变对象和不可变对象的参数传递
##不可变：字符串，数字，元祖。可变：列表，字典。
##记住：函数参数传递可变对象时，传的是它本身，也就是说如果函数中修改了这个对象，原来的也会变。
###如果传递的是不可变对象，传的是副本，也就是说如果函数中修改了这个对象，原来的不会变。
def chanlist(b):
    b.append(5)
    return b
b = [1,2,3,4]
chanlist(b)
print(b)
def channum(a):
    a =100
    return a
b=6
channum(b)
print(b)

#4.3分类3：参数类型
'''
第一：位置参数（必须参数）
第二：关键字参数：函数调用时显式赋值，如：
def add(a,b):
  return a+b

add(b=2,a=3)

第三：默认值参数
def add(a,b=100):
  return a+b

add(3)
add(3,100)
add(a=3)

第四：不定长参数1-元祖
def add(a,*num):
  return sum(num)+a

add(1,2,3,4,5,6,7)
add(6,9,8,7,6)

第五：不定长参数2-字典
第六：组合参数

'''