• 面向过程编程


    一、面向过程编程

    面向过程是一门编程思想

    面向 | 过程 | 编程:

    ​ 核心是‘过程’,过程指的是一种解决问题的步骤,即先做什么再做什么,基于编程思想写程序,好比在设计一条工厂流水线,一种机械师的思维方式

    • 优点
      • 将复杂的问题流程化,进而简单化
    • 缺点
      • 可扩展性差(牵一发而动全身,若修改当前程序设计的某一部分,会导致其他部分同时需要修改,扩展性差)
    def get_user_pwd(): # 获取用户注册的用户名和密码
        while True:
            username = input('请输入注册的用户名:').strip()
            if username.isalpha():
                break
            else:
                print('您输入的用户名不合法,请重新输入')
        while True:
            password = input('请输入注册的密码:').strip()
            re_password = input('请确认密码:').strip()
            if password == re_password:
                break
            else:
                print('您输入的两次密码不一致')
        return username, password
    
    
    def cut_user_pwd(user, pwd):    # 用户名密码拼接字符串
        user_pwd_str = f'{user}:{pwd}
    '
        return user_pwd_str
    
    
    def save_data(user_pwd_str):
        with open('user_name.txt', 'a', encoding='utf-8') as f:
            f.write(user_pwd_str)
    
    
    def register(): # 注册
        # 先让用户输入用户名和密码,效验合法性
        user, pwd = get_user_pwd()
        # 设计字符串的拼接,得到拼接好的字符串
        user_pwd_str = cut_user_pwd(user, pwd)
        # 写入文件
        save_data(user_pwd_str)
    
    
    register()
    

    二、匿名函数

    匿名函数:无名字的函数

    对比使用def关键字创建的是有名字的函数,使用lambda关键字创建则是没有名字的函数,即匿名函数,语法如下

    lambda 参数1,参数2...:expression

    举例:

    lamdba x,y,z:x+y+z
        
    #等同于
    def func(x,y,z)
    		return x+y+z
    

    匿名函数需要一次使用,单独使用毫无意义,它必须配合“内置函数”一起使用

    函数中的关键字 def 和 return已经自动添加了,所以只需 lamdba 参数即可


    三、内置函数

    Python内部提供的内置方法,如

    print()
    range()
    len()
    
    • max 求最大值

    • min 求最小值

    获取字典(字典中,value最大的key的名字)

    max(dict1,key=lambda x:dict1[x])

    例如:

    dict1 = {
         'tank': 1000,
         'egon': 500,
         'sean': 200,
         'jason': 500
     }
    
    print(max(dict1,key = lambda x:dict1[x]))
    print(min(dict1,key = lambda x:dict1[x]))
    tank
    sean
    
    • sorted:默认升序(从小到大) reverse:反转 reverse默认是False

    例如:

    list1 = [3, 5, 4, 8, 9, 7, 6, 1, 2]
    print(sorted(list1))
    [1, 2, 3, 4, 5, 6, 7, 8, 9]
    # 反转 
    print(sorted(list1, reverse= True))
    [9, 8, 7, 6, 5, 4, 3, 2, 1]
    
    • map:映射
      • map(函数地址,可迭代对象)——> map对象

    ​ map会将可迭代对象中的每一个值进行修改,然后映射到一个map对象中

    ​ 可以再将map对象转换成列表/元组。 注意:只能转一次

    定义一个可迭代对象

    array = [1, 2, 3, 4, 5])

    对每个元素做平方处理

    res1 = map(lambda x : x **2, array)
    print(res1)		#直接打印是一个内存地址
    print(list(res1))	# 所以转换成list后打印
    
    <map object at 0x0000021E34B376D8>	
    [1, 4, 9, 16, 25]
    
    • reduce:合并
      • reduce(函数地址, 可迭代对象, 初始值 默认为0)

    ​ 每次从可迭代对象中获取两个值并合并

    ​ 初始值:执行reduce函数时,都是从初始值开始合并

    ​ reduce函数可以接收三个参数,一个是函数,第二个是可迭代对象,第三个是初始值

    求上面array的和

    from functools import reduce
    res2 = reduce(lambda x, y: x + y, array)
    print(res2)
    15
    

    默认第三个参数初始值为0 ,但也可以自己指定

    from functools import reduce
    res2 = reduce(lambda x, y: x + y, array, 100)
    print(res2)
    115
    
    • filter:过滤
      • filter(函数地址 可迭代对象)

    例如将array中大于3的元素过滤出来

    res3 = filter(lambda x : x > 3, array)
    print(res3)	# 得到的结果仍然是迭代器
    print(list(res3))
    
    <filter object at 0x000002350F8E76D8>
    [4, 5]
    
  • 相关阅读:
    Log4j详细介绍(五)----输出地Appender
    Java抽象类与接口的区别
    深入理解Java的接口和抽象类
    小程序
    小程序
    小程序
    CMS
    CMS
    微信小程序
    微信小程序
  • 原文地址:https://www.cnblogs.com/YGZICO/p/11889306.html
Copyright © 2020-2023  润新知