Python 嵌套函数(高级用法)

一、嵌套函数(高级用法)

1.嵌套函数

函数的嵌套调用是在"函数调用中再调用其他函数"。也就是说:函数嵌套允许在一个函数中调用另外一个函数。如下:实例

# 定义全局变量
name = "Harry"
def ChangeName():
name = "Ennnnn..."
print("name01:%s" % name)
def ChangeName2():
name = "Miiii..."
print("name02:%s" % name)
# 执行函数ChangeName2()注意. 函数ChangeName执行完成后才会执行这个.
ChangeName2()
# 执行函数ChangeName()
ChangeName()
2.二分查找
从一列表中找到其中某一位置。
# 定义一个无序列表
date = [21, 33, 22, 10, 9, 24, 8, 34, 53, 8, 23, 43, 1, 3, 10]
# 排序
date.sort()
print(int(len(date) / 2))
def binary_search(datesets, find_num):
if len(datesets) > 0:
find_nums = int(len(datesets) / 2)
print(datesets[find_nums])
if datesets[find_nums] == find_num:
print("Find num:", datesets[find_nums])
elif datesets[find_nums] > find_num:
print("\033[31;1mgoing to left side \033[0m:", datesets[find_nums], datesets[find_nums:], find_num)
binary_search(datesets[0:find_nums], find_num)
else:
print("\033[32;1mgoing to right side \033[0m:", datesets[find_nums], datesets[find_nums:], find_num)
binary_search(datesets[find_nums + 1:], find_num)
else:
print("Cannot fine the num", find_num)
# 如无法理解.请执行后进行分解.
binary_search(date, 24)
3.三元运算
#PS:三元运算
a = 4
b = 5
d = b if a < 10 else a
print(d)
#上边的三元运算相当于下边的.
if a < 10:
d = b
else:
d = a
print(d)
PS:上边的执行结果是一样的.【5】
三元预算 + 匿名函数 组合
date3 = map(lambda x:x*2 if x>5 else x,range(10))
for i in date3:
print(i)
输出:0  1  2  3  4  5  12  14  16
ps:知晓结果分解说明
1.首先这是一个匿名函数. 函数中if x > 5 else x 意思是正常打印0-5的数字 当x 大于5的时候*2并打印
4.高阶函数
变量可以指向函数,函数的参数可以接收变量。那么一个函数就可以接收另一个函数作为参数,这种函数称为高阶函数
def ddd(x,y,f):
print("---f(x):",f(x))
print("---f(y):",f(y))
return f(x) + f(y)
def cacle(n):
return n+2
res = ddd(3,-6,cacle)
print(res)
ps:此处的cacle 值是2 . return n+2 相当于是直接把2返回给cacle函数了. 因为此处的函数cacle中的形参没有接收到传过来的值. 默认为0
输出:
---f(x): 5
---f(y): -4

1  ps:1是return f(x) + f(y)返回的

5.函数式编程

介绍

函数是python内建支持的一种封装. 我们通过把大段代码拆成函数.通过一层一层的函数调用. 这种分解可以称之为面向过程的程序设计。函数就是面向过程的程序设计的基本单元。

函数式编程不是指的计算机中的函数.而是指的数学中的函数.一个函数的值权决定于函数参数的值. 不依赖其他状态. 如:sqrt(x)函数计算x的平方根. 只要x不变. 不论什么时候用.调用几次.值都是不变的

python对函数式编程提供部分支持. 由于Python允许使用变量. 因此. Python不是纯函数式编程语言.

定义

函数式编程也是一种编程范式. 也就是如何编写程序的方法论.【也就是:把运算过程尽量写成一系列嵌套的函数调用.】