美文网首页
python函数

python函数

作者: yunqing_71 | 来源:发表于2019-03-08 23:29 被阅读0次

python内置了很多函数,可供我们直接调用:
例如:
abs(-20)求绝对值
max(1,2,3)找出最大值
int('123')类型转换函数
float('12.11')
str(111)
bool(1) True
bool('') False
函数名就是指向一个函数对象的引用,完全可以把一个函数名赋给一个变量。
a=abs
a(-20)
输出20

定义一个函数:

在python中,我们用def定义一个函数,例如:

def name(a, b):
    if a < b:
        print(b)
    elif a == b:
        print(a, '=', b)
    else:
        print(a)


name(5, 1)  # 调用name()函数

如果定义一个空函数,什么也不做,可以用pass作为函数体
pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数的代码,就可以先放一个pass,让代码能运行起来。

def name():
      pass

返回多个值

函数可以返回多个值吗?答案是肯定的。

比如在游戏中经常需要从一个点移动到另一个点,给出坐标、位移和角度,就可以计算出新的新的坐标:

import math

def move(x, y, step, angle=0):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny

import math语句表示导入math包,并允许后续代码引用math包里的sin、cos等函数。

然后,我们就可以同时获得返回值:

 x, y = move(100, 100, 60, math.pi / 6)
 print(x, y)
151.96152422706632 70.0

但其实这只是一种假象,Python函数返回的仍然是单一值:

 r = move(100, 100, 60, math.pi / 6)
 print(r)
(151.96152422706632, 70.0)

原来返回值是一个tuple!但是,在语法上,返回一个tuple可以省略括号,而多个变量可以同时接收一个tuple,按位置赋给对应的值,所以,Python的函数返回多值其实就是返回一个tuple,但写起来更方便。

python函数的参数

例如:我们求x2,很容易,但如果是x3,x4...甚至xn呢?
这就需要我们考虑一下,是不是把n也写成一个参数呢?

def name(x, n):
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    print(s)

name(5, 4)

另外我要说的是:python中允许有默认参数存在,只需要在参数中标明即可,例如上边的我想默认求x^2

def name(x, n=2):  # 默认参数n=2
    s = 1
    while n > 0:
        s = s * x
        n = n - 1
    print(s)


name(5, 4)
name(5)  # 默认参数n=2,所以我只输入一个参数的时候就是求x^2

从上面的例子可以看出,默认参数可以简化函数的调用。设置默认参数时,有几点要注意:

一是必选参数在前,默认参数在后,否则Python的解释器会报错(思考一下为什么默认参数不能放在必选参数前面);

二是如何设置默认参数。

当函数有多个参数时,把变化大的参数放前面,变化小的参数放后面。变化小的参数就可以作为默认参数。

定义默认参数要牢记一点:默认参数必须指向不变对象!

可变参数

在Python函数中,还可以定义可变参数。顾名思义,可变参数就是传入的参数个数是可变的,可以是1个、2个到任意个,还可以是0个。

我们以数学题为例子,给定一组数字a,b,c……,请计算a2 + b2 + c2 + ……。

要定义出这个函数,我们必须确定输入的参数。由于参数个数不确定,我们首先想到可以把a,b,c……作为一个list或tuple传进来,这样,函数可以定义如下:

def calc(numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

但是调用的时候,需要先组装出一个list或tuple:

calc([1, 2, 3])
14
calc((1, 3, 5, 7))
84

如果利用可变参数,调用函数的方式可以简化成这样:

calc(1, 2, 3)
14
calc(1, 3, 5, 7)
84

所以,我们把函数的参数改为可变参数:

def calc(*numbers):
    sum = 0
    for n in numbers:
        sum = sum + n * n
    return sum

定义可变参数和定义一个list或tuple参数相比,仅仅在参数前面加了一个*号。在函数内部,参数numbers接收到的是一个tuple,因此,函数代码完全不变。但是,调用该函数时,可以传入任意个参数,包括0个参数:

calc(1, 2)
5
calc()
0

如果已经有一个list或者tuple,要调用一个可变参数怎么办?可以这样做:

nums = [1, 2, 3]
calc(nums[0], nums[1], nums[2])
14

这种写法当然是可行的,问题是太繁琐,所以Python允许你在list或tuple前面加一个*号,把list或tuple的元素变成可变参数传进去:

nums = [1, 2, 3]
calc(*nums)
14

*nums表示把nums这个list的所有元素作为可变参数传进去。这种写法相当有用,而且很常见。

关键字参数

def person(name,age,**kw):
# 声明一个关键字参数,**kw可以传0或多个,调用方式如下:
person('yunqing',25,gender='M',city='tianjin')

命名关键字参数

def person(name,age,*,city,job):
#或者为了调用方便
def person(name,age,*,city='TJ',job)
这样调用时候可以不输入city

注意如果命名关键字参数前边有可变参数的话,就不用加 *, 来声明命名关键字参数了。

关于以上两个参数的用法,请移步廖雪峰大大的网站去学习,我已经学过了,我写文章主要是为了自己学习,就不赘述了。

相关文章

  • Python - 2017/01/28-函数

    调用python内置函数 函数名(参数) 即可调用python内置函数 help(函数名) 返回python对于函...

  • Python函数式介绍一 - 高阶函数

    Python函数式介绍一 - 高阶函数Python函数式介绍二 - 链式调用 最近为了给朋友推广Python函数式...

  • Python高阶函数学习笔记

    python中的高阶函数是指能够接收函数作为参数的函数 python中map()函数map()是 Python 内...

  • Python学习笔记1

    Python注释 Python变量 Python运算符 Python输入输出 输入函数 输出函数(3.x) ...

  • Python:内置函数

    python的内置函数,匿名函数 内置函数 内置函数就是python给你提供的,拿来直接用的函数,比如print,...

  • 二级Python----Python的内置函数及标准库(DAY

    Python的内置函数 嵌入到主调函数中的函数称为内置函数,又称内嵌函数。 python的内置函数(68个) Py...

  • python3 range() 函数和 xrange() 函数

    python3 range 函数 python3 取消了 xrange() 函数,并且和 range() 函数合并...

  • 7、函数

    1、Python之什么是函数 2、Python之调用函数 Python内置了很多有用的函数,我们可以直接调用。 要...

  • Python入门

    Python3教程 安装Python 第一个Python程序 Python基础 函数 高级特性 函数式编程 模块 ...

  • Python函数详解

    函数是Python里组织代码的最小单元,Python函数包含以下几个部分: 定义函数 调用函数 参数 函数的返回值...

网友评论

      本文标题:python函数

      本文链接:https://www.haomeiwen.com/subject/pwhjpqtx.html