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的更多相关文章

  1. Javascript自执行匿名函数(function() { })()的原理分析

    匿名函数指没有指定函数名或指针的函数,自执行匿名函数只是其中一种,下文中称这种函数为:自执行函数 下面是一个最常见的自执行函数: // 传统匿名函数 (function() { alert('hell ...

  2. JavaScript自运行函数(function(){})()的理解

    今天打开JQuery源文件(jquery-1.8.3), 看到JQuery的初始化过程是这样的 (function( window, undefined ) { // .... })( window ...

  3. 深入理解javascript中的立即执行函数(function(){…})()

    投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-06-12 我要评论 这篇文章主要介绍了深入理解javascript中的立即执行函数,立即执行函数也叫立即调用函数,通常它的写法是 ...

  4. javaScript的函数(Function)对象的声明(@包括函数声明和函数表达式)

    写作缘由: 平时再用js写函数的时候,一般都是以惯例 function fn () {} 的方式来声明一个函数,在阅读一些优秀插件的时候又不免见到 var fn = function () {} 这种 ...

  5. 函数(Function)作用域 / 远程函数执行

    函数跟变量一样也是有作用域的:Global.Script.Local.Private Global:作用于整个PowerShell会话,只要PowerShell会话不结束,被Global修饰的变量和函 ...

  6. Javascript自执行匿名函数(function() { })()的原理浅析

    匿名函数就是没有函数名的函数.这篇文章主要介绍了Javascript自执行匿名函数(function() { })()的原理浅析的相关资料,需要的朋友可以参考下 函数是JavaScript中最灵活的一 ...

  7. Javascript学习之函数(function)

    在JS中,Function(函数)类型实际上是对象;每个函数都是Function类型的实例,而且都与其他引用类型一样具有属性和方法.由于函数是对象,因此函数名实际上也是一个指向函数对象的指针. 一 函 ...

  8. js立即执行函数: (function ( ){...})( ) 与 (function ( ){...}( ))

    ( function(){…} )() ( function (){…} () ) 是两种javascript立即执行函数的常见写法,最初我以为是一个括号包裹匿名函数,再在后面加个括号调用函数,最后达 ...

  9. 深入理解立即执行函数(function(){})();

    ( function(){-} )()和( function (){-} () )是两种javascript立即执行函数的常见写法,要理解立即执行函数,需要先理解一些函数的基本概念. 1,函数声明,函 ...

随机推荐

  1. hibernate 的sum(filed)引发的NullPointException错误解决过程

    背景: 在用hql语句进行sum查询时遭遇NPE问题: StringBuilder builder = new StringBuilder("select SUM(actualWorking ...

  2. mysql数据库和JDBC学习

    数据库概念: 数据库(Database)是按照数据结构来组织.存储和管理数据的建立在计算机存储设备上的仓库. ---------数据库服务器,mysql(管理) 数据库服务器---->N多库-- ...

  3. elasticsearch判断索引是否存在

    一.判断索引是否存在 指定索引名,判断指定的索引是否存在集群中 /** * 判断指定的索引名是否存在 * @param indexName 索引名 * @return 存在:true; 不存在:fal ...

  4. final域的内存语义

    final 一.final的基本语义 final关键字可以用来修饰类.方法和变量(包括成员变量和局部变量) 当用final修饰一个类时,表明这个类不能被继承. 当用final修饰一个方法时,表明这个方 ...

  5. Python之自测代码标识__name__=='__main__'

    __name__是python的默认的自测代码标识,其他文件导入该python文件时,不会执行这行代码以下部分. def yangfan(a): print('yangfan %s' %a) prin ...

  6. MySQL 深入浅出数据库索引原理(转)

    本文转自:https://www.cnblogs.com/aspwebchh/p/6652855.html 前段时间,公司一个新上线的网站出现页面响应速度缓慢的问题, 一位负责这个项目的但并不是搞技术 ...

  7. Leaf——美团点评分布式ID生成系统 UUID & 类snowflake

    Leaf——美团点评分布式ID生成系统 https://tech.meituan.com/MT_Leaf.html

  8. Linux下设置MySql自动启动

    https://www.cnblogs.com/sunny3096/p/7954146.html

  9. 原生node路由操作以及注意事项

    var http = require("http"); var url = require("url"); var ejs = require("ej ...

  10. vue.js实战——vue 实时时间

    created:实例创建完成后调用,此阶段完成了数据的观测等,但尚未挂载,$el还不可用,需要初始化处理一些数据时会比较有用. mounted:el挂载到实例上后调用,一般我们的第一个业务逻辑会在这里 ...