美文网首页
Python语法-函数进阶篇

Python语法-函数进阶篇

作者: 蒋征 | 来源:发表于2020-10-18 19:20 被阅读0次

主要是对函数的一些补充内容,包括递归函数,常见内置函数和常见的高阶函数的使用

递归函数

和所有语言一样,递归函数说穿了就是自己调用自己,如果大家想要一个官方术语:递归就是子程序(函数)直接调用自己或通过一系列调用语句间接调用自己,是一种描述问题和解决问题的基本方法。

image.png

递归函数例子:

# 递归函数
def factorial(n) :
    # 结算数字的阶乘
    if n==1 :
        return 1
    else :
        return n * factorial(n-1)

print('数字的阶乘结果为:%d'%factorial(5))

计算的结果为:

数字的阶乘结果为:120

匿名函数

定义函数的过程中,没有给定名称的函数就叫匿名函数; Python中使用lambda表达式来创建匿名函数

匿名函数有一些基本规则:

  • lambda只是一个表达式,函数体比def简单很多。
  • lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
  • lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
  • lambda定义的函数返回值就是表达式的返回值,不需要return语句
  • lambda的主要应用场景就是赋值给变量,作为参数传入其他函数
# 匿名函数
"""
    匿名函数格式:lambda [参数] : expression
    默认会返回一个表达式
"""

匿名函数案例:

# 无参匿名函数
e = lambda : 'Hello World'
print(e())

# 有参匿名函数
e = lambda x,y : x+y
print(e(3,2))

# 矢量化三元运算符
e = lambda x,y : x if x > 2 else y
print(e(3,2))

运行结果:

Hello World
5
3

内置函数

print(dir(__builtins__)) # 我们可以通过这行命令打印所有的内置函数
image.png

上图中展示的为经常使用的几个函数,以及相应的参数和方法

以sorted函数使用举例:

# -*- coding:utf-8 -*-
dict = {'a':'1','c':'2','b':'3'};
## 只返回key
dict2 = sorted(dict);
## 整个item返回
dict3 = sorted(dict.items());
## 逆序排列
dict4 = sorted(dict.items(),reverse=True);
## 指定排序key
dict5 = sorted(dict.items(),key=lambda x:x[1],reverse=True);

print(dict)
print(dict2)
## 列表推导式
print({k:v for k,v in dict3})
print({k:v for k,v in dict4})
print({k:v for k,v in dict5})

运行结果,大家可以自己映射

{'a': '1', 'c': '2', 'b': '3'}
['a', 'b', 'c']
{'a': '1', 'b': '3', 'c': '2'}
{'c': '2', 'b': '3', 'a': '1'}
{'b': '3', 'c': '2', 'a': '1'}

我们可以通过help函数来帮助我们学习使用函数:

help(sorted)

运行结果:

Help on built-in function sorted in module builtins:

sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.
    
    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order.

image.png

上图中展示的就是常见的内置函数,标红的为经常使用的函数。


高阶函数

以下为常见的三个进阶函数,我们了解以下

  • map
  • filter
  • reduce
image.png

map

## base data
list01 = (1,3,5,7,9)
list02 = (2,4,6,8,10)

## map
maplist = map(lambda x:x*2,list01)
print(maplist)  ## map函数返回的是map对象
print(list(maplist)) ## 将map对象转化为list对象

maplist = map(lambda x,y:x+y,list01,list02)
print(list(maplist)) ## 多个集合操作

运行结果

<map object at 0x0000024DAE790A60>
[2, 6, 10, 14, 18]
[3, 7, 11, 15, 19]

filter

## base data
list01 = (1,3,5,7,9)
list02 = (2,4,6,8,10)

## filter
filterlist = filter(lambda x:x>4, list02)

print(filterlist)  ## filter函数返回的是filter对象
print(list(filterlist)) ## 将filter对象转化为list对象

运行结果为:

<filter object at 0x000001638C7B4A60>
[6, 8, 10]

reduce

## base data
list01 = (1,3,5,7,9)
list02 = (2,4,6,8,10)

## filter
from functools import reduce
reducelist = reduce(lambda x,y:x+y,list02)

print(reducelist)  ## reduce函数返回合并以后的结果

运行结果为:

30

相关文章

  • Python语法-函数进阶篇

    主要是对函数的一些补充内容,包括递归函数,常见内置函数和常见的高阶函数的使用 递归函数 和所有语言一样,递归函数说...

  • Python从入门到精通

    Python语法的三个阶段 Python基础语法函数是编程 Python进阶语法面向对象编程 Python高级语法...

  • Python学习记录

    基本语法 Python lambda介绍 常用函数 python map( )函数用法map将传入的函数f依次作用...

  • JavaScript学习笔记(二)

    慕课网JavaScript进阶篇第1-6章学习笔记,JS基础语法,数组,流程控制语句,函数,事件 JavaScri...

  • 2018-06-05

    python 1.python的hasattr()函数 hasattr()函数用于判断对象是否包含对应的属性。语法...

  • python3 函数学习及落地应用

    1. python 3中的函数 知识树 1.1函数语法定义: 1.2 定义函数代码截图: 1.3 函数调用语法定义...

  • Python 快速教程(进阶篇)

    注:采转归档,自己学习查询使用 Python 快速教程(进阶篇01): 词典Python 快速教程(进阶篇02):...

  • ECMAScript 6重点一览——高级篇

    背景介绍 在之前的进阶篇已经给出了ES6在对象上做的的优化和改变,那这一篇进阶篇就来说说ES6的大语法糖——函数,...

  • 公共语法

    公共语法 5.1 Python 内置函数 Python 包含了以下内置函数: 5.2 切片 5.3 运算符 成员运...

  • Python Magic Method

    Magic Method Magic Method,魔法函数,语法为__method__,一种Python高级语法...

网友评论

      本文标题:Python语法-函数进阶篇

      本文链接:https://www.haomeiwen.com/subject/trwcmktx.html