@Channelchan
2018-09-29T22:10:52.000000Z
字数 1629
阅读 78019
函数定义
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
- 可以自己创建函数,这被叫做用户自定义函数。
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def function_name( parameters ):
'函数_文档字符串'
functions
return [expression]
def fun_1(x):
'求平方'
a = x**2
return a
fun_1(6)
36
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
def fun_2(x,y):
return x+y
fun_2(6,12)
18
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
def fun_3(StockName,Price):
print('StockName:', StockName)
print('Price:',Price)
return
fun_3(Price=100, StockName='APPLE')
StockName: APPLE
Price: 100
默认参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
def fun_3(StockName,Price, Market='SPX500'):
print('StockName:', StockName)
print('Price:',Price)
print('Market:', Market)
return
fun_3(Price=100, StockName='APPLE', Market='NAS100')
StockName: APPLE
Price: 100
Market: NAS100
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。
以一个*开始的参数,代表一个任意长的元组,一个以**开始的参数,代表一个字典:
*agrs/ **kwargs
def fun_4(*agrs, **kwargs):
print('agrs:',agrs)
print('kwargs:',kwargs)
return
fun_4(a=1,b=2,c=3,d=4,e=5)
agrs: ()
kwargs: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5}
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。
不带参数值的return语句返回None。
def fun_5(a,b):
c = a+b
# print(c)
return
print(fun_5(5,6))
None
(全局变量与局部变量)
answer = 66
def fun_6(a,b):
answer = a+b
print('局部变量:', answer)
return answer
fun_6(6,54)
print('全局变量:',answer)
局部变量: 60
全局变量: 66
python 使用 lambda 来创建匿名函数。
- lambda只是一个表达式,函数体比def简单很多。
- lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。
- lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。
a = 20
fun_7 = lambda a ,b : a*b
fun_7(6, 10)
60
函数内部创建函数
def fun_8(a, b):
c = a+b
def multiple(c,a):
return a*c
return multiple(c,a)
fun_8(5,6)
55