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

扫描二维码关注公众号,回复: 9905389 查看本文章
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}\n'
        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}\n')

        import os
        os.remove('user_info4.txt')
        # 将user_info5.txt修改为user_info4.txt
        os.rename('user_info5.txt', 'user_info4.txt')

猜你喜欢

转载自www.cnblogs.com/Franciszw/p/12513546.html