函数的基本使用

目录

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\n' %(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('\n').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\n' %(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('\n').split(':')
            if inp_user_name == info[0] and inp_user_passwd == info[1]:
                print('login successfull')
                break
        # 这个else应该放在这一级
        else:
            print('用户或密码错误')

auth()

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

猜你喜欢

转载自www.cnblogs.com/itone/p/9443623.html
今日推荐