• 函数的基本使用


    Python-10

    @(Python)

    函数的基本使用

    一、什么是函数

    • 函数是具备某一功能的工具
    • 函数使用原则:必须遵循先定义后调用的原则
    • 事先将工具准备好,即函数的定义
    • 遇到场景拿来就用,即函数的调用

    二、为什么要用函数

    • 避免-程序冗长
    • 增强-程序的扩展性
    • 增加-程序的可读性

    三、函数的定义

    1. 定义函数

    ① 函数定义语法

    def 函数名(参数1,参数2):
    
        '''
        # 函数功能的描述信息
        :param 参数1:      # 可写描述
        :param 参数2:      # 可写描述
        :return: 返回值描述
        '''
        代码1    # 缩进4个空格
        代码2
        代码3
        ...
        return   # 返回值
    

    说明:

    • 参数可以理解为变量
    • return可以返回指定的值

    ② 函数的调用

    • 语法:函数名(),即,函数名加括号
    • 函数名,类似于变量,函数也对应有内存地址

    2. 函数的定义阶段与调用阶段

    • 函数的使用必须遵循先定义,后调用的原则

    ① 函数的定义阶段

    • 只会检测函数体的语法,不执行函数体代码,语法没有问题后,会申请内存空间存储

    ② 函数的调用阶段

    • 函数可以调用函数,但是要注意执行顺序

    3. 函数定义的三种形式:

    • 定义函数时,参数用来接收函数体外部,传入的值,参数其实就是一个变量名
    • 如果需要传值就使用参数,反之就不需要

    函数参数的应用场景:

    • 如果函数体依赖外部传值,必须定义有参函数
    • 如果函数体不依赖外部传值,必须定义无参函数

    ① 无参函数

    • 定义函数时,函数后括号内没有参数,称为无参函数
    def func():
        pass
    
    • 特点:定义为无参函数,意味着,调用时也不需要传入参数

    ② 有参函数

    • 定义有参函数:
    def func(x,y):
        res=x+y
    
    • 使用参数传值:
    func(10,20)
    

    ③ 空函数

    • 写函数之前使用pass 占位,便于梳理思路
    def func():
        pass
    
    def func(x):
    	pass
    

    4. 使用函数

    ① 没用函数之前:

    # 用户注册
    # 输入账号和密码
    user_name=input('注册用户名:').strip()
    user_passwd01=input('密码:').strip()
    user_passwd02=input('确认密码:').strip()
    # 验证两次密码是否正确
    if user_passwd01 == user_passwd02:
    # 存入文件
        with open(r'db.txt',mode='at',encoding='utf-8') as db_file:
            name_passwd='%s:%s
    ' %(user_name,user_passwd01)
            db_file.write(name_passwd)
            db_file.flush()   # 表示立马刷新到磁盘,一般不用会影响性能
            print('注册成功')
    else:
        print('两次密码不一致')
    
    # 用户认证
    # 输入用户名和密码
    inp_user_name=input('登录用户名:').strip()
    inp_user_passwd=input('登录密码:').strip()
    # 将用户名和密码与文件中的比对
    with open(r'db.txt',mode='rt',encoding='utf-8') as auth_file:
        for line in auth_file:
            info=line.strip('
    ').split(':')
            if inp_user_name == info[0] and inp_user_passwd == info[1]:
                print('login successfull')
                break
        # 这个else应该放在这一级
        else:
            print('用户或密码错误')
    

    ② 使用函数之后:

    def check_username():
        # 输入账号
        while True:
            user_name=input('注册用户名:').strip()
            if user_name.isalpha():
                return user_name
            else:
                print('用户名必须是字母')
    
    def check_userpasswd():
        # 输入密码
        while True:
            user_passwd01=input('密码:').strip()
            user_passwd02=input('确认密码:').strip()
            if user_passwd01 == user_passwd02:
                return user_passwd01
            else:
                print('两次密码不一致')
    
    def db_write(user_name,user_passwd01):
        # 写入文件
        with open(r'db.txt',mode='at',encoding='utf-8') as db_file:
            name_passwd='%s:%s
    ' %(user_name,user_passwd01)
            db_file.write(name_passwd)
            db_file.flush()   # 表示立马刷新到磁盘,一般不用影响性能
            print('注册成功')
    
    def register():
        '''
        注册功能
        :return:
        '''
        # 检查用户名
        x=check_username()
        # 检查密码
        y=check_userpasswd()
        # 写入文件
        db_write(x, y)
    
    register()
    
    def auth():
        '''
        用户认证
        :return:
        '''
        # 输入用户名和密码
        inp_user_name=input('登录用户名:').strip()
        inp_user_passwd=input('登录密码:').strip()
        # 将用户名和密码与文件中的比对
        with open(r'db.txt',mode='rt',encoding='utf-8') as auth_file:
            for line in auth_file:
                info=line.strip('
    ').split(':')
                if inp_user_name == info[0] and inp_user_passwd == info[1]:
                    print('login successfull')
                    break
            # 这个else应该放在这一级
            else:
                print('用户或密码错误')
    
    auth()
    

    说明:return是函数的终止标志,也用于返回值

  • 相关阅读:
    最艰难的采访IT公司ThoughtWorks代码挑战——FizzBuzzWhizz游戏
    SQL Server 存储字符数较大字段的问题
    c# var的含义与用法
    ListBox和ComboBox绑定数据简单例子
    “C# 未在本地计算机上注册microsoft.Jet.OLEDB.12.0”的解决方案
    [转] c# 操作Word
    C++ Regsvr32订购具体解释
    数字计算的有序排列的号码出现二分法
    合作信息处理模型
    内存四个领域,变量声明和定义,注册,c内联汇编,auto,堆,不变,静态变量
  • 原文地址:https://www.cnblogs.com/itone/p/9443623.html
Copyright © 2020-2023  润新知