欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python定义函数及调用函数

程序员文章站 2022-03-17 11:08:50
...

1.def()函数自定义及调用函数

def f(x, y):
    return x*y + 3*x   # 返回一个值

def f_1(x, y):
    return 3*x, 4*y    # 双重返回一个数组

def f_2(x=1, y=3):     # 定义函数同时定义参数的默认值
    return [x+2, y+2]  # 返回值是一个列表

# 调用def()函数
# 1.1先对参数赋值,在调用
x = 2
y = 3
a = f(x, y)
b = f_1(x, y)
[c, d] = f_2(x, y)  # 注意即使函数f_2()已经赋值好了,但输出结果只与定义后赋予参数的值相同,当你不对参数赋值使用参数的默认值
print(a)  # 12
print(b)  # (6, 12)
print(c)  # 4

# 1.2.直接在函数中赋予参数的值
a = f(2, 3)
b = f_1(2, 3)
[c, d] = f_2(2, 3)
print(a)
print(b)
print(c)

# 1.3.main函数调用,直接打出main即可出现,且main这一行最左边有个三角形,点击直接运行选项
if __name__ == '__main__':
    a = f(x, y)
    b = f_1(x, y)
    [c, d] = f_2(x, y)
print(a)
print(b)
print(c)

2.lambda对简单的功能定义“行内函数”及调用lambda函数

f = lambda x: x + 2  # 定义一元函数
g = lambda x, y : x + y  # 定义二元函数

# 调用lambda函数
# 2.1
e1 = g(1, 2)
# 2.2
e2 = g(x, y)
print(e1)
print(e2)
# 2.3
if __name__ == '__main__':
    e3 = g(1, 2)
    print(e3)

# 两者的函数的前三种调用方法比较相似,但lambda偏向于简单函数的构建,比较简洁;
#                    而def函数偏向于运算比较复杂的函数构建,比较复杂

# 2.4.map()函数:首先定义一个函数,然后再用map()命令将函数逐一应用到(map)列表中的每一个元素,最后返回一个数组,适用于逐一遍历
a = [1, 2, 3] # 列表解析式
b = [i+2 for i in a]  # [3, 4, 5]

b = map(lambda x: x+2, a)
b = list(b)  # [3, 4, 5]
c = map(lambda x, y: x*y, a, b) # 将a,b两个列表的元素对应相乘,把结果返回给新列表
c =list(c)   # [3, 8, 15]

# 2.5.reduce()函数首先将列表的前两个元素作为函数的参数进行运算,然后将运算结果与第三个数字作为函数的参数....以此内推,直到列表结束,用于递归运算
from functools import reduce
n = 10
reduce(lambda x, y: x*y, range(1, n+1))

# 2.6filter()函数,用于筛选出列表中符合条件的元素
b = filter(lambda x: x > 5 and x < 8, range(10))
b = list(b)