@Channelchan
2017-11-27T05:53:55.000000Z
字数 1800
阅读 135924
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。
- 可以自己创建函数,这被叫做用户自定义函数。
- 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。
- 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。
- 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
- 函数内容以冒号起始,并且缩进。
- return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。
def function_name( parameters ):
'函数_文档字符串'
functions
return [expression]
def fun_1(x):
# 为x执行平方运算,返回所得的值。
return (x**2)
# 调用函数
fun_1(2.0)
4.0
必备参数
必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。
# 必备参数实例:
def fun_2(x,y):
return (x-y)
#x,y为必备参数,需要按正确顺序输入
fun_2(66,6)
60
关键字参数
关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。
# 关键字参数实例:
def fun_3(StockName,Price):
print ('Stock: ',StockName)
print ('Price:', Price)
return
#调用函数
fun_3(Price=120,StockName='AAPL')
Stock: AAPL
Price: 120
默认参数
调用函数时,缺省参数的值如果没有传入,则被认为是默认值。
# 默认参数实例
def StockIndex(StockName,index='SPX500'):
print ('Stock:', StockName)
print ('Index:', index)
StockIndex('APPL')
Stock: APPL
Index: SPX500
StockIndex('APPL',index='NAS100')
Stock: APPL
Index: NAS100
不定长参数
你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数,和上述2种参数不同,声明时不会命名。
以一个*开始的参数,代表一个任意长的元组,一个以**开始的参数,代表一个字典:
# 不定长参数实例
def fun_4(*agrs, **kwargs):
print(agrs)
print(kwargs)
fun_4(1,2,3,4)
fun_4(a=1,b=2,c=3)
fun_4(1,2,3,4, a=1,b=2,c=3)
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++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。
# 匿名函数实例
fun_5 = lambda a, b: a - b
print (fun_5(66,6))
60
list(map(lambda x : x**2, range(5)))
[0, 1, 4, 9, 16]
return语句[表达式]退出函数,选择性地向调用方返回一个表达式。
不带参数值的return语句返回None。
def fun_6(a,b):
answer = a-b
print (answer)
return(a/b)
print(fun_6(66,6))
60
11.0
(全局变量与局部变量)
answer=66 # 这是一个全局变量
def fun_7(a,b):
answer = a-b # answer在这里是局部变量.
print ('局部变量:', answer)
return(answer)
fun_7(66,6)
print('全局变量:', answer)
局部变量: 60
全局变量: 66