初识函数

函数

什么是函数

函数相当于是工具(具有一定功能)

不用函数

eg:修理工需要工具的时候,原地打造工具,每次用完都丢掉,下次使用再继续原地打造。

用函数

eg:修理工提前准备好工具,什么时候用就直接拿出来使用

为什么要有函数

  • 循环

    相同的代码在相同的位置反复执行

  • 函数

    相同的代码在不同位置反复执行

ps:相同的代码不是真正一摸一样而是可以通过传入数据不同而做出不同改变

怎么用函数

函数的语法结构

def 函数名(参数):
    """函数注释"""
    函数体代码
    return 返回值
  1. def

    定义函数关键字

  2. 函数名

    命名等同于变量名

  3. 参数

    可有可无 主要是在使用函数的时候规定要不要外界传数据进来

  4. 函数注释

    类似于工具说明书

  5. 函数体代码

    是整个函数的核心 主要取决于程序员的编写

  6. return

    使用函数之后可以返回使用者的数据 可有可无

函数的定义与调用

  1. 函数定义阶段只检测语法 不执行代码

    def func():
        pass
    
  2. 函数在调用阶段才会执行函数体代码

    func()
    
  3. 函数必须先定义后调用

  4. 函数定义使用关键字def函数调用使用===: 函数名加括号

    如果有参数则需要在括号内按照相应的规则传递参数

函数分类

  1. 空函数

    函数体代码为空 使用 pass或者 ... 补全的空函数主要用于项目前期的功能框架搭建

    def register():
        """注册功能"""
        pass
    
  2. 无参函数

    定义函数的时候括号内没有参数

    def index():
        print("from index function")
    
  3. 有参函数

    定义函数的时候括号内写参数,调用函数的时候括号内传参数

    def fucn(a):
        print(a)
    

函数的返回值

  1. 什么是返回值

    调用函数之后返回给调用者的结果

  2. 如何获取返回值

    变量名 赋值符号 函数的调用

    res = func() 先执行那func函数然后将返回值给变量res

  3. 函数返回值的多种情况

    1. 函数体代码中没有return关键字 默认返回None
    2. 函数体代码有return如果后面没有写任何东西还是返回None
    3. 函数体代码有return并且后面写什么就返回什么
    4. 函数体代码有return并且后面又多个数据,则自动组成元组返回
    5. 函数体代码遇到return会立刻结束

函数的参数

  • 形式参数

    在函数定义阶段括号内填写的参数,简称形参

  • 实际参数

    在函数调用阶段括号内填写参数,简称实参

形参与实参的关系

形参类似于变量名,在函数定义阶段可以随便写,最好见名知意

"""比如需要传用户的 用户名和密码"""
def register(name, pwd):
    pass

实参类似于数据值,在函数调用阶段与形参临时绑定,函数运行结束立刻断开。

def register(name, pwd):
    pass
register("jason", 123)

形参namejason 绑定 形参pwd123绑定

作业

1.整理两天的内容 完成相应作业考核
2.使用函数将员工管理系统和文件进阶注册登录封装
# 使用函数将员工管理系统和文件进阶注册登录封装

def register():
    """注册功能"""
    while True:
        name = input("请输入用户名:").strip()
        if name.lower() == "q":
            break
        # 打开文件读数据
        with open("userinfo.txt", "r", encoding="utf8") as read_file:
            # 一行一行的读
            for line in read_file:
                # 切分比对用户名是否存在
                if name == line.split("|")[0]:
                    print("用户名已存在!")
                    break
            else:
                # 打开文件写入数据
                with open("userinfo.txt", "a", encoding="utf8") as write_file:
                    pwd = input("请输入密码:").strip()
                    # 格式化数据
                    data = "{}|{}\n".format(name, pwd)
                    write_file.write(data)
                    print("注册成功!")


def login():
    """登陆功能"""
    while True:
        user_name = input("请输入用户名:").strip()
        if user_name.lower() == "q":
            break
        user_pwd = input("请输入密码:").strip()
        with open("userinfo.txt", "r", encoding="utf8") as read_file:
            for line in read_file:
                name, pwd = line.split("|")
                if user_name == name and user_pwd == pwd.strip("\n"):
                    print("登陆成功!")
                    break
            else:
                print("用户名和密码错误")


data_dict = {
    "1": register,
    "2": login,
    "3": exit
}
while True:
    print("""
    1.注册功能
    2.登录功能
    3.退出
    """)
    choice = input("请输入功能编号:").strip()
    if choice.lower() == "q":
        break
    elif not choice.isdigit():
        print("请输入数字!")
        continue
    data_dict.get(choice)()

3.预习明日内容
	参数、名称空间、作用域
posted @ 2022-10-09 20:59  可否  阅读(28)  评论(0)    收藏  举报