python3 函数function
def function(arg):
pass
变量:
- 由字母、数字和下划线构成,不能以数字开头,不能任意特殊字符
- 变量定义规范,使用驼峰式或者下划线式格式
- 变量定义尽量简明,易懂,方便使用者应用
作用域:
作用域就是当程序在处理变量时,存放变量名的空间,也叫做命名空间;
只有模块、类和函数,才会生产局部作用域,if,for,while,try这些是语句块,不会产生局部作用域 ;
全局变量只能以只读的方式被局部作用域访问,
如果想在局部作用域创建或修改全局变量,应使用global声明;嵌套作用域用nonlocal声明;
查找变量优先级:LEGB,局部作用域(local) > 嵌套作用域(enclosing) > 全局作用域(global) > python内置作用域(built_in);
位置参数:
定义了位置参数,则传参时是不可缺少的,并且顺序对应;
默认参数:
创建函数时,可以直接为参数指定默认的数值,默认参数必须指向不可变对象;
可变参数:
用*定义可变参数,可变参数可以传入0个或任意个参数,这些参数被调用时会自动封装为一个tuple;如果有一个要被传入的参数L是list或tuple,可以*L形式传入;
def f(*args):
pass
f(1,'a',True)
L=[1,2,3,4]
f(*L)
关键字参数:
用**定义关键字参数,关键字参数可以传入0个或任意个带有参数名的参数,参数会被封装为一个dict,如果有一个要被传入的参数D时dict,可以**D形式传入;
def f(**kw):
name=name
age=age
f(name=''alice,age=18)
D={"name":"alice","age":18}
f(**D)
命名关键字参数:
在参数前以*标记,如果前面有可变参数则可省略*;
def f(*,name):
pass
def f(*args,name): //*args为可变参数
pass
组合参数:参数为固定顺序,(位置参数,默认参数,可变参数,命名关键字参数,关键字参数)
递归函数:
函数调用了自己本身就为递归,大量的递归会产生栈溢出,尾递归可以解决栈溢出,但python还是会溢出;
闭包:
如果一个内部函数里,对外部作用域(全局作用域除外)的变量进行引用时,那么内部函数就被认为是闭包;
闭包=内部函数+定义此函数时的环境。
例如函数里面又定义了一个函数,子函数可以调用父函数中的变量;
def outer(i):
j = 2
def inner():
k = 3
sums = i + j +k
print (sums)
return inner
f = outer(1)
f()
# 6
内部函数inner可以直接引用外部函数outer的参数和变量,这就是闭包。
python3 函数function的更多相关文章
- Javascript自执行匿名函数(function() { })()的原理分析
匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...
- JavaScript自运行函数(function(){})()的理解
今天打开JQuery源文件(jquery-1.8.3), 看到JQuery的初始化过程是这样的 (function( window, undefined ) { // .... })( window ...
- 深入理解javascript中的立即执行函数(function(){…})()
投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-06-12 我要评论 这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是 ...
- javaScript的函数(Function)对象的声明(@包括函数声明和函数表达式)
写作缘由: 平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种 ...
- 函数(Function)作用域 / 远程函数执行
函数跟变量一样也是有作用域的:Global.Script.Local.Private Global:作用于整个PowerShell会话,只要PowerShell会话不结束,被Global修饰的变量和函 ...
- Javascript自执行匿名函数(function() { })()的原理浅析
匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...
- Javascript学习之函数(function)
在JS中,Function(函数)类型实际上是对象;每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. 一 函 ...
- js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))
( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达 ...
- 深入理解立即执行函数(function(){})();
( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,要理解立即执行函数,需要先理解一些函数的基本概念. 1,函数声明,函 ...
随机推荐
- .net WCF WF4.5 状态机、书签与持久化
想看源码请直接翻到最后,使用方式如下图 如果同时需要多个书签可以直接在需要的位置创建书签,会认为是同一个实例. 若需要实现的效果是同时需要好几个部门审核,那么只要在对应的位置同时创建多个书签即可. 编 ...
- css 图片文字垂直居中
先来看张图片 相信很多css新手遇到过这种问题,就是当图片和文本显示在一行的时候,效果很奇葩,文字和图片没法对齐, 这时我们需要做的是: 1,先给块级元素设置 display: inline-bloc ...
- 关于Fatal error: Paletter image not supported by webp 报错
报错提示 Fatal error: Paletter image not supported by webp 原因是由于图片被非法编辑过(相对PHP来说)造成, 有可能是某些编辑图片的软件的格式与PH ...
- POJ_1185_炮兵阵地 dp+状态压缩
题目:炮兵阵地 链接:http://poj.org/problem?id=1185 解题思路: 首先用 int 来表示每一行的情况,比如说第一行是k1,那么[ k1&(k1>>2) ...
- vue-router路由懒加载(解决vue项目首次加载慢)
懒加载:----------------------------------------------------? 也叫延迟加载,即在需要的时候进行加载,随用随载. 为什么需要懒加载? 像vue这种单 ...
- Guava Cache源码详解
目录 一.引子 二.使用方法 2.1 CacheBuilder有3种失效重载模式 2.2 测试验证 三.源码剖析 3.1 简介 3.2 源码剖析 四.总结 优点: 缺点: 正文 回到顶部 一.引子 缓 ...
- js splice vs slice
js splice vs slice https://stackoverflow.com/questions/37601282/javascript-array-splice-vs-slice htt ...
- 集合之LinkedHashMap(含JDK1.8源码分析)
一.前言 大多数的情况下,只要不涉及线程安全问题,map都可以使用hashMap,不过hashMap有一个问题,hashMap的迭代顺序不是hashMap的存储顺序,即hashMap中的元素是无序的. ...
- CSS 的三种样式 内联 内部 外部
CSS:层叠样式表的缩写 就是 Cascading Style Sheets Cascading Style Sheets : 层叠样式表 优先级问题 :遵守就近原则 内联> 内部>外部 ...
- DFI LP DK P45 T2RS PLUS BIOS SETTING
standard cmos features date (mm:dd:yy) mon,oct 11 2016 time (hh:mm:ss) 10 : 10 : 26 ide channel 0 sa ...