首页 > 其他分享 >函数进阶

函数进阶

时间:2022-10-02 14:33:37浏览次数:53  
标签:return 进阶 函数 num result print def lambda

一、多函数程序执行流程

(一)共用全局变量

# 定义全局变量
num = 0
def test1():
    global num
    # 修改全局变量
    num = 100
def test2():
    # 调用test1函数中修改后的全局变量
    print(num)

test1()
test2()

----------------------------------
100

(二)返回值作为参数传递

  • 示例一
def test1():
    return 50
def test2(num):
    print(num)

# 1.保存函数test1的返回值
result = test1()
# 2.将函数返回值所在变量作为参数传递到test2函数
test2(result)

------------------------------------
50
  • 示例二
def demo1():
    li = []
    for i in range(1,10):
        li.append(i)
    return li
a = demo1()
def demo2():
    print(a)
demo2()

----------------------------
[1, 2, 3, 4, 5, 6, 7, 8, 9]

二、拆包和交换变量值

(一)拆包

  • 示例一
t1 = ("兰博基尼",300)
car_name,car_price = t1
print(car_name)
print(car_price)

----------------------
兰博基尼
300
  • 示例二
def demo():
    return 100,200

a = demo()
num1,num2 = a
print(num1)
print(num2)

-----------------------
100
200

(二)交换变量值

  • 示例一
a = 10
b = 20
a,b = b,a
print(a)
print(b)

-----------------
20
10
  • 示例二
c = 0
a = 10
b = 20
c = a
a = b
b = c
print(a)
print(b)

-------------
20
10

三、递归

  • 函数内部自己调自己
  • 必须有出口

(一)计算1,2,3数字的累加和

def num_numbers(num):
    if num == 1:
        return 1

    result = num + num_numbers(num-1)
    return result

print(num_numbers(3))

----------------------------------
6
  • 解析图

 

 

(二) 递归三原则:

  1. 递归必须有停止条件
  2. 递归必须改变其状态并向停止条件靠近
  3. 递归必须递归地调用自己

四、lambda表达式

(一)概述

  • 如果有一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。

1、语法

lambda 参数列表:表达式

2、注意

  • lambda表达式的参数可有可无,函数的参数在lambda表达式中完全适用。
  • lambda函数能接收任何数量的参数但只能返回一个表达式的值。

(二)实例

1、方式一

def demo1():
    return 200
print(demo1())

print((lambda :100)())  # print((lambda 参数:200)(传参))

--------------------------------
200
100

2、方式二

def demo2(a):
    return a
print(demo2("我是demo2"))
print((lambda a:a)("我是lambda2"))

--------------------------------
我是demo2
我是lambda2

3、方式三

def demo3(a,b):
    return a+b

print((lambda a,b:a+b)(10,20))

-------------------------
30

五、lambda的参数形式

(一)默认参数的lambda表达式

def demo4(b,c,a=10):
    return a+b+c
print((lambda b,c,a=10:a+b+c)(10,20))

-------------------------------------
40

(二)不定长参数的lambda表达式

def demo5(*args,**kwargs):
    return args,kwargs

print((lambda *args,**kwargs:(args,kwargs))(1,2,3,4,5,a=30,b=40))

# 1
print((lambda *args:args)(1,5,6,9,6))
# 2
print((lambda **kwargs:kwargs)(name="张三",age=60))

---------------------------------------------
((1, 2, 3, 4, 5), {'a': 30, 'b': 40})
(1, 5, 6, 9, 6)
{'name': '张三', 'age': 60}

(三)待判断的lambda

fn = (lambda a,b: a if a > b else b)(1000,5000)
print(fn)

-----------------------------------------
5000

(四)列表数据按字典key的值排序

students = [
    {'name':'张三','age':20},
    {'name':'李四','age':19},
    {'name':'王五','age':22}
]
# 按age值降序排列
students.sort(key=lambda x: x['age'],reverse=True)
print(students)

------------------------------------
[{'name': '王五', 'age': 22}, {'name': '张三', 'age': 20}, {'name': '李四', 'age': 19}]

六、高阶函数

(一)abs()

  • abs()函数可以完成对数字求绝对值计算。
def add_num(a,b):
    return abs(a) + abs(b)
result = add_num(-1,2)
print(result)

---------------------------
3

(二)map(function,iterable)

  • 将传入的函数变量function作用到iterable变量的每个元素中,并将结果组成新的列表
  •   function--函数
  •   iterable--序列
list1 = [1,2,3,4,5]
def func(x):
    return x ** 2
result = map(func,list1)
print(result)
print(list(result))

-----------------------------
<map object at 0x000002766C2BBE80>
[1, 4, 9, 16, 25]

(三)filter()

  • filter(func,list)函数用于过滤掉不符合条件的元素,返回一个filter对象。
list1 = [1,2,3,4,5,6,7,8,9,10]
def func(x):
    return x % 2 == 0
result = filter(func,list1)
print(result)
print(list(result))

--------------------------
<filter object at 0x000002766C2BBE20>
[2, 4, 6, 8, 10]

标签:return,进阶,函数,num,result,print,def,lambda
From: https://www.cnblogs.com/LoLong/p/16748720.html

相关文章

  • JavaScript中this指向哪儿?如何确定this?-前端面试进阶
    前言只要你踏入JavaScript的世界,那么你一定会遇到this关键词。有许多人所this是JavaScript中最复杂的东西之一,也有人说this其实很简单......但是事实确实,有许多工......
  • 构造函数初始化列表的基本形式
    https://blog.csdn.net/m0_63783532/article/details/123833512?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-1-12383......
  • JavaScript中this指向哪儿?如何确定this?-前端面试进阶
    前言只要你踏入JavaScript的世界,那么你一定会遇到this关键词。有许多人所this是JavaScript中最复杂的东西之一,也有人说this其实很简单......但是事实确实,有许多......
  • 【数据库】常用时间日期函数-日期加减、格式化、取指定部分、与字符串转换、取系统当
    一、日期格式化DATE_FORMAT(date,format):根据参数对date进行格式化format的格式: %Y年,数字,4位 %y年,数字,2位 %m月,数字(01……12) %d月份中的天数,数......
  • 使用printf函数输出变量的值
    1.使用变量的值常见的方式是将变量的值输出。2.输出变量的值使用printf函数打印出来格式 a.格式一 printf("输出信息");双引号中的内容直接输出,例最简单的代码#include<......
  • C语言常用函数
    数据类型:整数:char、unsignedchar(0-255)、signedchar(-128-127)、short、unsignedshort(0-65535)、int、unsignedint、long、unsignedlong小数:float(6位):单精度,eg:2.5fdouble......
  • lambda表达式(匿名函数)
    1、lambda的应用场景如果一个函数有一个返回值,并且只有一句代码,可以使用lambda简化。2、lambda语法lambda参数列表:表达式注意:lambda表达式参数可有可无,函......
  • 创建和初始化对象、构造函数详解
    创建和初始化对象、构造函数详解使用new关键字创建对象使用new关键字创建的时候,不仅会分配内存空间,还会进行默认的初始化以及调用类中的构造器packageoop.subject;......
  • hook函数——react——同步获取useState的最新状态值
    简介在React的世界中,有容器组件和UI组件之分,在ReactHooks出现之前,UI组件我们可以使用函数组件,无状态组件来展示UI,而对于容器组件,函数组件就显得无能为力,我们依赖于......
  • 面向对象初试和方法进阶
    什么是面向对象以类的方式组织代码,以对象的形式封装数据面向对象的三大特性封装继承多态回顾方法及加深方法的调用packageoop.revise;//Demo1类publicclassD......