#### 作用域
```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. iOS 12.4 越狱已经发布

    昨天 unc0ver 3.5.0 发布,支持 iOS 12.4 越狱.12.4 目前为最新版的系统. 下载地址:https://github.com/pwn20wndstuff/Undecimus/r ...

  2. 【转载】softmax的性质及其实现

    原文地址:https://segmentfault.com/a/1190000010039529?utm_source=tag-newest softmax函数将任意n维的实值向量转换为取值范围在(0 ...

  3. centos7基础安装

    基础: hostname xxvim /etc/hostname systemctl stop firewalld systemctl disable firewalldsetenforce 0gre ...

  4. 小记--------spark-Wordcount经典案例之对结果根据词频进行倒序排序

    还是以经典案例Wordcount为例:   逻辑思路: 1.先把文本按空格切分成每个单词    flatMap() 2.将每个单词都转换成Tuple2类型(hello ,1)    map() 3.将 ...

  5. excel批量修改文件名称

    步骤: 1. 然后将标准号所在的列复制三份到旁边相邻的空白列 2. 使用方方格子让三列中最左面的列只保存如下格式的数据: DB37/T或DB37/ 3. 使用方方格子让三列中中间的列的只保存如下格式的 ...

  6. java web 二维码生成

    pom支持: <!-- 二维码支持包 start--> <dependency> <groupId>com.google.zxing</groupId> ...

  7. jQuery扁平化风格手风琴菜单

    在线演示 本地下载

  8. idea 去除重复代码提醒

  9. python-连接mysql实例

    import pymysql # 创建连接 conn = pymysql.connect(host='192.168.71.140', port=3306, user='root', passwd=' ...

  10. node工具之nodemon

    nodemon nodemon是一种工具,可以自动检测到目录中的文件更改时通过重新启动应用程序来调试基于node.js的应用程序. 安装 npm install -g nodemon //或 npm ...