5. Python 函数

2018-06-27  本文已影响0人  柄志

函数

函数是一段具有特定功能的、可重用的语句组

定义函数

def<函数名>(<参数列表>):
    <函数体>
    return<返回值列表>

函数调用

<函数名>(<参数列表>)
  1. 调用程序在调用处暂停执行
  2. 在调用时将实参复制给形参
  3. 执行函数体语句
  4. 函数调用结束给出返回值,程序回到调用前的暂停处继续执行

函数参数

必选参数(位置参数)

默认参数

def r(str,times=2):
    print(str*times)
    
r("T")
TT
r("T",4)
TTTT

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

可变参数(不定长参数)

def vfunc(a,*b)
    print(type(b)
    for n in b:
        a+=n
    return a
vfunc(1,2,3,4,5)
<class 'tuple'>
15 #1+2=3;3+3=6;6+4=10;10+5=15

关键字参数

命名关键字参数

参数组合

匿名函数

<函数名>=lambda<参数列表>:<表达式>
def<函数名>(<参数列表>):
    return<表达式>
f=lambda q,w,e,r:q+w+e+r
f(1,2,3,4)
10

函数的返回值

def func(a,b):
    return b,a
s=func("t",2)
print(s,type(s))
(2, 't') <class 'tuple'>

变量作用域

  1. L (Local) 局部作用域
  2. E (Enclosing) 闭包函数外的函数中
  3. G (Global) 全局作用域
  4. B (Built-in) 内建作用域

全局变量

局部变量

函数的递归

函数定义中调用函数自身的方式称为递归。

 n!=n(n-1)(n-2)...(1)

n!=1 (n=0)
n!=n(n-1)! (otherwise)
  1. 存在一个或多个基例,基例不需要再次递归,是确定的表达式
  2. 所有递归链要以一个或多个基例结尾
def fact(n):
    if n==0:
        return 1
    else:
        return n*fact(n-1)
num=eval(input('请输入一个整数:'))
print(fact(abs(int(num))))

代码复用和模块化设计

  1. 紧耦合:尽可能合理划分功能块,功能块内部耦合紧密
  2. 松耦合:模块间关系尽可能简单,功能块之间耦合度低
上一篇下一篇

猜你喜欢

热点阅读