[关闭]
@Channelchan 2018-09-29T22:10:52.000000Z 字数 1629 阅读 78019

5_Python函数设计

函数定义

函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
- 可以自己创建函数,这被叫做用户自定义函数。
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。

1、 函数语法

def function_name( parameters ):

'函数_文档字符串'
functions
return [expression]
  1. def fun_1(x):
  2. '求平方'
  3. a = x**2
  4. return a
  5. fun_1(6)
36

2、 参数设置

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

  1. def fun_2(x,y):
  2. return x+y
  3. fun_2(6,12)
18

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

  1. def fun_3(StockName,Price):
  2. print('StockName:', StockName)
  3. print('Price:',Price)
  4. return
  5. fun_3(Price=100, StockName='APPLE')
StockName: APPLE
Price: 100

默认参数

调用函数时,缺省参数的值如果没有传入,则被认为是默认值。

  1. def fun_3(StockName,Price, Market='SPX500'):
  2. print('StockName:', StockName)
  3. print('Price:',Price)
  4. print('Market:', Market)
  5. return
  6. fun_3(Price=100, StockName='APPLE', Market='NAS100')
StockName: APPLE
Price: 100
Market: NAS100

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。

以一个*开始的参数,代表一个任意长的元组,一个以**开始的参数,代表一个字典:

*agrs/ **kwargs

  1. def fun_4(*agrs, **kwargs):
  2. print('agrs:',agrs)
  3. print('kwargs:',kwargs)
  4. return
  5. fun_4(a=1,b=2,c=3,d=4,e=5)
agrs: ()
kwargs: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}

3、 return语句

return语句[表达式]退出函数,选择性地向调用方返回一个表达式。

不带参数值的return语句返回None。

  1. def fun_5(a,b):
  2. c = a+b
  3. # print(c)
  4. return
  5. print(fun_5(5,6))
None

变量作用域

(全局变量与局部变量)

  1. answer = 66
  2. def fun_6(a,b):
  3. answer = a+b
  4. print('局部变量:', answer)
  5. return answer
  6. fun_6(6,54)
  7. print('全局变量:',answer)
局部变量: 60
全局变量: 66

4、 匿名函数

python 使用 lambda 来创建匿名函数。
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。

  1. a = 20
  2. fun_7 = lambda a ,b : a*b
  3. fun_7(6, 10)
60

5、 内嵌函数

函数内部创建函数

  1. def fun_8(a, b):
  2. c = a+b
  3. def multiple(c,a):
  4. return a*c
  5. return multiple(c,a)
  6. fun_8(5,6)
55
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注