社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

python函数式编程一

水痕001 • 6 年前 • 490 次点击  
阅读 5

python函数式编程一

一、pythonorand的使用

  • 1、使用方式

    result = a or b
    result = a and b
    复制代码
  • 2、or计算规则

    • a为真的时候就直接返回a的值,否则返回b的值
  • 3、and计算规则

    • a为真的时候返回b,当a为假的时候返回a
  • 4、pythonFalse的值

    • None
    • False
    • 0
    • ''/()/[]
    • {}

二、python中的三木运算

  • 1、格式

    result = 条件为真时返回的结果 if 条件 else 条件为假返回结果
    复制代码
  • 2、使用案例

    result = '我是真的' if True else '我是假的'
    复制代码

三、python中函数的定义方式

  • 1、常规函数定义方式

    def 函数名(参数):
    	pass
    复制代码
  • 2、lambda函数

    赋值接收的变量 = lambda 参数列表...: 函数返回值
    f = lambda x, y: x + y
    复制代码

四、函数传参的几种形式

  • 1、无参函数

    def foo():
    	pass
    复制代码
  • 2、固定参数(形参与实参一一对应)

    def foo(name, age, gender):
    	pass
    
    if __name__ == '__main__':
    	foo('张三', 20, '男')
    复制代码
  • 3、可变参数(python中习惯使用关键词*args来表示)

    在函数体中接收的是一个tuple元祖

    def foo(*args):
    	print(args)
    
    if __name__ == '__main__':
    	foo(1,2,3,4,5)
    复制代码
  • 4、关键字参数(python中习惯使用关键词**kwargs来表示)

    关键字参数传递到函数中是以dict的方式展示

    def bar(**kwargs):
        print(type(kwargs))
        print(kwargs)
    
    if __name__ == '__main__':
        bar(name='张三', gender='男', age=20)
    
    # <class 'dict'>
    #{'name': '张三', 'gender': '男', 'age': 20}
    复制代码
  • 5、固定参数、可变参数、关键字参数混合使用

    原理

    • 1.先会把实参不能少于形参固定参数的个数(少于会直接报错)
    • 2.把实参优先给固定参数,多余的给可变参数
    • 3.如果使用了关键词传递的参数就是关键字参数中
    def test(name, age, *args, **kwargs):
        print(name, age)
        print(args)
        print(kwargs)
    
    if __name__ == '__main__':
        test(1, 2, 3, 4, 5, address='广东', mobile = '110')
    复制代码
  • 6、默认参数

    def test(name, age=20
    
    
        
    ):
        print(name, age)
    
    if __name__ == '__main__':
        test('哈哈')
    复制代码

五、函数的返回值

  • 1、如果没指定函数返回就返回None
  • 2、函数使用return的返回值只有一个
  • 3、如果一个函数可以返回一个列表、元祖、字典
  • 4、函数可以使用yield返回多个值

六、python中常见的内置函数

  • 1、map函数(遍历可迭代对象返回一个可迭代对象)

    • 使用格式

      map(函数, iterable...)
      复制代码
    • 使用案例

      list1 = [1, 2, 3, 4, 5]
      list2 = [6, 7, 8, 9, 10]
      
      result1 = map(lambda x: x ** 2, list1)
      print(list(result1))
      
      result2 = map(lambda x, y: x + y, list1, list2)
      print(list(result2))
      
      tuple1 = (1, 2, 3, 4)
      print(list(map(lambda x: x ** 2, tuple1)))
      复制代码
  • 2、filter函数(过滤数据)

    • 使用格式

      filter(函数, iterable...)
      复制代码
    • 使用案例

      list1 = [1, 2, 3, 4, 5]
      print(list(filter(lambda x: x % 2 == 0, list1)))
      print([x for x in list1 if x % 2 == 0])
      复制代码
    • 过滤数据推荐使用列表推导式

      list1 = [1, 2, 3, 4, 5]
      print([x for x in list1 if x % 2 == 0])
      复制代码
  • 3、reduce函数(连续计算)注意需要先导包

    • 1、定义格式

      from functools import reduce
      
      result = reduce(函数, iterable, 初始化值)
      复制代码
    • 2、使用案例

      from functools import reduce
      
      if __name__ == "__main__":
          list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
          result = reduce(lambda x, y: x + y, list1)
          print(result)
          result2 = reduce(lambda x, y: str(x) + str(y), list1, '==')
      复制代码
  • 4、sorted排序函数

    • 列表排序

      sorted([36, 6, -12, 9, -22])  列表排序
      复制代码
    • 字符排序

      sorted(['bob', 'about', 'Zoo', 'Credit'])  #字符串排序,按照ASCII的大小排序
      复制代码
    • 逆向排序(相当于先升序排序后,然后在反向)

      sorted([36, 6, -12, 9, -22], reverse=True)
      复制代码
    • 添加函数排序使用关键参数key(注意这个地方的函数只能传递一个参数的函数)

      L = [{1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
      print(sorted(L, key=lambda x: len(x)))
      复制代码
    • key函数需要传递多个函数的时候

      from functools import cmp_to_key
      
      if __name__ == "__main__":
          L = [{1: 5, 3: 4}, {1: 3, 6: 3}, {1: 1, 2: 4, 5: 6}]
          print(sorted(L, key=cmp_to_key(lambda x, y: x[1] > y[1])))
      复制代码
    • 元祖、字典使用排序

      a = [('b', 2), ('a', 1), ('c', 0)]
      print(sorted(a, key=lambda x: x[0]))
      print(sorted(a, key=lambda x: x[1]))
      
      b = [{'city': '深圳', 'tem': 40}, {'city': '广州', 'tem': 30}]
      print(sorted(b, key=lambda x: x['tem']))
      复制代码

七、更多关于作者文章请访问


今天看啥 - 高品质阅读平台
本文地址:http://www.jintiankansha.me/t/N1a0CDizrr
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/25814
 
490 次点击