python--对函数的理解
函数的定义
def functionname(arg):
Suite
Return [expression]
1.def 定义函数时的关键字
2.functionname 函数名
3.arg函数的参数名,传入不同的参数,返回值也不同,通过参数的传递使函数的功能得以实现。
4.Suite是实现函数功能的代码段
5.return 后面接的表达式就是函数的返回。
函数的调用
functionname(arg) 函数名(参数)
函数被调用后返回的就是return表达式的值
函数调用时的参数要严格按照函数定义的时候的参数来进行传递。
Return 后面接的是表达式,不能接赋值语句。
函数的参数
必备参数:(函数定义时)
函数的参数在定义时只有参数名,没有值,这种定义的方式使得函数调用时一定得传入参数才能够正常的调用函数。必备参数的个数和顺序必须是和定义时是一致的,除非调用时使用了关键字参数就可以改变参数顺序传入。
默认参数:(函数定义时)
函数的参数在定义时给出了初始值,这时参数在调用时如果不传入值给这个参数,函数就会使用定义时的默认值,如果传了值进来给这个参数,那么默认值就会被丢弃而使用你传进来的这个值。
关键字参数:(函数调用时)
关键字参数是指的在函数调用的时候,传参时把定义函数时参数名和对应的值一起传入函数中,这时传入的参数的顺序就不用考虑了。
不定长参数:(定义和调用都可以用)
函数在定义时不确定要传入的参数的个数时使用
*args 代表元组,args是元组的名字,传入的值就是这个元组的元素,这种参数不接受关键字参数。
**kwargs 代表字典,kwargs是这个字典的名字,调用时使用关键字参数,把参数作为字典的元素,参数名为字典的键,参数值为字典的值。
这两种参数可以同时使用,但必须*args在前面,kwargs在后面,函数调用时要把直接传的值放在关键字参数的前面。
*args和**kwargs也可以在函数调用时的使用。
当我们清楚了函数定义时参数的个数和顺序时,我们可以把需要传入的参数组合成元组,使用*+元组名进行传参来调用函数。
我们把需要传递进去的参数的参数名作为字典的键,参数的值作为字典的值,再把这个由需要传递的进去的参数组成的字典用**+字典名进行传参来调用函数
注:调用函数时参数要根据函数定义时的参数的个数和类型进行值的传递时,一定要清楚在函数定义时参数是什么类型的参数,只有传进去的参数能与定义时相匹配才能正确的调用返回函数的返回值。
全局变量和局部变量
定义:
全局变量:定义在函数外的拥有全局作用域的变量,可以在整个程序范围内访问
全局变量可以在函数内被访问但不可以在函数内被修改。
局部变量:定义在函数内部的拥有一个局部作用域的变量,只能在其被声明的函数内部访问。
变量的作用域:
变量的在哪里被赋值的就决定了这个变量作用的区域。
global关键字:
在函数内使用global 关键字申明这个变量是全局变量,使用global在这个函数内对这个变量进行修改时,会使得每次调用这个函数时都会修改这个全局变量的值。
匿名函数
基本形式:
lambda arg : expression
使用关键字lambda,arg是函数参,expression是匿名函数的返回值
它既不能包含控制结构也没有return语句,返回的值就仅仅是表达式计算后得到的值。
使用lambda可以省下函数定义的过程,可以使得代码更加精简。
对于有些只需要使用一两次的函数,使用lambda也就不需要考虑函数命名的问题。
内置函数 filter,map
内嵌函数和闭包
概念
函数里面再嵌套一个函数,外面的函数的的返回值return里面的函数,这时里面的函数可以访问到外面这个函数的的变量,在函数外部我们不能直接调用里面的函数,但能通过外面函数的返回值来调用里面的函数,我们称这种现象为闭包。
装饰器
使用函数的嵌套,外层函数传进来的参数是一个函数对象,里层函数对传进来的这个函数进行加工处理后再返回处理后的函数。
递归函数
回调函数
python--对函数的理解的更多相关文章
- Python之高阶函数如何理解?
我们先要了解一下什么是所谓的高阶函数: 看定义:什么是高阶函数? 高阶函数:我们知道一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足 ...
- 深入理解python中函数传递参数是值传递还是引用传递
深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是"传对象引用 ...
- python的函数
函数一词起源于数学,但是在编程中的函数和数学中的有很大不同.编程中的函数式组织好的,可重复使用的,用于实现单一功能或相关联功能的代码块. 我们在学习过程中已经使用过一些python内建的函数,如pri ...
- Python之函数与变量
本节内容 函数介绍及其作用 函数的定义与调用 函数的参数说明 全局变量与局部变量 值传递和引用传递 一.函数的介绍及其作用 编程语言中的函数与数学中的函数是有区别的:数学中的函数有参数(输入),就会有 ...
- Python基础-函数篇
本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8.内置函数 函数与函数式编程 1.面向对象: 华山派-- ...
- python编程语言 函数的形参
python编程语言 函数的形参的讲解: 我在交互模式中写了个函数: def adder(**args): sum=0 for x in args.keys(): sum+=args[x] retur ...
- Python中文字符的理解:str()、repr()、print
Python中文字符的理解:str().repr().print 字数1384 阅读4 评论0 喜欢0 都说Python人不把文字编码这块从头到尾.从古至今全研究通透的话是完全玩不转的.我终于深刻的理 ...
- Python入门-函数的使用到程序的公布安装
Python入门-函数的使用到Python的公布安装 本文主要适合有一定编程经验,至少掌握一门编程语言的人查看. 文中样例大多都是简单到认识英文单词就能看懂的水平,主要讲的是Python的总体使用方法 ...
- python基础—函数装饰器
python基础-函数装饰器 1.什么是装饰器 装饰器本质上是一个python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的返回值是也是一个函数对象. 装饰器经常用于有切 ...
- 【python进阶】深入理解系统进程2
前言 在上一篇[python进阶]深入理解系统进程1中,我们讲述了多任务的一些概念,多进程的创建,fork等一些问题,这一节我们继续接着讲述系统进程的一些方法及注意点 multiprocessing ...
随机推荐
- HTML 样式- CSS
如何使用CSS CSS 是在 HTML 4 开始使用的,是为了更好的渲染HTML元素而引入的. CSS 可以通过以下方式添加到HTML中: 内联样式- 在HTML元素中使用"style&qu ...
- Beanstalkd使用
Beanstalkd,一个高性能.轻量级的分布式内存队列系统,最初设计的目的是想通过后台异步执行耗时的任务来降低高容量Web应用系统的页面访问延迟,支持过有9.5 million用户的Facebook ...
- 如何做到Zero Downtime重启Go服务?
graceful的实践 使用endless库来实现,比如接入gin: r := gin.Default() r.GET("/", index) endless.ListenAndS ...
- 正则匹配所有的a标签
<a\b[^>]+\bhref="([^"]*)"[^>]*>([\s\S]*?)</a>分组1和分组2即为href和value解释: ...
- 通过判断cookie过期方式向Memcached中添加,取出数据(Java)
应用场景:在数据驱动的web开发中,经常要重复从数据库中取出相同的数据,这种重复极大的增加了数据库负载.缓存是解决这个问题的好办法.但是ASP.NET中的虽然已经可以实现对页面局部进行缓存,但还是不够 ...
- Android Studio 提高工作效率的奇技
1.ctrl+f12 ctrl+f12此快捷键可以调出当前文件的大纲,并通过模糊匹配快速跳转至指定的方法.勾选上“show anonymous classes”后其功能相当于Eclipse中的ctrl ...
- web前端面试题及答案
1.常用那几种浏览器测试?有哪些内核(Layout Engine)? 答: (Q1) 浏览器:IE,Chrome,FireFox,Safari,Opera. (Q2) 内核:Trident,Ge ...
- Github windows客户端简单上手教程
作为一个前端,如果不知道GitHub,那你有可能就是一个假前端(O(∩_∩)O哈哈~)开个玩笑...进入正题,咳咳... 1.第一步要在GitHub官网下载最新的客户端,网址是https://desk ...
- JSON - 使用cJSON 解析Qt通过UDP发送的JSON数据
1,cJSON支持在C程序中创建和解析JSON数据,其提供多种方法供C程序使用,最直接的是将cJSON.c和cJSON.h加入到C工程中,源代码:https://github.com/DaveGamb ...
- js拉起或下载app
产品提了个需求,通过手机网页判断是否安装了自己公司app,如果安装了则拉起app,没有安装则跳转到下载页. 经过各种查阅资料尝试总结了一个还算可以的办法. 拉起app的原理就是js和原生统一好一个地址 ...