1.函数创建
Python的函数创建相比于C++要简单得多,相比与MATLAB多了函数头的def和最后的返回值。
def hello(name):
'Calculates the square of the number X'
return 'Hello.'+ name + '!'
print hello('world')
输出:
Hello.world!
2.函数参数
参数存储在局部作用域。字符串(以及数字和元组)是不可变的,无法修改(只能用新的值覆盖),而列表做参数可变。
在Python中,函数只能修改参数对象本身而不会影响到函数外的变量。
def try_to_change(n):
n = 'Mr.Gumby'
name = 'Mrs.Entity'
try_to_change(name)
print(name)
def change(n):
n[0]='Mr.Gumby'
names = ['Mrs.Entity','Mrs.Thing']
change(names)
print(names)
输出:
Mrs.Entity
['Mr.Gumby', 'Mrs.Thing']
- 参数收集
在函数定义中加入*。
可输入任意数量的参数,参数前的*将所有值放在同一个元组中,因此星号代表收集其余的位置参数。
>>> def print_params(*params):
print params
>>> print_params('ab','cd','ef')
('ab', 'cd', 'ef')
关键字参数的”收集“,返回字典:
>>> def print_param_3(**params):
print params
>>> print_param_3(x=1,y=2,z=3)
{'y': 2, 'x': 1, 'z': 3}
- 参数收集的逆过程
在调用的过程中使用星号,可执行相反的操作
def add(x,y):
return x+y
>>> add(*cs)
6
- 嵌套
在Python中函数可以相互嵌套
>>> num1=3
>>> num2=4
def muti(para):
def muti2(number):
return number*para
return muti2
>>> x=muti(num1)
>>> y=x(num2)
>>> y
12
3.Mark相关函数
map(fun,seq[,seq,...]) 对序列中的每个元素应用函数
filter(fun,seq) 返回其函数为真的元素的列表
reduce(func,seq[,initial]) 将序列的前两个元素与给定的函数联合使用
apply(func[,args[,kwargs]]) 调用函数,可提供参数
Reference
《Python基础教程 第2版》人民邮电出版社