返回顶部
首页 > 资讯 > 后端开发 > Python >python的函数学习2
  • 334
分享到

python的函数学习2

函数python 2023-01-30 23:01:26 334人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。 1 比如执行test.py: 2 3 python test.py 4 1、Python解释器先启动,因而首先加载内置名称空间 5 2、执行test.p

用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。

1 比如执行test.py:
2 
3 python test.py
4 1、Python解释器先启动,因而首先加载内置名称空间
5 2、执行test.py文件,然后以文件为基础,加载全局名称空间
6 3、在执行文件的过程中如果调用函数,则临时产生局部名称空间

名称的加载顺序是先加载内置名称空间,再加载全局名称空间,最后是局部名称空间,所以,如果在全局名称空间中使用局部名称空间,是错误的,因为根本就找不到。

而在函数调用时查找名字的顺序是:局部名称空间--->全局名称空间--->内置名称空间。

首先来谈一下什么是作用域?先看一个例子:

 1     b = 20
 2     def func1():
 3         a = 10
 4         print(a)
 5         print(b)
 6 
 7     def func2():
 8         print(b)
 9         # print(a)
10 
11     func1()
12     func2()

上面这段代码虽然简单,却可以很好的说明了函数作用域的问题,如上,如果注释掉函数func2的print(a)这一句,程序可以正常运行,但是如果加上这一句就出错,出错的原因是a没有定义,为什么b在两个函数中都可以引用,而a只能在func1中使用呢?这就是因为a的作用域的问题了。

变量作用域:

  ①L(Local)局部作用域

  ②E(Enclosing)闭包函数外的函数中

  ③G(Globa)全局作用域

  ④B(Built-in)内建作用域

 

以 L –> E –> G –>B 的规则查找,即:在局部找不到,便会去局部外的局部找(例如闭包),再找不到就会去全局找,最后去内建中找。

那么这具体是什么意思呢?

  如上面的例子中,由名称空间的加载可知调用函数func1时产生func1的局部名称空间,而a就在该空间内,执行函数func1时从该名称空间中查找a,所以func1可以找到a。

  但是函数func2的局部名称空间中却没有变量a,所以找不到,那就去全局名称空间找,也没有,所以出错。(Enclosing是对于闭包来说的)

  这就说明a的作用域只能作用于函数func1。而b属于全局名称空间,属于全局变量,因此其可被func1和func2调用。

 

global,nonlocal关键字:

  当内部作用域想修改外部作用域的变量时,要用到global,nonlocal关键字。

  global 关键字用于局部作用域修改全局作用域时在局部变量前加上global。

  nonlocal 关键字用于要修改嵌套作用域(即Enclosing,外层非全局作用域)。

1     a = 10
2     def func():
3         global a
4         a += 3
5         print(a)
6 
7     func()

这是一个很简单的使用global关键字,如果注释掉global a 这一句,程序会报错。

 

 1     def func1():
 2         n = 0
 3 
 4         def func2():
 5             nonlocal n
 6             x = n
 7             n += 1
 8             return x
 9 
10         return func2
11 
12 
13     c = func1()  
14     print(type(c))  # 可以看到c是一个函数对象
15     print(c())    # 执行c()其实就是执行func2()

这是一个简单的闭包,可以看到首先是函数func1里嵌套了一个函数func2,func2调用了func1的内部变量。如果注释掉nonlocal n的话会出错。

闭包:

  闭包就是能够读取其他函数内部变量的函数,即定义在一个函数内部的函数“。在本质上,闭包是将函数内部和函数外部连接起来的桥梁。

--结束END--

本文标题: python的函数学习2

本文链接: https://lsjlt.com/news/181420.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • python的函数学习2
    用来存放名字的地方,有三种名称空间:内置名称空间,全局名称空间,局部名称空间。 1 比如执行test.py: 2 3 python test.py 4 1、python解释器先启动,因而首先加载内置名称空间 5 2、执行test.p...
    99+
    2023-01-30
    函数 python
  • Python学习——函数
    1.函数定义: def Firstfunction(): 'Mashiro' print("I love Mashiro!") print(Firstfunction.__doc__)#函数文档 Firstfuncti...
    99+
    2023-01-30
    函数 Python
  • Python学习 :函数
    函数 函数(Functions) 是指可重复使用的程序片段。它们允许你为某个代码块赋予名字,允许你通过这一特殊的名字在你的程序任何地方来运行代码块,并可重复任何次数。这就是调用(Calling)函数。 函数的作用: 1、减少重复代码 2、...
    99+
    2023-01-30
    函数 Python
  • Python学习-函数
    DRY:don`t repeat yourself函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。你已经知道Python提供了许多内建函数,比如print()。但你也可以自己创建...
    99+
    2023-01-31
    函数 Python
  • python基础学习2
    一.算数运算符 +加法,-减法,*乘法,/除法,//地板除,%求余,**幂运算。 二.逻辑运算符 非not、且and、或or。优先级依次为not,and,or。 三.print()end结尾 print()#默认为print(end="...
    99+
    2023-01-30
    基础 python
  • Python学习笔记(2)
    Python开发IDE:pycharm   ,eclipse 快捷键:Ctrl+?整体注释 一·运算符   +(加)   -(减)  *(乘)   /(除)  **(幂)  %(余)   //(商)     判断某个东西是否在某个东西里边...
    99+
    2023-01-30
    学习笔记 Python
  • python 学习总结2
    温度转换问题 一、温度转换   目前有两种表示温度的方法一种是摄氏度另一种是华氏度,摄氏度的结冰点为0度,沸点为100度将温度等分刻画,华氏度的结冰点为32度,沸点为212度将温度进行等刻度划分。   现需要将按格式输入的摄氏度转换为华氏...
    99+
    2023-01-30
    python
  • Python学习日记-2
    *使用pickle处理数据存储,类似于java中的serialization,是将对象转化为二进制码存入文件中,主要函数pickle.dump(obj,file),pickle.load(file) *在每个文件加入后缀.pkl,实现逐行数...
    99+
    2023-01-31
    日记 Python
  • Python学习笔记(2)
    Unicode字符串: GB2312编码为表示中文产生 python内部编码是unicode编码Unicode通常用两个字节表示一个字符,原有的英文编码从单字节变成双字节,只需要把高字节全部填0 就可以以Unicode表示的字...
    99+
    2023-01-31
    学习笔记 Python
  • Python学习:函数(function
    编写函数def是可执行的代码。Python函数是有一个新的语句便携的,即def。不像C这样的编译语言,def是一个可执行的语句,函数并不存在,知道Python运行了def后才存在。事实上,if语句、while语句升至是其他的 def中嵌套都...
    99+
    2023-01-31
    函数 Python function
  • Python学习笔记2——Python概
    Python概述   语言:交流的工具,沟通媒介   计算机语言:人跟计算机交流的工具,翻译官   Python是计算机语言里的一种     代码:人类语言,同过代码命令机器,跟机器交流     Python解释器: 就是那个担任翻译工作...
    99+
    2023-01-30
    学习笔记 Python
  • Python自动化开发学习2-2
    集合创建集合可以用set(),或者直接用{}set_a = set([1,2,3,4,5]) set_b = {1,3,5,7,9} print(set_a) print(set_b) print(type(set_a),type(set_...
    99+
    2023-01-31
    Python
  • Python学习笔记(11-2):matplotlib绘图——图形绘制函数
    Python学习笔记(11-2):matplotlib绘图——图形绘制函数 一、设置参数的预备知识1、常见的绘图参数(1)曲线设置参数(2)数据点标记(marker)的设置参数(3)其他参数...
    99+
    2023-10-26
    python matplotlib 学习
  • Python自动化开发学习3-2-匿名函
    下面这部分内容计划应该是第三周讲的,但是应该是当时来不及,第四周上来的内容又比较重要,就放到了第四周讲完后才讲了。匿名函数如果函数值使用一次,并且结构结单(需要一行表达式),就可以使用匿名函数。匿名函数的好处:程序一次行使用,所以不需要定义...
    99+
    2023-01-31
    Python
  • python学习笔记 函数
    一等函数 在python中,函数是一等对象。编程语言理论家把“一等对象”定义为满足以下条件的程序实体: 在运行时创建 能赋值给变量或数据结构中的元素 能作为参数传给函数 能作为函数的返回结果 在python中,整数、字符串和字典都是一...
    99+
    2023-01-31
    函数 学习笔记 python
  • 【12】Python函数学习(中)
    作用域、局部和全局变量  前向引用:def test(name,age=18,*args,**kwargs):      print(name)    print(age,args,kwargs)    school("Test")   #...
    99+
    2023-01-31
    函数 Python
  • Python学习之函数 def
    目录一、函数概述二、函数的调用三、函数参数的使用规则1、位置参数2、关键字参数赋值3、位置参数和关键字参数混合使用4、参数组 **字典  *列表5、*列表6、**字典总结一...
    99+
    2024-04-02
  • python函数学习一(跳出函数)
    #!/bin/python #-*- coding -*- def printinfo( nu, *others ): print nu for var in others: print var...
    99+
    2023-01-31
    函数 python
  • python学习2-将python版本改
    1.首先查看当前python的版本[root@localhost~]# python -VPython 2.6.6 2.解压2.7版本的python源码包tar xfPython-2.7.tar.bz2cdPython-2.7./confi...
    99+
    2023-01-31
    版本 python
  • python学习笔记2—python文件
    python学习笔记2——python文件类型、变量、数值、字符串、元组、列表、字典一、Python文件类型1、源代码python源代码文件以.py为扩展名,由pyton程序解释,不需要编译[root@localhost day01]# v...
    99+
    2023-01-31
    学习笔记 文件 python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作