这篇教程Python全栈之作用域和闭包写得很实用,希望能帮到您。
1. return返回值# ### return 自定义函数的返回值"""概念:return 把函数内部的数据返回到函数的外面,返回到函数的调用处1.return + 六大标准数据类型 , 除此之外还可以返回函数 或者 是类对象2.return 在执行时,意味着终止函数,后面的代码不执行.3.如果不定义return返回值,默认返回None"""# (1) return + 六大标准数据类型def func(): # return 111 # return 6.89 # return "你好帅啊,我爱死你乐" # return [1,2,3] # return {"a":1,"b":2} return 1,2,3 # 返回元组res = func()print(res)# (2) return 在执行时,意味着终止函数,后面的代码不执行.def func(): print(1) print(2) return 3 print(4)res = func()print(res)def func(): for i in range(5): if i == 3: return 4 print(i)res = func()print(res)# (3) 如果不定义return返回值,默认返回Nonedef func(): passres = func()print(res) # None# 注意点 打印的数据和返回的数据不是等价的,返回的数据是可以自定义的;res = print(1234)print(res) # None# 模拟+-*/计算器"""功能: 完成计算参数: 2个数字和运算符返回值: 计算后的结果"""def calc(num1,num2,sign): if sign == "+": return num1 + num2 elif sign == "-": return num1 - num2 elif sign == "*": return num1 * num2 elif sign == "/": if num2 == 0: return "除数不能为零" return num1 / num2 else: return "抱歉,超出了我的运算范围."res = calc(3,5,"+")res = calc(3,5,"-")res = calc(3,5,"*")res = calc(3,0,"/")res = calc(3,0,"&")print(res)
2. 全局变量_局部变量# ### 全局变量和局部变量"""1.概念 局部变量:在函数内部定义的变量就是局部变量 全局变量:在函数外部定义的变量或者在函数内部使用global关键字声明是全局变量2.作用域: 局部变量的作用范围仅仅在函数的内部 全局变量的作用范围横跨整个文件3.生命周期:该变量的作用时长 内置命名空间 -> 全局命名空间 -> 局部命名空间 (开辟空间顺序) 内置属性 > 全局属性 > 局部属性 (作用时长:长->短)"""# 1 局部变量def func(): # 定义一个局部变量 a = 1 # 获取当前的局部变量 print(a) # 修改一个局部变量 a = 2 print(a)func()# print(a) error# 2.全局变量# 定义一个全局变量b = 10# 获取当前的全局变量print(b)# 修改一个全局变量b = 20print(b)def func(): print(b)func()# 3.函数内部定义全局变量def func(): global c c =30func()print(c)# 4.函数内部修改全局变量d = 50def func(): global d d = 51func()print(d)"""总结:global的使用如果当前不存在全局变量,可以在函数内部通过global关键字来定义全局变量如果当前存在全局变量,可以在函数内部通过global关键字来修改全局变量""" 
3. 函数名的使用# ### 函数名的使用"""# python中的函数可以像变量一样,动态创建,销毁,当参数传递,作为值返回,叫第一类对象.其他语言功能有限"""def func(): print( "我是func函数")# (1)动态创建a = 1print(a)a = funca()# (2)动态销毁del a# a()# func()# (3)当参数传递def func2(): return "我是func2函数"def func1(f): return f() # "我是func2函数"res = func1(func2)print(res)# (4)作为值返回def func3(): print( "我是func3函数" )def func4(f): return fres = func4(func3) print(res)res()print("<===>")# (5)函数名可以作为容器类型数据的元素lst = [func,func3]for i in lst: i()print("<=========>")# ### __doc__ 或者help查看文档def big_chang_cishen(something): """ 功能: 教你怎么吃大肠 参数: 吃的内容 返回值: 是否满意 """ print("把{}洗一洗".format(something)) print("直接找肠子头,放嘴里,吸一下") print("擦擦嘴,满意的放下肠子头") return "吃完了,真好吃~"big_chang_cishen("生肠子")# 方法一res = big_chang_cishen.__doc__print(res)# 方法二help(big_chang_cishen)
4. 函数的嵌套
4.1 函数的嵌套# ### 函数的嵌套"""互相嵌套的两个函数: 包裹在外层的叫做外函数,内层的就是内函数"""def outer(): # inner() def inner(): print("我是inner函数")""""""# (1)内部函数可以直接在函数外部调用么 不行# inner()# (2)调用外部函数后,内部函数可以在函数外部调用吗 不行# outer()# inner()# (3)内部函数可以在函数内部调用吗 可以outer()# (4)内部函数在函数内部调用时,是否有先后顺序 有的# 先定义在调用# 在其他语言中有预加载的机制,提前把函数驻留到内存中,然后再去编译脚本内容# python没有预加载函数的机制,只能先定义在调用;# 外函数是outer 中间函数是inner 最里层是smaller ,调用smaller函数def outer(): def inner(): def smaller(): print("我是smaller函数") smaller() inner()outer()# LEGB 原则def outer(): def inner(): def smaller(): print(a) smaller() inner()outer()"""LEGB原则(就近找变量原则)#找寻变量的调用顺序采用LEGB原则(即就近原则)B Python3.10和Python3.9版本之间的差异介绍 Python全栈之字符串和列表相关操作 |