#### 作用域
```python
#1.作用域:变量生效的区域
#2.作用域的分类
a.全局作用域(全局变量)
- 全局作用域在程序执行时创建,在程序执行结束时销毁
- 所有函数以外的区域都是全局作用域
- 在全局作用域中定义的变量,都属于全局变量,全局变量可以在程序的任意位置被访问
-globals()返回当前的全局变量
-在模块层级上,locals()和globals()是同一个字典
b.函数作用域(局部变量)
- 函数作用域在函数调用时创建,在调用结束时销毁
- 函数每调用一次就会产生一个新的函数作用域
- 在函数作用域中定义的变量,都是局部变量,它只能在函数内部被访问
#3.变量查找范围
a.首先会在当前作用域中寻找变量,如果有则使用
b.如果没有继续去上一级作用域中寻找,如果有则使用
c.如果依然没有则继续去上一级作用域寻找,以此类推
d.直到找到全局作用域,依然没有找到,则会抛出异常
#4.函数内部使用全局变量
***引用全局变量时,不需要global声明,使用或者修改这个全局变量的时候,需要global声明
#5.global:表明特定变量生存于全局作用域并且应当在其中被重新绑定
-global:修饰变量后,标识该变量是全局变量,对该变量进行修改就是修改全局变量
#6.nonlocal:表明特定变量生存于外层作用域中并且应当在其中被重新绑定
-nonlocal:修饰变量后标识该变量是上一级函数中的局部变量,如果上一级函数中不存在该局部变量,nonlocal位置会发生错误(最上层的函数使用nonlocal修饰变量必定会报错)
#7.global和nonlocale区别
1.global可以用在任何地方,包括最上层函数中和嵌套函数中,即使之前未定义该变量,global修饰后也可以直接使用,2.nonlocal只能用于嵌套函数中,并且外层函数中定义了相应的局部变量,否则会发生错误
```
#### 命名空间
```python
#1.命名空间:一个从名称到对象的映射关系
a.命名空间的本质是字典
b.存储变量
#2.命名空间分类
a.内置函数的集合(包含print()等内置函数和内置异常等)
b.模块中的全局名称(对象的属性集合也是一种命名空间的形式)
c.函数调用中的局部名称
#3.不同命名空间中的名称之间绝对没有关系
#4.在不同时刻创建的命名空间拥有不同的生存期
a.内置名称的命名空间是在 Python 解释器启动时创建的
b.模块的全局命名空间在模块定义被读入时创建;通常,模块命名空间也会持续到解释器退出
c.一个函数的本地命名空间在这个函数被调用时创建,并在函数返回或抛出一个不在函数内部处理的错误时被删除。当然,每次递归调用都会有它自己的本地命名空间
#5.locals获取当前命名空间
```
#### 函数返回值return
```python
#1.返回值:函数执行后返回的结果,通过return来指定函数的返回值
#2.return后面跟什么值,函数就返回什么值,return可以跟任意对象
#3.如果仅仅写了个return或者不写return,则相当于return None
#4.在函数中,return后的代码都不会执行,return一旦执行函数自动结束
def function(*args):
    result=0
    for i in args:
        result += i
    return result
function(10,20,30)
#输出结果
60
def function1():
    print("python")
    def function2():
        print("hello world")
    return function2
print(function())
#输出结果
python
<function function1.<locals>.function2 at 0x000001F787477318>
```
#### 递归函数
```python
#1.递归函数:在函数中自己调用了自己
#2.递归函数的两个要件
#a.基线条件
问题可以被分解为的最小问题,当满足基线条件时,递归就不在执行了
#b.递归条件
将问题继续分解的条件
#3.计算10的阶乘
def function(a):
    if a == 1:
        return 1
    return n * function(n-1)
 print(function(10))  
#输出结果
3628800
```
 
 
python是一门解释型语言(在程序运行时边解释边运行)
解释型语言应用场景:网页脚本、服务器脚本、辅助开发接口这样的对速度要求不高、对不同系统平台间的兼容性有一定要求的程序则通常使用解释性语言
编译器:将其他语言翻译成机器语言的工具
解释器:当编译器以解释方式运行的时候,也称之为解释器
内置变量(错误)正确理解:内置常量,使用dir(__builtins__)获取当前命名空间的内置常量
命名空间:一个从名称到对象的映射关系
作用:
a.存储变量
b.命名空间可以预防变量和函数的命名冲突,每个命名空间都是封闭的
分类:
内建命名空间:记录Python自身提供的函数、模块等被命名的对象
全局命名空间:记录模块的变量、函数、类及其它导入的模块等被命名的对象
局部命名空间:记录函数内部的变量、传入函数的参数、嵌套函数等被命名的对象
若有什么不理解的或者哪里写的不对的,请联系我哈^_^
 

Python---函数2---王伟的更多相关文章

  1. python 函数之day3

    一 函数的语法及特性 什么是函数? 定义:函数是一个功能通过一组语句的集合,由名字(函数名)将其封装起来的代码块,要想执行这个函数,只要调用其函数名即可. 特性: 减少重复代码 使程序变的可扩展 使程 ...

  2. Python函数作用域的查找顺序

    函数作用域的LEGB顺序 1.什么是LEGB? L:local 函数内部作用域 E:enclosing 函数内部与内嵌函数之间 G:global 全局作用域 B:build-in 内置作用域 2.它们 ...

  3. Python函数讲解

    Python函数

  4. Python函数信息

    Python函数func的信息可以通过func.func_*和func.func_code来获取 一.先看看它们的应用吧: 1.获取原函数名称: 1 >>> def yes():pa ...

  5. Python函数参数默认值的陷阱和原理深究"

    本文将介绍使用mutable对象作为Python函数参数默认值潜在的危害,以及其实现原理和设计目的 本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文 ...

  6. Python开发【第四章】:Python函数剖析

    一.Python函数剖析 1.函数的调用顺序 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian #函数错误的调用方式 def fun ...

  7. Python函数解析

    对于Python的函数,我们需要记住的是: 1. 函数的默认返回值是None. 2. python是一个自上而下逐行解释并执行的语言.因此,函数的定义必须在函数被调用之前.同名的函数,后定义的会覆盖前 ...

  8. Python入门笔记(18):Python函数(1):基础部分

    一.什么是函数.方法.过程 推荐阅读:http://www.cnblogs.com/snandy/archive/2011/08/29/2153871.html 一般程序设计语言包含两种基本的抽象:过 ...

  9. Python函数1

    Python 函数命令的使用 想想我们之前数学中学到的函数,首先我们需要定义一个函数,例如f(x)=x, 当x输入任意数的时候,f(x)都能输出和x相等的数值. 那么在Python中是如何实现的呢? ...

  10. python函数传参是传值还是传引用?

    首先还是应该科普下函数参数传递机制,传值和传引用是什么意思? 函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题.基本的参数传递机制有两种:值传递和引用传 ...

随机推荐

  1. 【Python开发】Python:itertools模块

    Python:itertools模块 itertools模块包含创建有效迭代器的函数,可以用各种方式对数据进行循环操作,此模块中的所有函数返回的迭代器都可以与for循环语句以及其他包含迭代器(如生成器 ...

  2. [转帖]glib gslibc libc 的关系与区别

    https://blog.csdn.net/Com_ma/article/details/78692092 [glibc 和 libc] glibc 和 libc 都是 Linux 下的 C 函数库. ...

  3. elasticsearch教程--中文分词器作用和使用

    概述   本文都是基于elasticsearch安装教程 中的elasticsearch安装目录(/opt/environment/elasticsearch-6.4.0)为范例 环境准备 ·全新最小 ...

  4. Hadoop简介及架构

    狭义上来说,hadoop就是单独指代hadoop这个软件, 广义上来说,hadoop指代大数据的一个生态圈,包括很多其他的软件 2.hadoop的历史版本介绍 0.x系列版本:hadoop当中最早的一 ...

  5. Mongo数据库备份

    安全访问状态下 手动在线备份: mongodump -h 127.0.0.1:27017 -u=username -p=123456 -d dbname -o /home/backups 手动恢复: ...

  6. Django中ajax发送post请求,报403错误CSRF验证失败解决办法

    今天学习Django框架,用ajax向后台发送post请求,直接报了403错误,说CSRF验证失败:先前用模板的话都是在里面加一个 {% csrf_token %} 就直接搞定了CSRF的问题了:很显 ...

  7. Codeforces 1201C. Maximum Median

    传送门 看到中位数考虑先把数排序一下 然后有个显然的贪心,一个数增加后一定不能比下一个数大,不然我们直接增加下一个数显然更优 所以初始时的中位数操作后也是中位数 那么我们只要考虑中间再往后怎么加使得答 ...

  8. Codeforces 1216F. Wi-Fi

    传送门 这个题一眼 $dp$ 就是设 $f[i][0/1]$ 表示我们只考虑前 $i$ 个位置,并且保证覆盖了前 $i$ 个位置,当前位置 选/不选 的最小代价 考虑转移,设题目给出的字符串为 $s$ ...

  9. IDEA导入外部code style

    至于用何种代码风格, 根据自己团队规范来吧 提供一个Google的IDEA java风格吧 Github地址 原文地址:https://blog.csdn.net/sasuke__/article/d ...

  10. spring boot本地开发与docker容器化部署的差异

    spring boot本地开发与docker容器化部署的差异: 1. 文件路径及文件名区别大小写: 本地开发环境为windows操作系统,是忽略大小写的,但容器中区分大小写 2. docker中的容器 ...