函数(function)
程序中实现明确功能的代码段可以封装成一个函数,以便复用(reuse)
定义函数:
用def语句创建一个函数
用return关键字指定函数返回的值
def<函数名>(<参数表>)
<缩进的代码段>
return<函数返回值>
调用函数:
<函数名>(<参数>)
注意括号!
无返回值:<函数名>(<参数表>)
返回值赋值:v = <函数名>(<参数表>)
def sum_list(s):
sum_temp = 0
for i in s:
sum_temp +=i
return sum_temp
a = [1,2,3,4,5,6,7,8,9]
print("sum of a:",sum_list(a))
>>>
sum of a: 45
变量的作用域:
局部变量(Local Variable)在函数内部定义的参数以及变量,只有在该函数定义范围内有效,函数外边无法访问到
def sum_number(number1,number2):
result = number1 + number2
return result
number1 = 1
number2 = 2
print("sum is:",sum_number(number1,number2))
>>>
sum is: 3
全局变量(Global Variable)在函数外部定义的,作用域是整个代码段
def sum_number():
number1,number2 = 2,3
return (number1 + number2)
number1 = 1
number2 = 2
print(sum_number())
print(number1,number2)
>>>
5
1 2
global关键字:在函数内部使用与全局变量同名的变量时,若未在函数内进行定义,则使用全局变量的值。一旦在函数内部进行定义,Python会在函数内部创建一个局部变量,与全局变量就不相关了。使用global关键字可以在函数中改变全局变量的值
def sum_number():
global number1,number2
number1,number2 = 2,3
return (number1 + number2)
number1 = 1
number2 = 2
print(sum_number())
print(number1,number2)
>>>
5
2 3
函数小技巧:
map()函数
有时需要对列表中每个元素做一个相同的处理,得到新列表
map(function,list1,list2...)
函数function有几个参数,后面跟几个列表
list1 = [10,11,12,13,14,15]
list2 = [1,2,3,4,5,6]
def function1(a):
return a*5
print(list(map(function1,list1)))
>>>
[50, 55, 60, 65, 70, 75]
def function2(a,b):
return a * 5 + b / 2
print(list(map(function2,list1,list2)))
>>>
[50.5, 56.0, 61.5, 67.0, 72.5, 78.0]
匿名函数lambda
有时函数只用一次,其名称也就不重要,可以无需费神取def一个,可以直接使用lambda表达式
lambda<参数表>:<表达式>
list1 = [10,11,12,13,14,15]
list2 = [1,2,3,4,5,6]
print(list(map(lambda a:a * 5,list1)))
print(list(map(lambda a,b:a * 5 + b / 2,list1,list2)))
>>>
[50, 55, 60, 65, 70, 75]
[50.5, 56.0, 61.5, 67.0, 72.5, 78.0]
利用def函数,分别使用循环和递归求前一百的和
def sum_number1(n):
s = 0
for i in range(1,n+1):
s += i
return s
def sum_number2(n):
if n>0:
s = n + sum_number2(n-1)
return s
else:
return 0
print("循环求和:",sum_number1(100),end=" ")
print("递归求和:",sum_number2(100))
>>>
循环求和: 5050 递归求和: 5050