Python---函数2---王伟
#1.作用域:变量生效的区域
#2.作用域的分类
a.全局作用域(全局变量)
- 全局作用域在程序执行时创建,在程序执行结束时销毁
- 所有函数以外的区域都是全局作用域
- 在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问
-globals()返回当前的全局变量
-在模块层级上,locals()和globals()是同一个字典
- 函数作用域在函数调用时创建,在调用结束时销毁
- 函数每调用一次就会产生一个新的函数作用域
- 在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
a.首先会在当前作用域中寻找变量,如果有则使用
b.如果没有继续去上一级作用域中寻找,如果有则使用
c.如果依然没有则继续去上一级作用域寻找,以此类推
d.直到找到全局作用域,依然没有找到,则会抛出异常
***引用全局变量时,不需要global声明,使用或者修改这个全局变量的时候,需要global声明
-global:修饰变量后,标识该变量是全局变量,对该变量进行修改就是修改全局变量
-nonlocal:修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)
1.global可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,2.nonlocal只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误
```
#1.命名空间:一个从名称到对象的映射关系
a.命名空间的本质是字典
b.存储变量
a.内置函数的集合(包含print()等内置函数和内置异常等)
b.模块中的全局名称(对象的属性集合也是一种命名空间的形式)
c.函数调用中的局部名称
a.内置名称的命名空间是在 Python 解释器启动时创建的
b.模块的全局命名空间在模块定义被读入时创建;通常,模块命名空间也会持续到解释器退出
c.一个函数的本地命名空间在这个函数被调用时创建,并在函数返回或抛出一个不在函数内部处理的错误时被删除。当然,每次递归调用都会有它自己的本地命名空间
```
#1.返回值:函数执行后返回的结果,通过return来指定函数的返回值
#2.return后面跟什么值,函数就返回什么值,return可以跟任意对象
#3.如果仅仅写了个return或者不写return,则相当于return None
#4.在函数中,return后的代码都不会执行,return一旦执行函数自动结束
result=0
for i in args:
result += i
return result
function(10,20,30)
60
print("python")
def function2():
print("hello world")
return function2
print(function())
python
<function function1.<locals>.function2 at 0x000001F787477318>
```
#1.递归函数:在函数中自己调用了自己
#2.递归函数的两个要件
#a.基线条件
问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
#b.递归条件
将问题继续分解的条件
def function(a):
if a == 1:
return 1
return n * function(n-1)
print(function(10))
3628800
```
解释型语言应用场景:网页脚本、服务器脚本、辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言
编译器:将其他语言翻译成机器语言的工具
解释器:当编译器以解释方式运行的时候,也称之为解释器
作用:
a.存储变量
b.命名空间可以预防变量和函数的命名冲突,每个命名空间都是封闭的
内建命名空间:记录Python自身提供的函数、模块等被命名的对象
全局命名空间:记录模块的变量、函数、类及其它导入的模块等被命名的对象
局部命名空间:记录函数内部的变量、传入函数的参数、嵌套函数等被命名的对象
Python---函数2---王伟的更多相关文章
- python 函数之day3
一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...
- Python函数作用域的查找顺序
函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...
- Python函数讲解
Python函数
- Python函数信息
Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...
- Python函数参数默认值的陷阱和原理深究"
本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...
- Python开发【第四章】:Python函数剖析
一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...
- Python函数解析
对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...
- Python入门笔记(18):Python函数(1):基础部分
一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...
- Python函数1
Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...
- python函数传参是传值还是传引用?
首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...
随机推荐
- 二 MyBatis 从入门到进阶 2 Maven 入门
1 Maven 的使用 1.1 本地仓库与中央仓库 本地仓库:Window \ Preferences \ Maven \ User Settings \ Local Repository 中央仓库: ...
- 【Linux开发】linux设备驱动归纳总结(二):模块的相关基础概念
linux设备驱动归纳总结(二):模块的相关基础概念 系统平台:Ubuntu 10.04 开发平台:S3C2440开发板 xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ...
- SolidWorks学习笔记7 镜像,阵列
镜像 将特征,面,实体相对于一个平面来复制.修改原来的特征,镜像特征随之改变 阵列 线性阵列 , 在左侧,先激活要阵列的特征,然后点击小柱 然后选择方向1和方向2,该方向的阵列距离和数量(一般使用边线 ...
- MHA简单部署
MHA是目前比较成熟的mysql高可用集群方式之一. 一.参考文档:1.官方文档:[ https://github.com/yoshinorim/mha4mysql-manager/wiki ]2.个 ...
- Elasticsearch-数组和多字段
ES-数组和多字段 当需要在同一个字段中需要拥有多个值时,就会用到数组. 数组 如果要索引拥有多个值的字段,将这些值放入方括号中即可.在music索引下的album类型中,添加songs字段,存储专辑 ...
- coredump产生的几种可能情况
coredump产生的几种可能情况 造成程序coredump的原因有很多,这里总结一些比较常用的经验吧: 1,内存访问越界 a) 由于使用错误的下标,导致数组访问越界. b) 搜索字符串时,依靠字符串 ...
- 什么是云数据库 HBase 版
云数据库 HBase 版(ApsaraDB for HBase)是基于 Hadoop 的一个分布式数据库,支持海量的PB级的大数据存储,适用于高吞吐的随机读写的场景.目前在阿里内部有数百个集群,100 ...
- 使用Keras基于RCNN类模型的卫星/遥感地图图像语义分割
遥感数据集 1. UC Merced Land-Use Data Set 图像像素大小为256*256,总包含21类场景图像,每一类有100张,共2100张. http://weegee.vision ...
- java代码--Date类获取当前时间-格式化输出
44:52 阅读数:2299 package cn.Date; import java.text.Format; import java.text.SimpleDateFormat; import ...
- Uncaught SyntaxError: Unexpected identifier
$.ajax({ //请求头 type:"POST", contentType:"application/x-www-form-urlencoded", url ...