Python基础(7) - 函数
Python
函数是一个能完成特定功能的代码块,可在程序中重复使用,减少程序的代码量和提高程序的执行效率。在python中函数定义语法如下:
def function_name(arg1,arg2[,…]):
statement
[return value]
返回值不是必须的,如果没有return语句,则Python默认返回值None。
>>> def hello():
... print 'Hello World!'
...
>>> res = hello()
Hello World!
>>> res
>>> print res
None
>>> type(res)
<type 'NoneType'>
>>>
Python函数没有声明和定义的区分。
python函数能返回多个值?
>>> def foo():
... return 1,'',[1,'a']
>>> res = foo()
>>> print res
(1, '', [1, 'a'])
>>> res
(1, '', [1, 'a'])
>>> type(res)
<type 'tuple'>
>>>
Python看起来能返回多个返回值,但其实是一个元组,因为元组在语法上不需要一定带上圆括号。
所以表面上看上去是返回了多个值,实际上上述代码是组包和解包的过程,元组使用逗号打包,序列通过放置几个逗号分隔的目标到语句的左边来解包。
函数也是对象,可以被引用,可以作为函数的参数,可以作为容器对象的元素,如List, Dictionary等。
>>> def func():
... print 'call func.'
...
>>> def foo(func):
... func()
...
>>> foo(func)
call func.
>>>
函数参数:
参数的传递规则如下:
赋值在Python中就意味着引用。函数中的参数与调用者共同引用的同一个对象。
参数的行为可以与C语言进行类比:
如参数是整数,字符串
如参数是列表
参数匹配的模式:
func(value) Caller Normal argument: matched by position
func(name=value) Caller Keyword argument: matched by name
def func(name) Function Normal argument: matches any by position or name
def func(name=value) Function Default argument value, if not passed in the call
def func(*name) Function Matches remaining positional args (in a tuple)
def func(**name) Function Matches remaining positional args (in a dictionary)
python函数是否支持重载?
重载(overload)的特点:
1、参数类型不同
2、参数个数不同
Python的动态类型+可变参数,天然就支持了重载的特性,而且不需要像C++那样去定义多个同名函数。动态类型的特性还让python函数具备了C++中函数模板的功能。
lambda表达式/匿名函数:
lambda [arg1[, arg2, … argN]]: expression
注意:表达式与参数以及lambda都必须在同一行。lambda 函数可以接收任意多个参数(包括 可选参数)并且返回单个表达式的值。lambda 函数不能包含命令,包含的表达式不能超过一个。不要试图向 lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。
>>> foo = lambda x,y:x+y
>>> foo(1,3)
4
>>> (lambda x,y:x+y)(5,4)
9
>>>
内嵌函数:在函数内部定义函数
在函数体内创建另外一个函数是合法的,内部函数整个函数体都在外部函数的作用域内,除了在函数体内,任何地方都不能对其进行调用
>>> def foo():
... def inner():
... print 'call inner.'
... print 'call foo'
... inner()
...
>>> foo()
call foo
call inner.
>>>
Python基础(7) - 函数的更多相关文章
- python基础——匿名函数
python基础——匿名函数 当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便. 在Python中,对匿名函数提供了有限支持.还是以map()函数为例,计算f(x)=x2时 ...
- python基础——返回函数
python基础——返回函数 函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_ ...
- python基础——sorted()函数
python基础——sorted()函数 排序算法 排序也是在程序中经常用到的算法.无论使用冒泡排序还是快速排序,排序的核心是比较两个元素的大小.如果是数字,我们可以直接比较,但如果是字符串或者两个d ...
- python基础——filter函数
python基础——filter函数 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函 ...
- python基础——匿名函数及递归函数
python基础--匿名函数及递归函数 1 匿名函数语法 匿名函数lambda x: x * x实际上就是: def f(x): return x * x 关键字lambda表示匿名函数,冒号前面的x ...
- 八. Python基础(8)--函数
八. Python基础(8)--函数 1 ● 函数返回布尔值 注意, 自定义的函数也可以是用来作逻辑判断的, 例如内置的startswith()等函数. def check_len(x): ' ...
- python基础之函数详解
Python基础之函数详解 目录 Python基础之函数详解 一.函数的定义 二.函数的调用 三.函数返回值 四.函数的参数 4.1 位置参数 4.2 关键字参数 实参:位置实参和关键字参数的混合使用 ...
- Python学习笔记(一)python基础与函数
1.python基础 1.1输入与输出 输出 用print加上字符串,就可以打印指定的文字或数字 >>> print 'hello, world' hello, world > ...
- Day3 - Python基础3 函数、递归、内置函数
Python之路,Day3 - Python基础3 本节内容 1. 函数基本语法及特性 2. 参数与局部变量 3. 返回值 嵌套函数 4.递归 5.匿名函数 6.函数式编程介绍 7.高阶函数 8. ...
- Python基础__函数
本节将进入函数的介绍,函数是Python基础中最精彩的部分之一,接下来将对函数做详细介绍.函数 函数就是对代码进行一个封装.把实现某一功能的代码进行封装到一起.下次需要使用时不需要进行编写代码直接调用 ...
随机推荐
- LDAP 相关链接
http://www.cnblogs.com/fish-li/archive/2012/05/07/2486840.html细说ASP.NET Windows身份认证 http://www.cnblo ...
- linux命令之系统管理命令(上)
1.lsof:查看进程打开的文件 该命令可以列举系统中已经被打开的文件,可以根据文件找到对应的进程信息,同时也可以根据进程信息找到进程打开的文件. 参数 说明 -c 进程名 显示指定的进程名打开的文件 ...
- 870. Advantage Shuffle
Given two arrays A and B of equal size, the advantage of A with respect to B is the number of indice ...
- apply和call的用法
以前对与apply()还有call()一直处于一种我知道这是干什么,但是不知道怎么使用的情况,今天看别人的博客的时候,看到了一点这类知识,感觉有点感觉,现在把新的心得写下来. A.apply(B,[a ...
- centos6安装mysql5.7
RPM包安装与卸载mysql 建议:装完mysql后立刻创建一个密码,不然下次登录的时候会有问题.原因是mysql 5.7会自动创建一个临时密码,过期失效,可以到grep "password ...
- K2路由器刷机笔记
临近双11,K2路由器广告加的越来越放肆,实在太难忍受就刷了个固件.这里把路由器刷机的一般流程记录一下. 一.开启telnet 刷固件,首先要取得路由器系统的控制权,这样我们才能自由的进行操作. 方法 ...
- vue-cli起的webpack项目 用localhost可以访问,但是切换到ip就不可以访问
我用的是vux起的一个项目(移动端,基于vue的),因为是移动端的,需要在手机上测试,发现用http://localhost:8081/访问的挺好的,但是换到ip就访问不了,期初我以为是代理的原因,将 ...
- JavaScript DOM编程艺术 笔记(一)
探测浏览器品牌版本代码-----浏览器嗅探 代码 JavaScript==ECMAScript java几乎可以部署在任何环境,js只应用于web浏览器 API是一组得到各方面共同认同的基本约定(元素 ...
- NVIDIA TX1/TX2 对比
处理器方面,TX2由TX1的Tegra X1升至Tegra Parker处理器,该处理器由16nm工艺制造,6核心设计,CPU部分由2个丹佛+4个A57核心共同组成. GPU则采用Pascal架构,拥 ...
- 分布式文件系统之FastDFS
环境引入: 在一个大型的教育官网,会拥有大量优质的视频教程,并且免费提供给用户去下载,文件太多如果高效存储?用户访问量大如何保证下载速度?分布式文件系统是解决这些问题的有效方法之一 一.什么是文件系统 ...