# ### return 返回值
"""
自定义函数的返回值,return 可以把值返回到函数的调用处(1) return + 六大标准数据类型 , 还有类和对象,函数如果不定义return , 默认返回的是None(2) 在执行完return之后,立刻终止函数,后面的代码不执行
"""# 1.return的返回类型
def func():# return 1# return 3.14# return "abc"# return []# return ()# return {"a":1}pass
res = func()
# 如果不定义return , 默认返回的是None
print(res) # None# 2.在执行完return之后,立刻终止函数,后面的代码不执行def func():print(1)print(2)return 3print(4)print(5)res = func()
print(res)def func():for i in range(3):if i == 2:return 1print(i)
res = func()
print(res)# 3.模拟简单的计算器 + - * /
def func(sign,num1,num2):if sign == "+":res = num1 + num2elif sign =="-":res = num1 - num2elif sign == "*":res = num1 * num2elif sign == "/":if num2 == 0:return "除数不能为0  , 脑弟!"res = num1 / num2else:return "这个本计算器真算不了"return resres = func("+",3,5)
res = func("-",10,20)
res = func("*",10,20)
res = func("/",20,10)
res = func("/",20,0)
res = func("&",20,0)
print(res)
# ### 全局变量 和 局部变量
"""
局部变量 : 在函数内部定义的变量(局部命名空间)
全局变量 : 在函数外部定义的或者使用global在函数内部定义(全局命名空间)作用域: 作用的范围
局部变量作用域: 在函数的内部
全局变量作用域: 横跨整个文件生命周期:内置变量 > 全局变量 > 局部变量"""# 1.局部变量
def func():# 定义局部变量a = 5# 获取局部变量print(a)# 修改局部变量a = 10print(a)func()
# print(a) error 不能再全局调用局部变量# 2.全局变量
# 定义全局变量
b = 10
# 获取全局变量
print(b)
# 修改全局变量
b = 20def func():# 可以在函数内部获取全局变量print(b)
func()# 3.使用global在函数内部创建全局变量
def func():global cc = 200
func()
print(c)# 4.使用global在函数内部修改全局变量
d = 300
def func():global dd = 400
func()
print(d)"""
总结:可以使用global 关键字在函数内部定义一个全局变量也可以使用global关键字在函数内部修改一个全局变量
"""
# ### 函数名的使用def func():print("我是func函数")return 1111# 1.函数名是个特殊的变量,可以当做变量赋值
a = "你好"
print(a)
a = func
a()# 函数可以像变量一样销毁
del a
# a()# 2.函数名可以作为容器类型数据的元素
def func1():print("我是func1函数")def func2():print("我是func2函数")    def func3():print("我是func3函数")lst = [func1,func2,func3]
for i in lst:print(i)i() # func1() func2() func3()# 3.函数名可以作为函数的参数
def func4(f):f()func4(func3)# 4.函数名可作为函数的返回值
def func(f):return fres = func(func2) # f <=> func2 =>  res = func2()
res()# ### __doc__ 或者 help查看文档def eat_bigchang(something):"""功能: 大肠刺身参数: 肠子名字返回值: 吃的状态   """print("先把{}洗一洗".format(something))print("找出肠子头放嘴里")print("嘬!!")return "吃完了,满意的放下肠子,擦擦嘴"res = eat_bigchang("猪肠子")
print(res)
help(eat_bigchang)
res = eat_bigchang.__doc__
print(res)
# ### 函数的嵌套
"""
函数之间可以互相嵌套
外层的叫做外函数
内层的叫做内函数
"""def outer():def inner():print("我是inner函数")inner()outer()
# inner()# (1)内部函数可以直接在函数外部调用么  不行!
# (2)调用外部函数后,内部函数可以在函数外部调用吗 不可行!
# (3)内部函数可以在函数内部调用吗 可以!
# (4)内部函数在函数内部调用时,是否有先后顺序 有! 必须先定义在调用# 外层是outer , 内层是inner ,最里层是smaller,调用smaller里面的所有代码def outer():def inner():def smaller():          print("我是smaller函数" , ccid)smaller()inner()
outer()# LEGB 原则 (就近找变量原则)
"""
#找寻变量的调用顺序采用LEGB原则(即就近原则)
B —— Builtin(Python);Python内置模块的命名空间      (内建作用域)
G —— Global(module); 函数外部所在的命名空间        (全局作用域)
E —— Enclosing function locals;外部嵌套函数的作用域(嵌套作用域)
L —— Local(function);当前函数内的作用域            (局部作用域)
依据就近原则,从下往上 从里向外 依次寻找
"""
# ### nonlocal 修改局部变量
"""
nonlocal遵循LEGB就近找变量原则(1)找当前空间上一层的局部变量进行修改(2)如果找不到,会继续向上寻找(3)最后什么也没有,直接报错
"""# (1)找当前空间上一层的局部变量进行修改
def outer():a = 100def inner():nonlocal aa = 200print(a)inner()print(a)outer()    # (2) 如果找不到,会继续向上寻找def outer():a = 100def inner():def smaller():nonlocal a a = 400print(a)smaller()print(a)inner()print(a)
outer()# (3) 注意点:nonlocal只能修改局部变量
print("<=====>")
# 最后什么也没有,直接报错
"""
a = 100
def outer():def inner():def smaller():nonlocal a a = 400print(a)smaller()print(a)inner()print(a)
outer()
"""# 400 400 400
# 500 400 400
# 400 400 500# (4) 不使用nonlocal 修改局部变量
def func():lst = [1,2,3,4]def inner():lst[-1] = 10inner()print(lst)
func()
# ### locals 和 globals (了解)
# locals 获取当前作用域中所有变量"""
locals 如果在全局,调用locals之后,获取的是打印之前的所有变量,返回字典,全局空间作用域
locals 如果在局部,调用locals之后,获取的是调用之前的所有变量,返回字典,局部空间作用域
"""
# 例子1
"""
def func():ff = 123
a = 1
b = 2
res = locals()
c = 3
print(res)
d = 4
"""# 例子2
"""
a1 = 10
def func():a = 1 b = 2res = locals()c = 3print(res)d = 4
a2 = 20
func()
a3 = 30
"""# globals 只获取全局空间中所有变量
"""
globals 如果在全局,调用globals之后,获取的是打印之前的所有变量,返回字典,全局空间作用域
globals 如果在局部,调用globals之后,获取的是调用之前的所有变量,返回字典,全局空间作用域
"""
# 例子1
"""
def func():ff = 123
a = 1
b = 2
res = globals()
c = 3
print(res)
d = 4
"""# 例子2
a1 = 10
def func():a = 1 b = 2res = globals()c = 3print(res)d = 4
a2 = 20
func()  globals
a3 = 30

Python学习,Day11相关推荐

  1. python学习day11

    一:迭代器2 & 装饰器 #codeing:UTF-8 #__author__:Duke #date:2018/3/10/010# 今天讲迭代器# 生成器都是迭代器,迭代器不一定是生成器 l ...

  2. python 学习DAY11

    动态传参 形参* # 聚合所有位置参数的实参 实参* #打散一个位置参数成多个 形参** #聚合所有关键词参数 实参** #打散实参的关键词参数 命名空间 第一种 内置名称空间 第二种 全局名称空间 ...

  3. Python学习笔记:Day11 编写日志创建页

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  4. Python学习笔记:Day 16 编写移动App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  5. Python学习笔记:Day15 部署Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  6. Python学习笔记:Day14 完成Web App

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  7. Python学习笔记:Day13 提升开发效率

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此,写下这些帖 ...

  8. Python学习笔记:Day 12 编写日志列表页

    前言 最近在学习深度学习,已经跑出了几个模型,但Pyhton的基础不够扎实,因此,开始补习Python了,大家都推荐廖雪峰的课程,因此,开始了学习,但光学有没有用,还要和大家讨论一下,因此, 写下这些 ...

  9. Python学习:day21正则表达式

    写在前面: 此博客仅用于记录个人学习进度,学识浅薄,若有错误观点欢迎评论区指出.欢迎各位前来交流.(部分材料来源网络,若有侵权,立即删除) 传送门: day01基础知识 day02知识分类 day03 ...

最新文章

  1. AI面试官也太好骗了吧!
  2. YYDS!怪不得很多朋友去杭州,原来有10W+的福利!
  3. word2007-2010排版中解决段后插入分页符 新页首行空行问题
  4. Go 面向对象三大特性
  5. 数据科学和统计学_数据科学中的统计
  6. 2016_icpc_dalian_onsite
  7. Ubuntu系统下载地址(Ubuntu、ISO、Ubuntu下载)
  8. python3 copy_Python3 深浅拷贝
  9. 定推【好处】篇,牵手定推,好处多多
  10. Vivado2017.4软件安装
  11. 一个例子搞懂单纯形法大M法和两阶段法
  12. PC端微信全面的多开方法详解
  13. 阿里iconfont矢量图库使用
  14. 聚客通微信scrm系统-微信个人号sdk云控方案实现非微信ipad/mac协议
  15. windows 搭建Web服务器和连接局域网打印机
  16. APM32 系列 MCU 获得 IAR Embedded Workbench 和 SEGGER J-Link Debug Probes 的全面支持
  17. RMAN备份数据库_为长期存储做数据库备份(归档备份,Archival Backup)
  18. 学习多种编程语言的益处
  19. 【毕业设计源码】Python学生兼职平台系统
  20. 百度AI,和“吴文俊奖”同行的十二年、千丈山、万里路

热门文章

  1. 2021-12-19 《聪明的投资者》学习笔记-15.积极型投资者的股票选择--7个标准。低市盈率,价格低于净流动资产
  2. Django DTL 与verbatim
  3. 第二章、Android UI 布局 - Android移动开发基础笔记
  4. How to make seperate debuginfo file
  5. VIVADO软件介绍与使用
  6. python openpyxl怎么将数组写入excel_Python-使用openpyxl模块写入Excel文件
  7. [actions] -- actions详细使用
  8. 幼麟棋牌进入房间逻辑分析
  9. RAM和ROM(verilog)
  10. macOS运行Xcode缓慢