首页 > 其他分享 >函数的高级应用技巧

函数的高级应用技巧

时间:2024-10-24 23:45:54浏览次数:7  
标签:闭包 技巧 作用域 高级 变量 print def 函数

一、函数说明文档

  1. 什么是函数说明文档?
  • 给函数的代码做解释说明。
  • 让别人知道程序的作用。

示例:def user():

		    ```
		    内容
		    ```
def a(): #三个‘’号,可以用来对函数的内容进行说明,相当于函数的说明书
   '''
   这是飞机:'sxiaoaklfjkl'
   '''
a()#光标放在调用函数的位置可以看到说明文档

二、函数的嵌套

示例1:

          def a():#外部函数
	    	    print('hello’)
		      def b():#内部函数
		          print('word')

示例2:

              def a():
	    	    print('hello’)
	    	       b()#在a函数里调用了另一个函数b
		     def b():
		          print('word')
		      a()#调用函数a,可以得到两个值
def  b():
    print('你好')
    def c():
        print('haoareyou')

def  b():
    print('你好')
    c()#在函数内部调用另一个函数
def c():
    print('haoareyou')
b()#调用函数b

三、函数的作用域

  1. 全局作用域:指的是在模块中定义的变量和函数,可以在模块的任何位置被访问和使用。其中的变量叫全局变量。
  2. 局部作用域:指的是在函数内部定义的变量和函数,只能在该函数内部被访问。其中的变量叫局部变量。
a=100#在全局作用域中的变量
def b():
   c=10#在局部作用域的变量
print(a)#在全局作用域中,可以访问
print(c)#在局部作用域,不可以在全局作用域中访问

3.global关键字:可以在函数内部声明变量为全局变量

ab=19
def d():
    cd=78
    global ab #将局部变量ab改为全局变量,这样就可以通过局部改变全局的变量
    ab=200#将全局变量改为200
    print(ab)#全局变量可以在函数内部访问
def f():
    print(ab)
f()#先调用函数f得到19
d()#后调用的已经将全局变量修改为200,所以得到200

四、闭包

1. 什么叫闭包?

内部函数使用了外部函数的变量

def item():
    ef=78
    def user():
      print(ef)

2.闭包的作用

  • 保证数据不会被外部污染
def user():
    c=0
    def a():
        print(c)
        #c=c+1  #内部函数不能直接修改闭包的数据,可以通过声明修改
  • 保持变量状态
def b():
    e=2
    def c():
        nonlocal e#声明:指向外部函数变量e,此时可以在内部函数改变闭包e的值
        e+=1
        return e #将e的值返回给函数c
    return c#将函数c的值返回给函数b

五、装饰器

1.什么叫装饰器?

装饰器(decorator)是 Python 中一个非常强大且常用的功能,它允许你在不修改函数本身代码的情况下,为函数或方法添加额外的功能

2.怎么用?

  1. 写个闭包
  2. 创建一个函数
  3. 调用这个函数
  4. 用装饰器获取功能(@闭包名)
  5. 传参
  6. 在内部函数里调用全局作用域里的函数
#1.写一个闭包
def func1(x):#5.传参
    def func2():
        print('功能:金箍棒')
        x()#6.调用func3,闭包
    return func2#返回func2的值给函数func1
#2.创建一个函数
#4.用装饰器获取功能
@func1#将函数func3作为一个实参给func1里的形参x
def func3():
    print('我是大神')
#3.调用函数
func3()

标签:闭包,技巧,作用域,高级,变量,print,def,函数
From: https://blog.csdn.net/TechNinja/article/details/143221599

相关文章

  • 积分技巧
    不同坐标下的积分直角坐标系体积元素:\(dV=dxdydz\)平行于xy平面的面积元素:\(dA=dxdy\)平行于yz平面的面积元素:\(dA=dydz\)平行于xz平面的面积元素:\(dA=dxdz\)球坐标系体积元素:\(dV=r^2sin\thetadrd\thetad\phi\)位于\(r=constant\)球面上的面积元素:\(dA=r^2sin\th......
  • Day 11 函数对象 + 函数的嵌套 + 名称空间与作用域
    目录0昨日复习0.1函数0.2定义0.3三种形式的函数0.3.1无参函数0.3.2有参函数0.3.3空函数0.4函数的返回值0.5函数的调用0.6函数参数的应用0.6.1形参0.6.2实参0.6.3位置形参0.6.4位置实参0.6.5默认形参0.6.6关键字实参0.7可变长参数0.7.1*形参0.7.2*实参0.7.3**......
  • 你好,F#! 你好,函数式编程!
    如果你之前只接触过类C(cpp,java,C#等),你可能很难想象一门语言,没有continue和break,也可能从未听说过柯里化,monad等概念,或许也从未想过,编程语言中还会有单位(量纲)的特性支持。没错,如果是第一次接触类似的语言,会感觉情报源源不断的涌入大脑,有可能感到一头雾水。 但不要因此退缩,......
  • 在运用了高匿ip后我成为了高级玩家
    大家好,我是一名资深游戏玩家,今天受小蝌蚪的邀请,来跟大家简单聊一聊我是如何利于高匿ip在游戏世界里如鱼得水的,最后从一名一般玩家升级成了高级玩家。我一直痴迷于一款国际知名的竞技类游戏,它在全球各地设有不同服务器,每个服务器的游戏环境、玩家水平和活动奖励都有所差异。有......
  • Python小白学习教程从入门到入坑------第十四课 函数基础(语法基础)
    一、函数def定义:将具有独立功能的代码块组织成一个整体,使其具有特殊功能的代码集作用:使用函数可以加强代码的复用性,提高编程续写的效率结构:def 函数名():     函数体注意:函数名要符合标识符规定,最好见名知意,调用函数前,必须保证函数已经存在eg:#1.定义函数#......
  • C++学习笔记2——函数重载
    1.函数重载1.1默认参数C++新增的默认参数指的是函数调用省略实参时自动调用的一个值。通过函数原型设置函数的默认参数,函数定义与没有默认参数时完全相同。如以下函数原型:char*left(constchar*str,intn=1);调用时如果省略参数n,则它的值将为1;否则传入的值将......
  • Day10 函数基础+函数三种定义形式 + 函数的返回值、对象和参数 + 可变长参数
    目录0上节课复习0.1文件是什么0.2操作文件的步骤0.3open0.4指针操作0.5文件的复制1函数基础1.1函数的作用1.2函数的定义形式1.3函数定义的两个阶段2定义函数的三种形式2.1无参函数2.2有参函数2.3空函数3函数的返回值4函数对象5函数参数的应用5.1函数定义分为两个......
  • 创新!高级!【日前、日内非滚动、日内滚动调度以及实时修正】考虑需求侧响应的智慧楼宇多
     ......
  • 认识jQuery函数和对象
    ◼jQuery是一个工厂函数(别名$),调用该函数,会根据传入参数类型来返回匹配到元素的集合,一般把该集合称为jQuery对象。如果传入假值:返回一个空的集合。如果传入选择器:返回在在documnet中所匹配到元素的集合。如果传入元素:返回包含该元素的集合。如果传入HTML字符......
  • CATIA许可调配技巧分享
    在工程设计领域,CATIA软件以其卓越的性能和广泛的应用而备受推崇。然而,在多个用户或项目之间合理调配CATIA许可,确保资源的有效利用和高效工作,成为许多企业和团队面临的挑战。本文将分享一些CATIA许可调配的技巧,帮助您优化资源,提升工作效率。一、了解许可类型和需求首先,深入了解您......