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
匿名函数
匿名函数就是没有名字的函数
特点:
- lambda函数是匿名的
- lambda函数有输入和输出
- lambda函数一般功能简单
lambda argument_list: expression
- 这里的
argument_list
是参数列表,它的结构与Python中函数(function)
的参数列表是一样的。具体来说,argument_list可以有非常多的形式。例如:
- a, b
- a=1, b=2
- *args
- **kwargs
- a, b=1, *args
- 空
- …
- 这里的
expression
是一个关于参数的表达式。表达式中出现的参数需要在argument_list
中有定义,并且表达式只能是单行的。以下都是合法的表达式:
- 1
- None
- a + b
- sum(a)
- 1 if a >10 else 0
- …
- 这里的
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”**
在两种情况中
运行内存–女生执行占用内存——男生方法执行也会占用内存
名称空间上—— 二者自始而终都是相互独立的
功能变量内存 ——两者都存在自己的记忆了 互不影响