[关闭]
@Channelchan 2017-11-27T05:53:55.000000Z 字数 1800 阅读 135924

Python函数设计

函数定义

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

函数语法

def function_name( parameters ):

'函数_文档字符串'
functions
return [expression]
  1. def fun_1(x):
  2. # 为x执行平方运算,返回所得的值。
  3. return (x**2)
  4. # 调用函数
  5. fun_1(2.0)
4.0

参数设置

必备参数

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

  1. # 必备参数实例:
  2. def fun_2(x,y):
  3. return (x-y)
  4. #x,y为必备参数,需要按正确顺序输入
  5. fun_2(66,6)
60

关键字参数

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

  1. # 关键字参数实例:
  2. def fun_3(StockName,Price):
  3. print ('Stock: ',StockName)
  4. print ('Price:', Price)
  5. return
  6. #调用函数
  7. fun_3(Price=120,StockName='AAPL')
Stock:  AAPL
Price: 120

默认参数

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

  1. # 默认参数实例
  2. def StockIndex(StockName,index='SPX500'):
  3. print ('Stock:', StockName)
  4. print ('Index:', index)
  5. StockIndex('APPL')
Stock: APPL
Index: SPX500
  1. StockIndex('APPL',index='NAS100')
Stock: APPL
Index: NAS100

不定长参数

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

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

  1. # 不定长参数实例
  2. def fun_4(*agrs, **kwargs):
  3. print(agrs)
  4. print(kwargs)
  5. fun_4(1,2,3,4)
  6. fun_4(a=1,b=2,c=3)
  7. fun_4(1,2,3,4, a=1,b=2,c=3)
  8. fun_4('a', 1, 'b', a=1, b='2', c=3)
(1, 2, 3, 4)
{}
()
{'a': 1, 'b': 2, 'c': 3}
(1, 2, 3, 4)
{'a': 1, 'b': 2, 'c': 3}
('a', 1, 'b')
{'a': 1, 'b': '2', 'c': 3}

匿名函数

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

虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

  1. # 匿名函数实例
  2. fun_5 = lambda a, b: a - b
  3. print (fun_5(66,6))
60
  1. list(map(lambda x : x**2, range(5)))
[0, 1, 4, 9, 16]

return语句

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

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

  1. def fun_6(a,b):
  2. answer = a-b
  3. print (answer)
  4. return(a/b)
  5. print(fun_6(66,6))
60
11.0

变量作用域

(全局变量与局部变量)

  1. answer=66 # 这是一个全局变量
  2. def fun_7(a,b):
  3. answer = a-b # answer在这里是局部变量.
  4. print ('局部变量:', answer)
  5. return(answer)
  6. fun_7(66,6)
  7. print('全局变量:', answer)
局部变量: 60
全局变量: 66
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注