行该模块,if条件下的这些代码是不会执行的,因为只有直接执行的模块的名字才是'__main__'
。
def foo():
pass
def bar():
pass
# _name_ 是Python中一个隐含的变量它代表了模块的名字
# 只有被python解释器直接执行的模块的名字是 __main__
if __name__ == '__main__':
print('call foo')
foo()
print("call bar")
bar
4. 递归函数
递归函数:如果一个函数在内部不调用其它的函数,而是自己本身的话,这个函数就是递归函数。
举个例子:我们来计算阶乘 n! = 1 * 2 * 3 * ... * n
方案1:循环解决
"""
while 循环算阶乘
version:0.1
author:coke
"""
# -*- coding:utf-8 -*-
def calNum(num):
i = 1
result = 1
while i <= num:
result *= i
i += 1
return result
total = calNum(4)
print(total)
方案2:递归函数
"""
while 循环算阶乘
version:0.1
author:coke
"""
# -*- coding:utf-8 -*-
def calNum(num):
if num > 1:
result = num * calNum(num - 1)
else:
result = 1
return result
total = calNum(4)
print(total)
5. 匿名函数
用lambda
关键词能创建小型匿名函数。这种函数得名于省略了用def
声明函数的标准步骤。
lambda
函数的语法只包含一个语句,如下:
lambda [arg1 [,arg2,.....argn]]:expression
1. 使用匿名函数求两数之和 (自己定义函数 )
"""
匿名函数测试
version:0.1
author:coke
"""
def add(a,b):
return a+b
result1 = add(1,6)
# 使用lambda 表达式
sum = lambda x,y: x+y
result2 = sum(1,6)
print(result1)
print(result2)
2. 数据排序 (作为内置函数的参数 )
"""
匿名函数作为内置函数进行排序
关于 字典和列表的知识点后面会讲
version:0.1
author:coke
"""
stus = [
{"name":"zhangsan", "age":18},
{"name":"lisi", "age":19},
{"name":"wangwu", "age":17}
]
stus.sort(key = lambda x:x['name'])
print(stus)
6. 多返回值
在python中 一个函数可不可以返回多个 返回值呢?
"""
多返回值的测试
version:0.1
author:coke
"""
def cal(a,b):
add = a+b
mul = a*b
return add,mul
result = cal(2,3)
print(result)
输出结果
一个函数,返回多个返回值 ,本质上是利用了元组的特性。
注:关于元组,列表,字典的知识点后面会讲,这里先提一嘴。