Python基础(6)-函数基础

1.什么是函数

函数的本质就是功能的封装。

函数的作用:

  • 提升代码的重复利用率,避免重复开发相同代码
  • 提高程序开发效率
  • 便于程序维护

2.函数的定义

1)形参:

声明函数时()中的参数是形参

形参只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。   

形参只在函数内部有效。函数调用结束返回主调用函数后则不能再使用该形参变量。

2)实参:

调用函数时()中的参数是实参,

实参可以是常量、变量、表达式、函数等   

实参在函数调用时,必须有确定的值,以便把这些值传送给形参。

3.函数参数

1)默认参数:

def stu_register(name,age,country,course):
    print("----注册学生信息------")
    print("姓名:",name)
    print("age:",age)
    print("国籍:",country)
    print("课程:",course)

stu_register("王山炮",22,"CN","python_devops")
stu_register("张叫春",21,"CN","linux")
stu_register("刘老根",25,"CN","linux")

country 这个参数 基本都 是”CN”, 就像我们在网站上注册用户,像国籍这种信息,默认就会是 中国, 这就是通过默认参数实现的。

2)关键参数:

正常情况下,给函数传参数要按顺序,不想按顺序就可以用关键参数,只需指定参数名即可(指定了参数名的参数就叫关键参数),关键参数必须放在位置参数(以位置顺序确定对应关系的参数)之后

def stu_register(name, age, course='PY' ,country='CN'):
    print("----注册学生信息------")
    print("姓名:", name)
    print("age:", age)
    print("国籍:", country)
    print("课程:", course)

# 正确调用示范
stu_register("王山炮",course='PY', age=22,country='JP' )

# 错误调用示范
stu_register("王山炮",course='PY',22,country='JP' )
stu_register("王山炮",22,age=25,country='JP' )

3)非固定参数:

若你的函数在定义时不确定用户想传入多少个参数,就可以使用非固定参数

# *args 会把多传入的参数变成一个元组形式
def stu_register(name,age,*args): 
    print(name,age,args)

stu_register("Alex",22)
>>>输出结果:
#Alex 22 () #后面这个()就是args,只是因为没传值,所以为空

stu_register("Jack",32,"CN","Python")
>>>输出结果:
# Jack 32 ('CN', 'Python')

-----------------------------------------------------------------------------------------
# *kwargs 会把多传入的参数变成一个dict形式
def stu_register(name,age,*args,**kwargs): 
    print(name,age,args,kwargs)

stu_register("Alex",22)
>>>输出结果:
#Alex 22 () {}#后面这个{}就是kwargs,只是因为没传值,所以为空

stu_register("Jack",32,"CN","Python",sex="Male",province="ShanDong")
>>>输出结果:
# Jack 32 ('CN', 'Python') {'province': 'ShanDong', 'sex': 'Male'}

4.函数返回值

函数在执行过程中只要遇到return语句,就会停止执行并返回结果。

def stu_register(name, age, course='PY' ,country='CN'):
    print("----注册学生信息------")
    print("姓名:", name)
    print("age:", age)
    print("国籍:", country)
    print("课程:", course)
    if age > 22:
        return False
    else:
        return True
registriation_status = stu_register("王山炮",22,course="PY全栈开发",country='JP')
if registriation_status:
    print("注册成功")
else:
    print("too old to be a student.")

多个返回值:

def add(*args):
    p = a + b
    q = c + d
    
    return p,q

if __name__=="__main__":
    
    x,y = add(1,2,3,4)  # x,y分别等于p,q

5.全局变量与局部变量

在子程序中定义的变量称为局部变量,在程序的一开始定义的变量称为全局变量。
全局变量作用域是整个程序,局部变量作用域是定义该变量的子程序。
当全局变量与局部变量同名时:在定义局部变量的子程序内,局部变量起作用;在其它地方全局变量起作用。

 

posted @ 2018-09-23 20:43  麦小秋  阅读(186)  评论(0)    收藏  举报