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,函数声明,函 ...
随机推荐
- Day2 Python基础之基本操作(一)
1.常用命令 调用cmd窗口 Win+R cmd命令窗口清屏 cls cmd命令窗口在运行python时清屏 import os i=os.system('cls') cmd命令窗口在运行python ...
- gin框架学习手册
前言 gin框架是go语言的一个框架,框架的github地址是:https://github.com/gin-gonic/gin 转载本文,请标注原文地址:https://www.cnblogs.co ...
- 自签名证书 nginx tomcat
给Nginx配置一个自签名的SSL证书 - 廖雪峰的官方网站 https://www.liaoxuefeng.com/article/0014189023237367e8d42829de24b6eaf ...
- 逻辑斯特回归tensorflow实现
calss #!/usr/bin/python2.7 #coding:utf-8 from __future__ import print_function import tensorflow as ...
- ORA-28000: the account is locked解决办法
ORA-28000: the account is locked第一步:使用PL/SQL,登录名为system,数据库名称不变,选择类型的时候把Normal修改为Sysdba;第二步:选择myjob, ...
- Angular ngRepea
<!DOCTYPE html><html ng-app><head lang="en"> <meta charset="UTF- ...
- hashCode和equals的关系分析
hashCode:说白了,简单的就看做一个函数,但是该函数有可能出现:对于某个x值,存在不止一个y值与之对应.这种情况就叫哈希碰撞. 那么: 1.如果hashCode相等,两个对象不一定是同一个对象( ...
- class面向对象-1
一.基本定义 class cl(object): def __init(self,var) self.var=var def func(self,i) print('%s is in %s'%(i,s ...
- composer 下载包慢的解决方法
方法一: 修改 composer 的全局配置文件(推荐方式) 打开命令行窗口(windows用户)或控制台(Linux.Mac 用户)并执行如下命令: composer config -g repo. ...
- python之路--MySQL 库,表的详细操作
一 库操作 数据库命名规则 可以由数字,字母,下划线,@, #, $ 区分大小写 唯一性 不能使用关键字如 create select 不能单独使用数字 最长128位 # 这些是对上次的补充. 二 ...