返回顶部
首页 > 资讯 > 后端开发 > Python >函数(二)
  • 637
分享到

函数(二)

函数 2023-01-31 00:01:06 637人浏览 安东尼

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

摘要

函数的嵌套 定义 函数内部定义的函数,无法在函数外部使用内部定义的函数 def f1(): def f2(): print('from f2') f2() f2() def f1(): def f2

函数的嵌套

定义

函数内部定义的函数,无法在函数外部使用内部定义的函数

def f1():
    def f2():
        print('from f2')
    f2()
f2()
def f1():
    def f2():
        print('from f2')
f1()
from f2

圆的面积周长

from math import pi
def circle(radius,action='area'):
    def area():
        return pi*(radius**2)
    def perimeter():
        return 2*pi*radius
    if action=='area':
        return area()
    else:
        return perimeter()
print(f'circle(10):{circle(10)}')
print(f"circle(10,action='perimeter'): {circle(10,action='perimeter')}")

名称空间与作用域

定义

内存中有一块内存存储变量名与变量间绑定关系的空间,称为名称空间

内置名称空间

存放python解释器自带的名字

生命周期:解释器启动时生效,关闭失效

全局名称空间

处内置与局部的名字之外,其余都存放在全局名称空间

局部名称空间

用于存放函数调用期间函数体产生的名字
生命周期:函数调用期间生效,函数执行结束后失效

def f1():
    def f2():
        print('from f2')
        f2()
f1()

加载顺序

内置-全局-局部

查找顺序

当为局部名称空间:局部-全局- 内置

x = 1
y = 2
len = 100


def func():
    y = 3
    len = 1000
    print(f"y: {y}")
    print(f"len: {len}")
    # print(a)  # NameError: name 'a' is not defined


func()
y: 3
len: 1000
x = 1


def func():
    print(x)


x = 10
func()
10

作用域

域指的是区域,作用域即作用区域

全局作用域

全局作用域:全局有效,全局存活,包含内置名称空间和全局名称空间。

x = 1


def bar():
    print(x)


bar()
1
局部作用域

局部作用域:局部有小,临时存储,只包含局部名称空间

def f1():
    def f2():
        def f3():
            print(x)
        x = 2
        f3()
    f2()


f1()
2

注意:作用域关系在函数定义阶段就固定死了,与函数的调用无关

# 作用域注意点
x = 1


def f1():  # 定义阶段x=1
    print(x)


def f2():
    x = 2
    f1()


f2()
1

补充:global:修改全局作用域中的变量

​ nonlocal修该局部作用域中的变量

x = 1


def f1():
    x = 2

    def f2():
        #         nonlocal x
        x = 3

    f2()
    print(x)


f1()
2
x = 1


def f1():
    x = 2

    def f2():
        nonlocal x
        x = 3

    f2()
    print(x)


f1()
3

注意:

  1. 在局部想要修改全局的可变类型,不需要任何声明,可以直接修改。

  2. 在局部如果想要修改全局的不可变类型,需要借助global声明,声明为全局的变量,即可直接修改。

--结束END--

本文标题: 函数(二)

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

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

猜你喜欢
  • 函数(二)
    函数的嵌套 定义 函数内部定义的函数,无法在函数外部使用内部定义的函数 def f1(): def f2(): print('from f2') f2() f2() def f1(): def f2...
    99+
    2023-01-31
    函数
  • 5.2Python函数(二)
    目录 目录 前言 (一)偏函数 ==1.说明== ==2.原代码== ==3.显示效果== ...
    99+
    2023-01-30
    函数 Python
  • python 函数(二)
    一、高阶函数 1、函数名可以赋值 2、函数名可以作为函数参数 3、函数名可以作为函数的返回值 eg: def f1(n): return n*n def f2(a, b, f): return f(a) + f(b) ...
    99+
    2023-01-30
    函数 python
  • python函数(二)
    #6.传递任意个数的参数;#在定义函数时,若参数名前面使用“”,则表示可接受任意个数的参数,这些参数保存在一个元祖中。#定义函数,代表b是一个元祖,可以接受多个参数def add(a,*b):s=a#用循环迭代元祖b中的对象。for x ...
    99+
    2023-01-31
    函数 python
  • python—函数实例二
    一、递归 几种常用内置函数方法:1)os.listdir():列出第一层目录文件In [14]: os.listdir("/root/python") Out[14]: ['20.py', '1.py', '19.py', '21.py']...
    99+
    2023-01-31
    函数 实例 python
  • Python函数二(函数名,闭包,迭代器
    函数名的使用: 函数名可以作为值,赋值给变量。 函数名可以作为参数传参给函数。 函数名可以作为返回值。 函数名可以作为元素存储在容器里。 闭包:在嵌套函数内,使用外层局部变量(非全局变量)就是一个闭包,闭包可以多层嵌套。闭包的优点: ...
    99+
    2023-01-30
    函数 迭代 Python
  • day 14 内置函数二
    1.昨日的补充 reversed    翻转, 将一个序列翻转,返回翻转序列的迭代器 lst = ["河南话", "四川话", "东北", "山东", "上海"]   n = reversed(lst) print(list(n)) ...
    99+
    2023-01-30
    函数 day
  • InfluxDB学习之InfluxDB常用函数(二)选择类函数
    1)BOTTOM()函数作用:返回一个字段中最小的N个值。字段类型必须是长整型或float64类型。语法:SELECT BOTTOM(<field_key>[,<tag_...
    99+
    2024-04-02
  • MySQL数据库高级(二)——自定义函数
    MySQL数据库高级(二)——自定义函数 一、自定义函数简介 自定义函数 (user-defined function UDF)是一种对MySQL扩展的途径,其用法和内置函数相同。自定义函数的两个必要条件:...
    99+
    2024-04-02
  • php二维数组排序函数怎么用
    在PHP中,可以使用`array_multisort()`函数对二维数组进行排序。该函数可以按照指定的键或值对数组进行排序。下面是一...
    99+
    2023-10-10
    php
  • python-opencv第二期:imwrite函数详解
    概要:众嗦粥之所周知,在如今计算机视觉(Computer Version short for CV)是人工智能与机器人技术发展的一个重大研究方向,而opencv作为一个专门为计算机视觉编程提供技术与函数支持的第三方库,自然是一个需要重点研究...
    99+
    2023-09-24
    opencv python 计算机视觉
  • ASP函数如何生成二维码?
    二维码是一种可以被扫描的二维条形码,它可以存储大量的信息,如网站链接、文本、电话号码等等。在如今的数字时代,二维码已经成为了一种不可缺少的工具。在ASP中,生成二维码可以通过使用一些第三方库来实现。本文将介绍如何在ASP中使用二维码生成函...
    99+
    2023-09-03
    函数 二维码 javascript
  • day 16 - 2 内置函数(二)练习
    内置函数(二)练习 1、用 map 来处理字符串列表,把列表中所有人都变成 sb,比方 alex_sbname=['alex','wupeiqi','yuanhao','nezha']   name=['alex','wupeiqi',...
    99+
    2023-01-30
    函数 day
  • python二分法查找函数底值
    假设连续函数f(x)在区间(a,b)上有一个底值m,且在该底值下的函数输出值为M,即f(m)=M,利用二分法查找该底值:(s为足够小的数) 令t=(a+b)/2,若|f(t)-M|&...
    99+
    2024-04-02
  • C++中的二进制函数详解
    C++中的二进制函数详解二进制函数是计算机科学中一类重要的函数,它们基于二进制操作,用于处理二进制数据。在C++中,二进制函数提供了丰富的功能,可以进行位操作、位移操作以及逻辑操作。一、位操作位操作是对二进制数据的每一位进行操作的方法。C+...
    99+
    2023-11-18
    二进制函数分析
  • SQL 基础之时区函数(二十一)
    使用数据类型来存储两个日期时间值之间的时间差使用下列的日期时间函数:– CURRENT_DATE– CURRENT_TIMESTAMP– LOCALTIMESTAMP– DBTIMEZONE– SESSIO...
    99+
    2024-04-02
  • php转二进制的函数是什么
    这篇“php转二进制的函数是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php转二进制的函数是什么”文章吧。php转二...
    99+
    2023-06-30
  • C#中怎么处理动态二维数组函数
    这篇文章将为大家详细讲解有关C#中怎么处理动态二维数组函数,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。对于C#动态二维数组函数处理方案理解我们引入一个例子来看看生活中,有很多事物,仅仅用一...
    99+
    2023-06-17
  • ASP 函数和 Spring:存储数据的不二选择。
    在现代应用程序的开发中,存储和管理数据是至关重要的一步。ASP 函数和 Spring 是两种常用的框架,它们都提供了不同的存储数据的方式。在本文中,我们将探讨 ASP 函数和 Spring 的存储数据的方法,以及它们之间的差异和优缺点。 ...
    99+
    2023-10-06
    函数 spring 存储
  • ecshop二次开发之常用函数汇总
    本文详细汇总了ecshop二次开发中常用的函数。分享给大家供大家参考。具体如下: 最近进行ecshop的二次开发,整理了一部分的函数,另外在ecshop论坛上面也发现了很多函数说明,整理汇总如下,供大家参考。 所有函数功...
    99+
    2022-06-12
    ecshop 二次开发 常用函数 汇总
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作