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. Day2 Python基础之基本操作(一)

    1.常用命令 调用cmd窗口 Win+R cmd命令窗口清屏 cls cmd命令窗口在运行python时清屏 import os i=os.system('cls') cmd命令窗口在运行python ...

  2. gin框架学习手册

    前言 gin框架是go语言的一个框架,框架的github地址是:https://github.com/gin-gonic/gin 转载本文,请标注原文地址:https://www.cnblogs.co ...

  3. 自签名证书 nginx tomcat

    给Nginx配置一个自签名的SSL证书 - 廖雪峰的官方网站 https://www.liaoxuefeng.com/article/0014189023237367e8d42829de24b6eaf ...

  4. 逻辑斯特回归tensorflow实现

    calss #!/usr/bin/python2.7 #coding:utf-8 from __future__ import print_function import tensorflow as ...

  5. ORA-28000: the account is locked解决办法

    ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob, ...

  6. Angular ngRepea

    <!DOCTYPE html><html ng-app><head lang="en"> <meta charset="UTF- ...

  7. hashCode和equals的关系分析

    hashCode:说白了,简单的就看做一个函数,但是该函数有可能出现:对于某个x值,存在不止一个y值与之对应.这种情况就叫哈希碰撞. 那么: 1.如果hashCode相等,两个对象不一定是同一个对象( ...

  8. class面向对象-1

    一.基本定义 class cl(object): def __init(self,var) self.var=var def func(self,i) print('%s is in %s'%(i,s ...

  9. composer 下载包慢的解决方法

    方法一: 修改 composer 的全局配置文件(推荐方式) 打开命令行窗口(windows用户)或控制台(Linux.Mac 用户)并执行如下命令: composer config -g repo. ...

  10. python之路--MySQL 库,表的详细操作

    一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create  select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...