Python基础05-函数及函数式编程

函数及函数式编程

数学中的函数指一种映射的变换关系,如f(x)=2x+1,转换为Python函数为:

def f(x):
    return x*2 + 1

Python中的函数可以理解为一种预先设定的处理过程。
一般过程都会包含输入、处理、和输出三个部分。输入及函数参数,可以有多个,输出即返回值,有可以有多个。
过程分为定义和调用。定义是对参数、处理过程和返回值的描述,调用是使用实际的参数运行函数并得到实际的返回值。

函数定义和调用

def add(x, y): # 定义函数
    return x+y

print(add(1,3)) # 调用函数

案例: 用户注册/登录函数

users = {"张三": "123456"}

def reg(username, password):
    if users.get(username): # 如果用户中存在username这个key
        print("用户已存在")
    else:
        users[username] = password # 向users字典中添加元素
        print("添加成功")

def login(username, password)
    if not users.get(username):
        print("用户不存在")
    elif users['username'] == password:
        print("登录成功")
    else:
        print("密码错误")

参数和返回值

  1. 函数没有return默认返回None
  2. 参数支持各种对象,包含数字,支付串,列表,元组,也可以是函数和类
  3. 参数默认值: 有默认值的参数必须放在最后面, 如```def add(x, y=1, z=2):
  4. 不定参数: *args和**kwargs, 如def func(*args, **kwargs):可以接受任意长度和格式的参数
  5. 参数及返回值类型注释(Python3)
def(x:int, y:int) -> int: # x,y为int型,函数返回为int型,只是注释,参数格式非法不会报错
    return x+y

函数作为参数

如: 装饰器

def a():
    print("I'm a")
def deco(func):
    print("call from deco")
    func()

deco(a) # 输出"call from deco"并调用a(),输出"I'm a"

函数嵌套

如闭包

def a():
    a_var = 1
    def b:() # 嵌套函数
        a_var += 1

函数递归

自己调用自己,直到满足需求
案例: 求N!

def factorial(n):
    return 1 if n == 0 or n == 1 else n * factorial(n-1)
原文地址:https://www.cnblogs.com/superhin/p/12746376.html