day9 函数
2018-08-30 本文已影响0人
上邪5415
今天主要学习匿名函数、变量的作用域、递归函数、模块等内容。
1、匿名函数的声明
格式为:函数名= lambda 参数列表:返回值
函数名:变量名
lambda:声明匿名函数的关键字
参数列表:参数1,参数2....
冒号:固定写法
返回值:表达式,表达式的值就是返回值。一个函数可以有多个返回值,用括号()括起来以元祖形式进行返回。
匿名函数的调用:和普通函数一样,用“函数名(实参列表)”进行调用。
示例:
my_sum = lambda x,y:x+y
print(my_sum(0,1))结果为1
2、变量的作用域
作用域是指一个变量能够使用的范围,分为全局变量和局部变量。
- 全局变量:就是声明在函数和类的外面的变量都是全局变量。
- 局部变量:声明在函数中或者类中的变量就是局部变量。函数的参数是声明在函数中的局部变量。
a. x,y都是全局变量
for x in range(10):
print(x)
for y in range(10):
print(y)
b.变量x,y,z都是局部变量
def func3(x, y):
z = 'abc'
print(x, y, z)
3、递归函数
在函数的函数体中调用函数本身,这样的函数就是递归函数。
怎么写递归函数?
第一步: 找临界值 (找到让循环结束的值/找到能够确定函数结果值)
第二步: 假设函数的功能已经实现的前提下,找关系 (找f(n)和f(n-1)/当次循环和上次循环的关系)
第三步:根据f(n)和f(n-1)的关系,来通过f(n-1)实现f(n)的效果
用递归实现1+2+3...+n
def my_sum(n):
# 1.找临界值(在临界值的位置一定要让函数结束)
if n == 0:
return 0
# 2.找关系
"""
my_sum(n) : 1+2+3+...+n-1+n
my_sum(n-1) : 1+2+3+...+n-1
my_sum(n) = my_sum(n-1)+n
"""
# 3.使用f(n-1)实现f(n)的效果
return my_sum(n-1) + n
print(my_sum(5))
4、模块
一个py文件就是一个模块。
怎么使用其他模块中的内容?
a.import 模块
通过"模块.内容"的形式去使用模块中的内容(能够使用是全局变量、函数、类)
b.from 模块 import 模块中的内容
可以直接使用模块中的内容
c. from 模块 import *
将模块中的所有的内容都导入
现有两个py文件,A.py和B.py。
A.py文件代码如下:
def sayhello():
print('Hello!')
print('Hi!')
print(__name__)
B.py文件代码如下:
import A
A.sayhello()
print('End')
执行B.py文件,显示效果如下:
Hi!
A
Hello!
End