所谓函数,就是把具有独立功能的代码块组织成为一个小模块,在需要的时候调用
函数是带名字的代码块,用于完成具体的工作
需要在程序中多次执行同一项任务时,你无需反复编写完成该任务的代码,而只需调用该

任务的函数,让python运行其中的代码,你将发现,通过使用函数,程序编写,阅读,测试
和修复都将更容易
函数的使用包含两个步骤:

【1】定义函数–封装独立的功能
【2】调用函数–享受封装的成果


def 函数名():
函数封装的代码
【1】def是英文define的缩写

【2】函数名称应该能够表达函数封装代码的功能,方便后续的调用
【3】函数名称的命名应该符合标识符的命名规则

可由字母、下划线和数字组成,不能以数字开头,不能与关键字重名


形参:定义函数时,小括号中的参数,是用来接收参数用的,在函数内部作为变量使用
实参:调用函数时,小括号中的参数,是用来把数据传递到函数内部用的


在程序开发中,有时候,会希望一个函数执行结束后(举例子:温度计函数,要返回给我>们当前的温度),告诉调用者一个结果,以便调用者针对具体的结果作出后续的处理

返回值是函数完成工作后,最后给调用者的一个结果
在函数中使用return关键字可以返回结果

调用函数一方,可以使用变量来接收函数的返回结果


每一个python源文件都可以是一个模块文件
可以在一个python文件中定义函数或者变量
然后在另一个文件中使用import
filename 导入这个模块
导入之后,就可以使用模块名.变量/模块名.函数的方式,使用这个模块中定义的函数和变量.


局部变量是在函数内部定义的变量,只能在函数内部使用
函数执行结束后,函数内部的局部变量,会被系统回收

不同的函数,可以定义相同的名字的局部变量,但是各用各的不会产生影响



不同函数之间可以使用相同的局部变量名称,不会产生影响


【1】全局变量是在函数外部定义的变量,(没有定义在某一个函数内),所有函数内部都可以使用这个变量



【2】修改全局变量的值 使用global关键字
声明一下变量即可



【3】定义全局变量的时候,应该定义在函数的上方

变量和数据都是保存在内存中的
在python中函数的参数传递以及返回值都是靠引用传递的


在python中,变量和数据是分开存储的,
数据保存在内存中的一个位置,
变量中保存的是数据在内存中的地址,变量中记录数据的地址,就叫做引用
使用id()函数可以查看变量中保存数据所在内存的地址


把一个函数当作函数,传递给函数,返回一个加强版的函数
本质上是一个返回值的函数

“在不改变原函数的基础上,给函数增加功能”


【1】要求给func1加一串*不改变原函数内容



【2】判断年龄,如果值为负数则等于零



【3】使用@符号将装饰器应用到函数



【4】给函数前后加一句内容



【5】带有返回值的装饰器

Python语法之函数、引用和装饰器的更多相关文章

  1. python基础之函数当中的装饰器

    在实际工作当中存在一个开放封闭原则 1.对扩展是开放的 为什么要对扩展开放呢? 我们说,任何一个程序,不可能在设计之初就已经想好了所有的功能并且未来不做任何更新和修改.所以我们必须允许代码扩展.添加新 ...

  2. python学习总结---函数使用 and 装饰器

    # 函数使用 ### 零碎知识 - 灵活的if-else ```python a = 3 if False else 5 print(a) ''' if False: a = 3 else: a = ...

  3. python基础编程: 函数示例、装饰器、模块、内置函数

    目录: 函数示例 装饰器 模块 内置函数 一.函数示例: 1.为什么使用函数之模块化程序设计: 不使用模块程序设计的缺点: 1.体系结构不清晰,可主读性差: 2.可扩展性差: 3.程序冗长: 2.定义 ...

  4. python语法糖之有参装饰器、无参装饰器

    python的装饰器简单来说就是函数的一种形式,是为了扩展原来的函数功能而设计的. 装饰器的特别之处在于它的返回值也是一个函数,可以在不改变原有函数代码的基础上添加新的功能 # 先定义一个函数及引用# ...

  5. python语法基础-函数-装饰器-长期维护

    ######################################################### # 装饰器 # 装饰器非常重要,面试Python的公司必问, # 原则:开放封闭原则 ...

  6. Python函数篇:装饰器

    装饰器本质上是一个函数,该函数用来处理其他函数,它可以让其他函数在不需要修改代码的前提下增加额外的功能,装饰器的返回值也是一个函数对象.它经常用于有切面需求的场景,比如:插入日志.性能测试.事务处理. ...

  7. Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列)

    Python进阶(七)----带参数的装饰器,多个装饰器修饰同一个函数和递归简单案例(斐波那契数列) 一丶带参数的装饰器 def wrapper_out(pt): def wrapper(func): ...

  8. Python之路(第十一篇)装饰器

    一.什么是装饰器? 装饰器他人的器具,本身可以是任意可调用对象,被装饰者也可以是任意可调用对象. 强调装饰器的原则:1 不修改被装饰对象的源代码 2 不修改被装饰对象的调用方式 装饰器的目标:在遵循1 ...

  9. 第四天 内置函数2 随机码 装饰器 迭代器、生成器 递归 冒泡算法 JSON

    关于函数的return li = [11,22,33,44] def f1(arg): arg.append(55) li = f1(li) print(li) 因为li = f1(li) 实际赋值的 ...

  10. Python进阶内容(二)--- 装饰器

    谈装饰器前,需要明白一件事,Python 中的函数和 Java.C++不太一样,Python 中的函数可以像普通变量一样当做参数传递给另外一个函数,例如: def foo(): print(" ...

随机推荐

  1. 构建前端第9篇之(上)---Vue组件引入,使用

    张艳涛写于2020-1-25日 一.想写下vue引入组件和插件的理解 今天是星期一,周末也看俩两天,在这个几天了,比较迷,主要是从开始学习import指令开始的,import 是es6的语法, imp ...

  2. jboss未授权访问

    测试 poc地址 https://github.com/joaomatosf/jexboss

  3. python编写DDoS攻击脚本

    python编写DDoS攻击脚本 一.什么是DDoS攻击 DDoS攻击就是分布式的拒绝服务攻击,DDoS攻击手段是在传统的DoS攻击基础之上产生的一类攻击方式.单一的DoS攻击一般是采用一对一方式的, ...

  4. 使用Fileupload完成文件的上传下载

    目录 使用Fileupload完成文件的上传下载 为什么需要进行文件上传下载? 引入jar包 文件上传 注意事项 编写一个简单的文件上传jsp页面 编写Servlet Student类用于封装数据,后 ...

  5. 随着日益增多的新技术,Android开发接下来的路该怎么走?

    很多小伙伴们经常问我android移动开发者的走向,一部分人都想多快好省,间歇性踌躇满志.持续性混吃等死 ,只想用CV的开发模式们快速完成工作,然后回家王者农药.其实这种现象很普遍,我想告诉你的是 , ...

  6. 大学同学做Java开发比我多5K,八年老Android只会crud该转Java吗?

    最近在网上看到这样一个帖子: 做了八年Android开发,感觉这块做着也挺没意思,日常工作就是做一些架构优化,质量数据监控,改一改构建脚本,最主要的是业务负责人没有一个是做客户端的,都是后端的人. 最 ...

  7. MapReduce框架原理-OutputFormat工作原理

    OutputFormat概述 OutputFormat主要是用来指定MR程序的最终的输出数据格式 . 默认使用的是TextOutputFormat,默认是将数据一行写一条数据,并且把数据放到指定的输出 ...

  8. MySQL 不完全入门指南

    由于 MySQL 的整个体系太过于庞大,文章的篇幅有限,不能够完全的覆盖所有的方面.所以我会尽可能的从更加贴进我们日常使用的方式来进行解释. 小白眼中的 MySQL 首先,对于我们来说,MySQL 是 ...

  9. 文件上传 安鸾 Writeup

    目录 Nginx解析漏洞 文件上传 01 文件上传 02 可以先学习一下文件上传相关漏洞文章: https://www.geekby.site/2021/01/文件上传漏洞/ https://xz.a ...

  10. K8s 部署 Gitlab

    K8s 版本:1.20.6 这里使用的镜像不是官方的,而是 Gitlab 容器化中使用非常多的一个第三方镜像:sameersbn/gitlab,基本上和官方保持同步更新.地址:http://www.d ...