10、函数

作者: 代码充电宝 | 来源:发表于2019-04-26 09:30 被阅读2次
(1)函数return
  • 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回
  • 如果没有return语句,函数执行完毕后也会返回结果,只是结果为 None。
  • return None可以简写为return
  • 函数定义
def my_abs(x):
    if x >= 0:
        return x
    else:
        return -x
  • 多返回值函数
import math
def move(x, y, step, angle):
    nx = x + step * math.cos(angle)
    ny = y - step * math.sin(angle)
    return nx, ny
print move(100, 100, 60, math.pi / 6)
x, y = move(100, 100, 60, math.pi / 6)
print x, y
结果
(151.96152422706632, 70.0)
151.961524227 70.0
(2)递归函数
  • 使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算
fact(10000)。
def fact(n):
    if n==1:
        return 1
    return n * fact(n - 1)
  • 汉诺塔的递归调用
汉诺塔 (http://baike.baidu.com/view/191666.htm) 的移动也可以看做是递归函数。
我们对柱子编号为a, b, c,将所有圆盘从a移到c可以描述为:
如果a只有一个圆盘,可以直接移动到c;
如果a有N个圆盘,可以看成a有1个圆盘(底盘) + (N-1)个圆盘,首先需要把 (N-1) 个圆盘移动到 b,然后,将 a的最后一个圆盘移动到c,再将b的(N-1)个圆盘移动到c。
def move(n, a, b, c):
    if n==1:
        print a,'-->',c
        return
    move(n-1,a,c,b) #先将a上的n-1个圆盘移到b,通过c
    print a,"-->",c #再将a上的最后一块移到c
    move(n-1,b,a,c) #最后将b上的n-1个圆盘移到c,通过a
move(4, 'A', 'B', 'C')
A --> B
A --> C
B --> C
A --> B
C --> A
C --> B
A --> B
A --> C
B --> C
B --> A
C --> A
B --> C
A --> B
A --> C
B --> C
(3)默认参数
  • int
    • Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数
    • 第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数
    • 函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值
>>> int('123')
123
>>> int('123', 8) #8进制的123转换成十进制
83
  • 自定义N次方函数,默认为平方
def power(x, n=2):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
power(3) # 9
  • 由于函数的参数按从左到右的顺序匹配,所以默认参数只能定义在必需参数的后面
def power(x, m=2,n=3):
    s = 1
    while n > 0:
        n = n - 1
        s = s * x
    return s
print(power(3,n=5))
(4)可变参数
  • 名字前面加 * ,我们可以传入0个、1个或多个参数给可变参数
  • Python解释器会把传入的一组参数组装成一个tuple传递给可变参数
def average(*args):
    sum = 0.0
    if len(args) == 0:
        return sum
    for x in args:
        sum = sum + x
    return sum / len(args)
print average()
print average(1, 2)
print average(1, 2, 2, 3, 4)
  • 加**时,函数接受参数时,返回为dict
def F(**kwargs):
    print(kwargs)
# {'k1': 123, 'k2': '456'}
F(k1=123,k2="456")

相关文章

  • 15. 高阶函数Higher-order function

    变量可以指向函数 函数本身也可以赋值给变量,即:变量可以指向函数 >>> f = abs>>> f(-10)10 ...

  • sql笔记 P49-86

    #五、流程控制函数 #1. if函数:if else 的函数 SELECT IF(10 > 5, '大', '小'...

  • 10、函数

    (1)函数return 请注意,函数体内部的语句在执行时,一旦执行到return时,函数就执行完毕,并将结果返回 ...

  • 【10】函数

    1.什么是函数 函数就是对实现某一特定功能的代码段的封装 2.函数的分类 内置函数(系统函数): python已经...

  • 2018-07-06-python中的一些常用的数学运算符

    绝对值函数 abs(x) #返回数字的绝对值,如abs(-10) 返回 10 天花板函数=上入整数函数ceil(x...

  • python函数(初级)

    函数 1.匿名函数 """匿名函数就是没有函数名的函数:匿名函数可以看成是类型是function的值,和10,'a...

  • python函数整理

    python函数整理: 数学函数: abs(x):返回数字的绝对值;如abs(-10)返回10. ceil(x):...

  • Day10-匿名函数&变量的作用域&函数递归&迭代器&生成器

    匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, 'a...

  • Day10 函数

    一.匿名函数 1.匿名函数 匿名函数就是没有函数名的函数; 匿名函数可以看成是类型是function的值和10, ...

  • 高阶函数

    高阶函数: 变量可以指向函数 abs(-10):这是函数调用 abs这是函数本身,也是对象 >>>abs f这是变...

网友评论

    本文标题:10、函数

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