函数的概念
函数的用法和底层分析
#函数是可重复的程序代码块。函数的 作用,不仅可以实现代码的复用,更能实现代码的 一致性,一致性是指,只要修改代码,则所有调用该函数的地方都能得到体现
#在编写函数的时候,函数中的代码写法和我们前面讲述的基本一致,只是对代码实现了封装,并且增加了函数的调用,传递参数,返回结果等内容
函数的基本概念
一个程序有一个个任务组成:函数就是代表一个任务或者一个功能
函数就是代码复用的通用机制
函数的分类
1.内置函数 len() list() str() 可以直接拿来调用
2.标准库函数 import语句导入 然后使用其中定义的函数
3.第三方库函数 Python社区也提供很多高质量的库,下载安装之后可以通过import 语句 导入
4.用户自己义函数 用户可以自己定义的函数 显然也是开发中适应用户自身需求定义 的函数
函数的定义和调用
核心要点
语法格式
def 函数名([参数列表]):
‘’‘文档字符串’’’ 对函数的注明
函数体/若干语句
要点:
1.使用def函数来定义函数的时候,会创建一个函数对象,并且绑定到函数
名变量上
2.参数列表
(1) ()内是形式参数列表,有多个参数则使用逗号隔开
(2) 形式参数不需要声明类型,也不需要知道函数返回值类型
(3) 无参数,也必须要保留空的()
(4) 行参列表必须与实参列表一一对应
3.return 返回值
(1)如果函数体中包含return语句,则结束函数执行并返回值
(2)如果函数体中不包含return语句,则返会none
4.调用函数值之前,必须先定义函数,即先调用def创建函数对象
(1) 内置函数会自动创建
(2) 标准库和第三方函数,需要要调用import导入模块,会执行模块中的def
def test01():
print("*"*10)
for x in range(10):
test01()
print(id(test01))
print(type(test01))
print(test01)
def Max(a,b): # a,b时形式参数
'''比较两个数的大小''' # 文档注释
c = '''
定义多行字符串
'''
if a < b:
print("最大值:{}".format(b))
print("最小值:{}".format(a))
elif a == b:
print("{}和{}相等".format(a, b))
Max(23,45) # 传入实际参数
#使用help(函数名.__doc__)函数可以打印 输出函数的文档字符串
help(Max.__doc__)
return 返回值要点
1.如果函数中有包含return语句,则结束函数执行并返回值
2.如果函数体中不包含return语句,则返回none
3.要返回多个返回值,使用列表,元组,字典,集合将多个返回值存起来即可
def ptint_star(n):
print("*"*n)
ptint_star(6)
def aver(a, b):
return ((a+b)/2)
c = aver(23,56)
print(c)
def ac(a,b):
c = {b}
print(c)
return a+b # return的作用 1.返回值 2.结束函数的执行
print("hello")
ac(2,5)
b = ac(34, 78)
print(b)
# 设置返回值
def test(x, y, z):
return [x*2, y*3, z*3]
print(test(2, 5 ,6))
函数也是对象 内存分析
print(id(test(2,34,5)))
print(id(test))
# 在堆中开辟函数的对象空间,包含参数代码信息,反复调用,加载一次
c = test # 作为参数传递,返回值返回
c(2,45,6)
print(id(c)) # 地址值一样,说明时同一个对象
print(id(test))
变量的作用域
变量的种类:
全局变量 局部变量
全局变量:
1.函数和类定义之外声明的变量。作用域为定义模块, 从定义位置开始到模块结束
2.全局变量降低了函数的通用性和可读性,尽量避免
3. 一般做常量使用
4.函数内要改变全局变量的值,使用global声明一下
局部变量:
1.函数体中(包含形式参数)声明的变量
2.局部变量的引用比全局变量快,优先考虑使用
3.局部和全部变量重名时,隐藏全部,显示局部
a = 100
def test01():
b = 100
print(b)
a = 19 # 这里a是局部变量
print(a) # 全部变量
print(a)
test01()
def test02():
b = 10
global a
a = 34
print(b)
print(a)
test02()
print(a)
输出局部和全部变量
a = 100
c = 200
def p(a, b, c):
print(a,b,c)
print(locals()) # 输出局部变量
print(globals()) # 输出全局变量
p(10, 23, 45)