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

定义可变参数的目的也是为了简化调用。

时间: 2024-10-25 22:06:22

python之简单的函数介绍(http://docs.python.org/3/library)的相关文章

简单的函数介绍(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(函数名)是一个能够在交互命令行中查找函数功能的语句. 这个a

python入门五(函数)【5-2 python中递归函数】

5-2 python中递归函数 Python之递归函数 在函数内部,可以调用其他函数.如果一个函数在内部调用自身本身,这个函数就是递归函数. 举个例子,我们来计算阶乘 n! = 1 * 2 * 3 * ... * n,用函数 fact(n)表示,可以看出: 1 fact(n) = n! = 1 * 2 * 3 * ... * (n-1) * n = (n-1)! * n = fact(n-1) * n 所以,fact(n)可以表示为 n * fact(n-1),只有n=1时需要特殊处理. 于是,

Python常用内置函数介绍

Python提供了一个内联模块buildin.内联模块定义了一些开发中经常使用的函数,利用这些函数可以实现数据类型的转换.数据的计算.序列的处理等功能.下面将介绍内联模块中的常用函数. Python内置函数的基本用法可以查看Python安装目录下的doc目录下的说明文档,本文仅介绍Python典型的内置函数使用方法. reduce(function, iterable[, initializer]) 对序列的值进行累计计算 reduce()可以实现对序列进行连续处理的功能.reduce()的声明

python多值参数函数介绍,数字累加例子

python函数是可以接收不确定个数的参数的,最简单的例子如下: def func(num, * args, **kwargs): print(num) print(args) print(kwargs) 如果运行func(25),执行结果如下: 25 () {} 如果运行fun(1, 2, 3, 4), 执行结果如下: 1 (2, 3, 4) {} 如果运行fun(1, 2, 3, 4, name = 'xiaoming', age = 18),执行结果如下: 1 (2, 3 ,4) {'na

Python连载8-datetime包函数介绍

一.datetime包(上接连载7内容) 1.函数:datetime (1)用法:输入一个日期,来返回一个datetime类? (2)格式:datetime.datetime(年,月,日,hour=,minute=,second=) 其中hour,minute,second可选 (3)附加类方法: today():返回本地当前时间 now():返回本地当前时间 utcnow():返回本地当前时间 fromtimestamp(时间戳):返回时间戳的本地时间 dt = datetime.dateti

python 最简单的函数(无参无返回值)

#定义了一个无参无返回值的函数def myPrint(): print("sunck is a very good man!") print("sunck is a nice man!") print("sunck is a handsome man!") myPrint()myPrint()myPrint()myPrint()myPrint() 原文地址:https://www.cnblogs.com/pygo/p/12243029.html

python学习笔记之——函数模块

1.函数参数说明: def login(name,info,passwd = '123456') 函数参数可以有默认值,调用函数时: 1.如果只传二个参数,则有默认值的一定要放到最后: def login(name,passwd = '123456',info='welcome to you') 2.如果传二个参数,一定要指明形参: login(user) login(user,passwd) login(user,info='欢迎') login(user,info='欢迎',passwd='

python搭建简单的web服务器

由于要做自动化和性能测试,工作中需要有一个能够控制返回消息数据的web服务器,所以用python初步实现了一个简单的web服务器,能够处理HTTP的请求(GET,POST,PUT),并完成响应.先简单说明下原理,python中实现web服务器大概分两个步骤: 1.      创建一个套接字,绑定到指定的IP和端口,保持监听 2.      创建一个handle类,当收到请求消息时,作出响应 主要使用的类有两个: HTTPServer:HTTP服务器的基类,提供了HTTP服务器的常用方法,创建服务

python 中简单的输出语句

1 python 中简单的输出语句 #coding:utf-8#输出的是整数,得到的也是整数,用raw_inputusername=raw_input('请输入用户名:')#输出的是整数或者字符串,得到的只是字符串#在终端输入时:python空格.py文件拖入pwd=raw_input('请输入密码:')#两个条件同时成立才执行if username=='lily'and pwd=='abc':print 'login'else:print 'notlogin' 2 利用python定义简单的函