python之简单的函数介绍(http://docs.python.org/3/library)
Python不但能非常灵活地定义函数,而且本身内置了很多有用的函数,可以直接调用。
在上面的网站上我们可以进行查询,Python具体都有哪些函数。
我们也可以再交互命令行中来查找函数:
>>> help (abs)
Help on built-in function abs in module builtins: abs(x, /)
Return the absolute value of the argument.
help(函数名)是一个能够在交互命令行中查找函数功能的语句。
这个abs是一个取绝对值得函数,我们这里还有比较函数:cmp(这里需要注意的是在3.0版本当中已经不存在cmp这个函数了,它已经被比如__lt__(),__eq__()等。如果需要使用cmp(),可以使用(a>b)-(a<b)替代。)
还有转换函数int(),以及str()等
虽然我们有很多已经被定义的函数,但同时我们也可以自己定义函数:
在Python中,定义一个函数要使用 def 语句,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用 return 语句返回
>>> def my_abs(x):
if x >= 0:
return x
else:
return -x
函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。
在使用函数的时候我们会遇到返回多值的情况:

>>> import math
>>> def move(x,y,step,angle):
nx = x + step * math.cos(angle)
ny = y - step * math.sin(angle)
return nx,ny >>> x,y = move(100,100,60,math.pi/6)
>>> print (x,y)
151.96152422706632 70.0
>>> r = move(100,100,60,math.pi/6)
>>> print (r)
(151.96152422706632, 70.0)

但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。
上面叙述了一个简单的函数的定义,在这这里我们还需要介绍一种函数:递归函数
一个函数在自己内部反复的调用者自己就叫做递归函数。
我们这里用一个介绍阶层函数举例:fact(n)

>>> def fact(n):
if n == 1:
return 1
return n * fact(n-1) >>> fact(1)
1
>>> fact(5)
120
>>> fact(10)
3628800

在这里就是用了递归函数,在一个函数当中包含它们自己。
在下面我们会展示一下递归函数的调用方式:
|
1
2
3
4
5
6
7
8
9
10
|
===> fact(5)===> 5 * fact(4)===> 5 * (4 * fact(3))===> 5 * (4 * (3 * fact(2)))===> 5 * (4 * (3 * (2 * fact(1))))===> 5 * (4 * (3 * (2 * 1)))===> 5 * (4 * (3 * 2))===> 5 * (4 * 6)===> 5 * 24===> 120 |
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。
在这里我们以简单的汉诺塔举例:

>>> def move(n,a,b,c):
if n==1:
print (a,'-->',c)
return
else:
if n >= 2:
move(n-1,a,c,b)
print(a,'-->',c)
move(n-1,b,a,c) >>> move(2,'A','B','C')
A --> B
A --> C
B --> C

定义函数的时候,还可以有默认参数。
例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:
>>> int ('123')
123
>>> int ('123',8)
83
这里如果我们不添加后面的数字的话我们电脑就默认是转化为10进制,而如果我们添加后面呃数字的还额外我们就可以定义函数的转化方式。
函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数 :

>>> def f(*args):
print (args) >>> f()
()
>>> f('a')
('a',)
>>> f('a','b')
('a', 'b')

在这里args可以被看成一个tuple,因为它的输出是一个tuple。
定义可变参数的目的也是为了简化调用。
python之简单的函数介绍(http://docs.python.org/3/library)的更多相关文章
- python中multiprocessing.pool函数介绍_正在拉磨_新浪博客
python中multiprocessing.pool函数介绍_正在拉磨_新浪博客 python中multiprocessing.pool函数介绍 (2010-06-10 03:46:5 ...
- [转载]python中multiprocessing.pool函数介绍
原文地址:http://blog.sina.com.cn/s/blog_5fa432b40101kwpi.html 作者:龙峰 摘自:http://hi.baidu.com/xjtukanif/blo ...
- Python中的lambda函数介绍
Lambda函数,即Lambda 表达式(lambda expression),是一个匿名函数(不存在函数名的函数),Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lam ...
- Python数据分析--Numpy常用函数介绍(6)--Numpy中矩阵和通用函数
在NumPy中,矩阵是 ndarray 的子类,与数学概念中的矩阵一样,NumPy中的矩阵也是二维的,可以使用 mat . matrix 以及 bmat 函数来创建矩阵. 一.创建矩阵 mat 函数创 ...
- Python常用内置函数介绍
Python提供了一个内联模块buildin.内联模块定义了一些开发中经常使用的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等功能.下面将介绍内联模块中的常用函数. Python内 ...
- 【Python】高阶函数介绍
其实函数可以作为变量,之前学过C++,对于这种用法并不奇怪.无非就是函数充当变量,可以传入函数而已. 下面分别介绍 Python 中常见的高阶函数:map/reduce, filter, sorted ...
- Python数据分析--Numpy常用函数介绍(6)--Numpy中与股票成交量有关的计算
成交量(volume)是投资中一个非常重要的变量,它是指在某一时段内具体的交易数,可以在分时图中绘制,包括日线图.周线图.月线图甚至是5分钟.30分钟.60分钟图中绘制. 股票市场成交量的变化反映了资 ...
- Python数据分析--Numpy常用函数介绍(2)
摘要:本篇我们将以分析历史股价为例,介绍怎样从文件中载入数据,以及怎样使用NumPy的基本数学和统计分析函数.学习读写文件的方法,并尝试函数式编程和NumPy线性代数运算,来学习NumPy的常用函数. ...
- Python数据分析--Numpy常用函数介绍(3)
摘要:先汇总相关股票价格,然后有选择地对其分类,再计算移动均线.布林线等. 一.汇总数据 汇总整个交易周中从周一到周五的所有数据(包括日期.开盘价.最高价.最低价.收盘价,成交量等),由于我们的数据是 ...
随机推荐
- linux(centos)安装Maven
搭建maven 下载jar包,将apache-maven-3.2.2-bin.tar.gz上传到服务器 1.解压 tar -zvxf apache-maven-3.2.2-bin.tar.gz 2.移 ...
- php/oracle: 解析oracle表中的NCLOB,CLOB字段里面的内容
php/oracle: 解析oracle表中的NCLOB,CLOB字段里面的内容 假如你的字段名是:passenger_info 字段类型是:NCLOB/CLOB,在读表的时候,需要将 passeng ...
- UML类图(三)-------实例
实例分析1——登录模块 某基于C/S的即时聊天系统登录模块功能描述如下: 用户通过登录界面(LoginForm)输入账号和密码,系统将输入的账号和密码与存储在数据库(User)表中的用户信息进行比较, ...
- 为mac终端添加tree命令
原文:http://superuser.com/questions/359723/mac-os-x-equivalent-of-the-ubuntu-tree-command/ 整理步骤如下: $ t ...
- [转载]java操作word(一)
一. 需求背景 在做项目的过程中,经常会遇到要把数据库数据导出到Word文件中的需求,因为很多情况下,我们需要将数据导出到WORD中进行打印.此需求可以通过用程序填充数据到word模板中来实现.所谓模 ...
- Python安装升级步骤
1)安装Pyhton2.7wget http://www.python.org/ftp/python/2.7.5/Python-2.7.5.tar.bz2tar xjvf Python-2.7.5.t ...
- hdoj-1038-Biker's Trip Odometer(水题)
题目真的考验英语 题目链接 需要进行单位的转换 对于Pi用:3.1415927. 5280步相当于1英里. 12英寸相当于1步. 60分钟等于1小时 60秒等于1分钟. 201.168米等于1弗朗.( ...
- vector map迭代器失效解决方案
vector : iter = container.erase(iter); //erase的返回值是删除元素下一个元素的迭代器 vector<int>::iterator it = ...
- XE7 - ListView自测笔记
这两天主要是摸索着使用了ListView和SQLite.郁闷过,也有收获. 一.SQLite 首先记录下SQLite自己碰到的几个小问题: 1. SQLite中字符串连接符是‘||’, 换行符为 x' ...
- 程序员转项目管理之考证PMP
转行项目经历是IT人的出路之一,最近身边有好几个同事都在备考PMP,从个人未来职业发展来看,如果你有将来转行项目管理的想法,应该去尝试考一下PMP. PMP(Project Management Pr ...