一.函数定义

def  hello():
    .
    .   
    .

二.形参、实参

def calc(x,y):        #此处的x,y就是形参,被调用时才分配内存,调用完成后就删除

    res = x**y

    print(res)

a = int(input(">>>"))

b = int(input(">>>"))

c = calc(a,b)         #此处的a,b就是实参,不管调不调用都必须有确定的值

三.默认参数

def name_register(name, age, course="py", country="CN"):  #course和country都是默认函数,此函数必须放在位置参数后
    print(name, age, course, country)

name_register(input("name"),int(input("age")))

四.关键参数

调用关键参数可以这样调用

def name_register(name,age, course="py", country="CN"):  
    print(name, age, course, country)

name_register("王大锤",course="py",age=22)    #函数调用和位置参数,此时course就是一个关键参数,age仍然可以正常显示只需要用age=23这样的语句
name_register("王大锤",course="py",22)       #绝对不可以使用这样的语句调用

五.非固定参数

1).元组

方法一:

def send_alert(msg,*user):  #当形参前加一个*号时,传递的参数就不再是固定个数,而是把传送到的数据打包成一个元组,此处一般不用*user而是用*arg
for u in user: print("发送msg给",u) send_alert("alert","user1","user2","user3".....)  #这样就可以做到用一条语句给多个人发送警报  

 方法二:

def send_alert(msg,*user):

    for u in user:

        print("发送msg给",u)

send_alert("alert",*["user1","user2","user3".....])  #以一个列表的形式传送时,一定要注意在列表前加*,否则会把整个列表打包成一个元组

注意:使用*arg这种参数时,一定把带*的参数放到最后

def send_alert(msg,*user,age):

    for u in user:

        print("发送msg给",u)

send_alert("alert","user1","user2","user3",22)

age如果放到*user后,user1、2、3,22都会被算到user中,age会因为得不到参数而报错

2).字典

def send_alert(msg,*args,**kwargs):

    for u in user:

        print("发送msg给",u)

d = {"key":"value"}

send_alert("alert",*["user1","user2","user3"],**d)

元组需要一个" * ",而字典需要" ** "

六.函数返回值

def stu_register(name,age,course = "python", country = "CHINA"):
if age < 23:
return True
else:
return False
data = stu_register(input("name:"),int(input("age:")),"doctor","CN")
if data:
print("注册成功")
else:
print("too old")

 函数执行过程中遇到return就是停止执行,并返回返回值,如果没有设置返回值默认为None