01 函数的注释与嵌套
1.函数的注释
函数的注释与普通注释的区别:用来说明当前函数的参数含义
param 参数名: 参数的注释信息
return: 函数的返回值
例如:
def fun1(name):""":param name: 参数的注释信息:return: 函数的返回值"""print("fun1函数") # 查看源码的快捷键:Ctrl + 左键 点击要查看的函数def fun2(name, age, addr, sal):""":param name: 请输入姓名:param age: 请输入年龄:param addr: 请输入地址:param sal: 请输入薪资:return: 函数执行后的返回信息"""print("fun2函数")# fun1()
# fun2()# lst1 = [1, 2]
# lst1.append()# 打印函数的注释
print(fun1.__doc__)
print(print.__doc__)
2.函数的嵌套:
一个函数的内部调用另一个函数
# def fun1():
# print("欢迎来到七夜老师的课堂!")
# fun2() # 陷入死循环的情况
#
#
# def fun2():
# print("VIP 234 班级的直播课!")
# fun1() # 调用fun1函数
#
#
# # 问题:想在调用fun2函数的同时,去调用fun1函数?
# fun2() # 调用fun2函数
一个函数的内部嵌套另一个函数
def fun3():print("qsdd!")def fun4():print("秋殇大大")fun4()# 问题1:运行fun3函数,会打印几句话?
# fun3()
# 如果不调用函数,是不会去运行函数的内部代码的!!!# 问题2:能不能在最外层,调用fun4函数?
# fun4() # name 'fun4' is not defined
# 在函数的内部定义的函数,不能直接在最外层调用 -- 函数的作用域# 问题3:那么怎么去调用fun4函数呢?
# 应该在fun4函数定义的同级
fun3()
2 python中的内置函数
1.作用域函数(重点)
作用域:定义的变量和函数在哪个范围内可用
文件和文件之间定义的东西,一般不能直接用
函数内定义的东西,不能在文件中直接使用,哪怕同一个文件也不行
类中定义的东西,只在类的内部生效,不能在文件中直接使用
变量:
全局变量 -- 在当前文件内定义的变量,可以在文件任何地方使用
局部变量 -- 在有效范围内可以调用,出了范围就不能用了
类声明的变量也是一样
局部变量在定义的时候可以直接声明为全局变量
局部变量,定义成全局变量
通过global关键字,先声明变量,然后再去赋值
# def fun6():
# b = 5 # 未声明
# global c # 已声明
# c = 6
#
#
# fun6()
# # 哪怕是通过global关键字,转化成全局变量,也不可以直接使用,必须使声明的代码被执行 (注意)
# print(c)
数学函数
abs() 绝对值
print(abs(-1)) # 1
divmod() 返回商和余数
x = int(input("请输入一个整型:"))a, b = divmod(x, 2)print(f"商:{a}")
print(f"余:{b}")
round() 四舍五入(银行家算法)
# print(round(1.5)) # 2
# print(round(3.5)) # 4
# print(round(5.5)) # 6
#
# print(round(2.5)) # 2
# print(round(4.5)) # 4
# print(round(6.5)) # 6# print(round(4.9))
# print(round(4.6))
# print(round(4.51))
看是奇数还是偶数,奇数:四舍五入 偶数:直接舍弃,只在0.5奏效
pow() 次方
print(pow(10, 2))
sum() 求和
min() 最小值
max() 最大值
3 匿名函数
1.匿名函数的定义:
匿名函数:就是没有名字的函数
python lambda表达式实现匿名函数
语法规则:
lambda 参数: 逻辑
匿名函数里面的参数名称,是自定义
结果就是返回表达式的结果
示例:
import math # 导入# pai = math.pi
# print(f"圆周率π: {pai}")
#
# # 圆的面积计算公式: s = π * r²
# r = 5 # 圆的半径
# s = math.pi * pow(r, 2)
# print(f"圆的面积: {s}")# 方式一:普通的函数定义
def s_area(r):""":param r: 圆的半径:return: 返回圆的面积"""s = math.pi * pow(r, 2)return sprint(f"当r的值为5的时候,圆的面积: {s_area(r=5)}")# 方式二:匿名函数的定义
res = lambda r: math.pi * pow(r, 2)
print(f"当r的值为5的时候,圆的面积: {res(r=5)}")
04 装饰器之函数传递
1.函数的传递
python中可以把函数当变量传递
所以这种情况下,可以直接执行被传入的函数\
# def fun1(): # print("ddddd ")
# 函数的调用 -- 函数的名称(),就会执行函数的内部代码 # fun1()
# print(fun1) # <function fun1 at 0x7fbb180c8160>, function代表是一个函数、fun1表示函数的名称、at 0x7fbb180c8160表示函数所在的内存地址
示例如下
def fun1():print("qsdd!")def fun2(fun_name): # 参数的名称可以自定义""":param fun_name: 传入函数的引用/本体:return: 调用传入的这个函数"""print("秋殇大大!")print(f"此时fun_name获取的值:{fun_name}") # fun1函数的引用 -- 引用与调用之间的区别:有没有小括号fun_name() # 请问:这是在调用哪个函数? -- 调用fun1函数# 通过函数的引用,来完成,调用fun2函数的时候,去调用fun1函数
fun2(fun_name=fun1) # 把fun1函数,当做变量进行传值
函数加小括号,表示调用,没有小括号,表示引用