Python3 函数

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。

函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建函数,这被叫做用户自定义函数。

定义一个函数

你可以定义一个由自己想要功能的函数,以下是简单的规则:

  • 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()
  • 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
  • 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
  • 函数内容以冒号 : 起始,并且缩进。
  • return [表达式] 结束函数,选择性地返回一个值给调用方,不带表达式的 return 相当于返回 None。

python定义函数的参数 python3定义函数参数类型_python定义函数的参数

函数的各种传参

#不定长参数 key的方式
def test11(*args):
    print(args)
#不定长参数k-v的方式
def test22(**kwargs):
    print(kwargs)
#函数传参
def test33(name):
    print(name)
#函数设定默认参数值,当设定默认参数时候test44调用时候可以不传参,name必须传参
def test44(name,age=10):
    print(name,age)

函数的返回值

def print1(a):
    print(a)
    return a
#函数可以返回多个值,接受时候多个参数接受,不想接受的用_忽略
def sum(a,b):
    return a,b+a

a = print1(10)
b,c = sum(10,5)
print(a,b,c)
#忽略第一个返回值
_,c = sum(10,15)
print1(c)

 

递归函数

#递归函数,函数自己调用自己,并且要有出口,否则永远进入死循环
#递归计算10以内的和
def sum_num(num):
    if num == 1:
        return num
    return num +sum_num(num-1)
sum_result = sum_num(10)
print('sum',sum_result)

Lambda函数

如果函数只有一个返回值并且只有一句代码,可以使用lambda简化
lambda语法:lambda 参数列表:表达式


如果函数只有一个返回值并且只有一句代码,可以使用lambda简化 lambda语法:lambda 参数列表:表达式 lambda表达式参数可有可无,函数的参数在lambda表达式中完全适用 lambda 表达式只能接受任何数量的参数,单只能返回一个列表式的值


#快速体验
def fn1():
    return 100
print(fn1())
#lambda表达方式
fn2 = lambda: 100
print(fn2,fn2())
#计算 a+b
def add(a,b):
    return a+b
#lambda实现
fn1 = lambda a,b:a+b
print(fn1(1,2))
print(add(2,3))
#lamdba传递可变参数
fn1 = lambda *args: args
print(fn1(123))
#lamdba传递可变参数
fn1 = lambda **kwargs: kwargs
print(fn1(age=10,name='tom'))
#带有判断的lambda
fn1 = lambda a,b: a if a > b else b
print(fn1(100,1000))
#字典按字典key的值排序
students = [{"name":"Tom","age":20},
            {"name":"Jeff","age":19},
            {"name":"Jack","age":34},
            ]
#按name的升序排列
students.sort(key=lambda x:x['name'])
print1(students)
#按name的降序序排列
students.sort(key=lambda x:x['name'],reverse=True)
print1(students)
#按age的升序排列
students.sort(key=lambda x:x['age'])
print1(students)
#按age的降序序排列
students.sort(key=lambda x:x['age'],reverse=True)
print1(students)

高阶函数

#高阶函数
把函数作为参数传入,这样的函数称为高阶函数,高阶函数是函数式编程的体现,函数式编程就是指这种高度抽象的编程范式。

#在python中abs()函数可以完成对数字绝对值的计算
a = abs(-10) #10
#rand()函数可以完成对数字四舍五入的计算
b = round(1.2) #1
c = round(1.9)#2
print(a,b,c)

def add_num(a,b):
    return abs(a)+abs(b)

result = add_num(-1,2)
print(result)

def add_num2(a,b,f):
    return f(a)+f(b)
result = add_num2(-1,2,abs)
print(result)
#四舍五入求和
result = add_num2(1.2,2.9,round)
print(result)

#内置高阶函数map()
#map(func,lst)将传入的函数变量func作用到lst变量的每个元素,并将结果组成新的列表迭代器返回
list1 =[1,2,3,4,5]
def func(x):
    return x**2
result = map(func,list1)
print(result) #<map object at 0x7fb0301b4b50>
print(list(result))#[1, 4, 9, 16, 25]

import functools
#reduce()
#reduce(func,lst)其中func必须有两个参数,每个func计算的结果继续和序列的下一个元素做累计计算
#求list1中序列中各个数字的累计和
list1 =[1,2,3,4,5]
def reduceFunc(a,b):
    return a+b

result = functools.reduce(reduceFunc,list1)
print(result)#15
#filter函数
#filter(func,lst)函数用于过滤序列,过滤掉不符合条件的元素,返回一个filter对象,如果要转化为列表,可以使用list()来转化
list1 = [1,2,3,4,5,6,7,8,9,10]
def filterFunc(x):
    return x%2 == 0
result = filter(filterFunc,list1)
print('filter',list(result))