zoukankan      html  css  js  c++  java
  • python 11 函数基础

    一、函数基础

    1、什么是函数

    ​ 函数就相当于具备重复使用功能的工具

    2、为何要用函数

    ​ 1、解决组织结构不清晰,可读性差问题
    ​ 2、解决代码冗余问题
    ​ 3、解决可维护性、扩展性差问题

    3、如何用函数

    先定义后调用
    定义函数发生的事情
    1、申请内存空间保存函数体代码
    2、将上述内存地址绑定函数名
    3、定义函数不会执行函数体代码,但是会检测函数体语法

    调用函数发生的事情
    1、通过函数名找到函数的内存地址
    2、然后加括号就是在触发函数体代码的执行
    print(func)
    func()

    1.定义的语法

    def 函数名(参数1,参数2,...):
        """文档描述"""
        函数体
        return 值
    

    形式一:无参函数

    def func():
        # x 定义函数不会执行函数体代码,但是会检测函数体语法
        # print(
        print('哈哈哈')
    

    无参函数的应用场景

    def interactive():
        name=input('username>>: ')
        age=input('age>>: ')
        gender=input('gender>>: ')
        msg='名字:{} 年龄:{} 性别'.format(name,age,gender)
        print(msg)
    
    interactive()
    interactive()
    interactive()
    interactive()
    

    形式二:有参函数

    def func(x,y): # x=1  y=2
        print(x,y)
    func(1,2)
    

    有参函数的应用场景:可以输入参数灵活性更高

    def add(x,y): # 参数-》原材料
        # x=20
        # y=30
        res=x + y
        # print(res)
        return res # 返回值-》产品
    res=add(20,30)
    print(res)
    

    形式三:空函数,函数体代码为pass

    def func(x, y):
        pass
    

    空函数的应用场景:程序结构的构思

    def auth_user():
        """user authentication function"""
        pass
    
    def download_file():
        """download file function"""
        pass
    
    def upload_file():
        """upload file function"""
        pass
    
    def ls():
        """list contents function"""
        pass
    
    def cd():
        """change directory"""
        pass    
    

    二、函数调用:函数名+括号

    1、语句的形式

    interactive()
    add(1,2)
    

    2、表达式形式

    def add(x,y): # 参数-》原材料
        res=x + y
        return res # 返回值-》产品
    #赋值表达式
    res=add(1,2)
    print(res)
    #数学表达式
    res=add(1,2)*10
    print(res)
    

    3、做参数形式

    res=add(add(1,2),10)
    print(res)
    

    三、函数返回值

    return是函数结束的标志,即函数体代码一旦运行到return会立刻
    终止函数的运行,并且会将return后的值当做本次运行的结果返回:

    1、返回None:函数体内没有return

    return
    return None

    2、返回一个值:return 值

    def func():
        return 10
    res=func()
    print(res)
    

    3、返回多个值:用逗号分隔开多个值,会被return返回成元组

    def func():
        return 10, 'aa', [1, 2]
    
    res = func()
    print(res, type(res))
    

    习题:

    1、编写文件修改功能,调用函数时,传入三个参数(修改的文件路径,要修改的内容,修改后的内容)既可完成文件的修改

    def modifi (path1,msg1,msg2)
        with open(r'path1',mode='rt',encoding='utf-8') as f:
            res=f.read()
            data=res.replace('msg1','msg2')
        with open(r'path1',mode='wt',encoding='utf-8') as f1:
            f1.write(data)
    

    2、编写tail工具

    def tail ():
        import time
        with open('access.log', mode='rb') as f:
            f.seek(0,2)
            while True:
                line=f.readline()
                if len(line) == 0:
                    time.sleep(0.3)
                else:
                    print(line.decode('utf-8'),end='')
    

    3、编写注册功能

    def register ():
        name=input('请输入账户:').strip()
        pwd=input('请输入密码:').strip()
        with open (r'1.txt',mode='ab') as f:
            res=f'{name}:{pwd}
    '
            f.write(res)
    

    4、编写用户认证功能

    def approve ():
        tag = True
        while tag:
            username = input('请输入用户名: ').strip()
            with open('user_info4.txt', 'r', encoding='utf-8') as f, open('user_info5.txt', 'w', encoding='utf-8') as w:
                for line in f:
                    user, pwd, locked = line.strip().split(':')
                    # print(user, pwd, type(locked))
                    locked = int(locked)
    
                    if locked == 3:
                        print('当前用户已被锁定')
    
                    if username == user:
                        while locked < 3:
                            password = input('请输入密码: ').strip()
                            if password == pwd:
                                print('登录成功!')
                                tag = False
                                break
                            else:
                                print('密码错误!')
                                locked += 1
    
                    w.write(f'{user}:{pwd}:{locked}
    ')
    
            import os
            os.remove('user_info4.txt')
            # 将user_info5.txt修改为user_info4.txt
            os.rename('user_info5.txt', 'user_info4.txt')
    
  • 相关阅读:
    php数组的使用
    php数组的定义、php数组的类型
    小米手机安卓手机微信里出现意外的边框线,border:0也没用
    php实现WEB在线文件管理器
    安装了https ssl证书,但浏览器显示并非完全安全(此页面内容部分不安全)
    thinkphp无限分类模块实现
    常见的移动web问题,终端触摸交互,各种bug坑如何解决
    现代都市风 移动端可折叠导航菜单
    电器类电商网站分类大菜单,配色超舒服~
    帮助中心模板框架--简约小清新风格
  • 原文地址:https://www.cnblogs.com/Franciszw/p/12513546.html
Copyright © 2011-2022 走看看