Day 14 递归调用三元表达式和模块相关介绍

Day 14

一、递归调用

函数的递归调用:就是在调用一个函数的过程中有直接或间接的调用自己

1、直接调用自己

def func1():
	print("hello")
	func1

2、间接调用自己

def fun2():
	print("from func2....")
	func1()

二、小案例,二分法

def dichotomy(base_list, find_num):
    index = int(len(base_list) / 2)
    if index == 0:
        print(False)
        return
    if find_num > base_list[index]:
        right_list = base_list[index:]
        dichotomy(right_list, find_num)
    elif find_num < base_list[index]:
        left_list = base_list[:index]
        dichotomy(left_list, find_num)
    else:
        print(True)

三、三元表达式

三元表达式

def max2(x, y):
	if x > y:
		return x
	else:
		return y

三元表达式:表达式1 if 条件 else 表达式2

x = 111
y = 999
# 表达式1 if 条件 表达式2
result = print("x大于y") if x > y else print("y大于x")
--------------------
y大于x

匿名函数

匿名函数就是没有名字的函数

特点:

  1. lambda函数是匿名的
  2. lambda函数有输入和输出
  3. lambda函数一般功能简单

lambda argument_list: expression

  1. 这里的argument_list是参数列表,它的结构与Python中函数(function)的参数列表是一样的。具体来说,argument_list可以有非常多的形式。例如:
  • a, b
  • a=1, b=2
  • *args
  • **kwargs
  • a, b=1, *args
  1. 这里的expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。以下都是合法的表达式:
  • 1
  • None
  • a + b
  • sum(a)
  • 1 if a >10 else 0
  1. 这里的lambda argument_list: expression表示的是一个函数。这个函数叫做lambda函数

sorted函数按value值对字典排序

要对字典的value排序则需要用到key参数,在这里主要提供一种使用lambda表达式的方法,如下:

money = {
    "mc": 999,
    "xxc": 888,
    "lzc": 1000,
    "jjww": 11k
}

print(sorted(money, key=lambda k: money[k], reverse=True))

sorted(iterable[,cmp,[,key[,reverse=True]]])
key 在这里的意思是 在比较之前修改比较对象,修改的对象为原对象 k 返回为 字典中k对应的值 在这个例子中k对应的值为字典的key

要在比较之前修改对象,或基于特定的属性/索引进行比较,必须使用key参数。

四,模块

1、什么是模块

​ 模块就是一个功能的集合体,不是用来直接运行,而是用来被导入使用的

模块分为三来源:

​ 1.内置的模块

​ 2、第三方模块

​ 3、自定义的模块

模块分为四中类别:

​ 1、一个py文件就是一个模块

​ 2、一个文件夹也是一个包

​ 3、已被编译的为共享库

2、为何要用模块

​ 使用别人的模块:

​ 1、拿来主义,提升开发效率

​ 自定义模块:

​ 1、别人的功能不够用了,需要自己去编写

​ 2、解决代码冗余

3、如何用模块

import module_name

打个比方有一对情侣,男生有以下的特点

name = “Tom”, 有一只猫

function1 = 去店里充话费,

function2 = 唱歌

女生

function1 = 手机充话费

name = “Jery”, 有一只猫

​ import moule_name 相当于把男朋友拿过来,你就可以使用他的功能,叫他去充话费module_name.function1() )也可以叫他去唱歌module_name.function2())当然他还有可能有更多的功能,你都可以去叫他去做,你也知道了他家的猫叫“Tom”

for module_name import module_function

​ for module_name import module_function 就相当于你从你男朋友那里拿到了一种或多种功能,你也会充话费(function1())你也会唱歌了(function2()),但是啊你本来就会充话费,那你首先肯定不会去使用你学到的功能,你会用手机充话费而不是去店里,同样在你知道他的猫的名字,你第一也会先想到自己的**“Jery”**

在两种情况中

运行内存–女生执行占用内存——男生方法执行也会占用内存

名称空间上—— 二者自始而终都是相互独立的

功能变量内存 ——两者都存在自己的记忆了 互不影响

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值