(Python第五天)函数
一、试验
经常需要在同一个程序里多次复用代码。需要一些内建函数,比如len(),divmod()
二、定义一个函数
使用关键字def来定义一个函数,如

编写一个函数,让它接受两个整数作为输入,然后返回总和

第二行return关键字,把a+b的值返回给调用者
实例:编写一个函数来检查给出的字符串是否为回文。返回T orF
1 def palindrome(s): 2 return s == s[::-1] 3 if __name__=='__main__': 4 s = input("Enter a string:") 5 if palindrome(s): 6 print("Yay a palindrome") 7 else: 8 print("Oh no,not a palindrome")
ps:该处的__name__和__main__都是双下划线
if __name__ == '__main__'的意思是:当.py文件被直接运行时,if __name__ == '__main__'之下的代码块将被运行;当.py文件以模块形式被导入时,if __name__ == '__main__'之下的代码块不被运行。
详细链接:https://baijiahao.baidu.com/s?id=1613902969174802408&wfr=spider&for=pc
三、局域或全局变量
1)在函数内部和函数调用的代码中都使用同一个变量a
当函数中只要用到了变量a,并且a出现在表达式等于号的前面,就会被当作局部变量
2)使用global关键字,对函数中的a标志为全局变量,让函数内部使用全局变量的a.
四、默认参数值
函数的参数变量可以有默认值

表示test函数的表示形式为这个样子,参数列表有a,b ,如果调用者未给出b的值,那么b的值默认为-99
而且默认值只能被赋值一次,因此如果默认值是任何可变对象时会有所不用,如果列表,字典或者大多数类的实例,下面的函数在后续调用过程中会累计前面传给它的参数
实例:
1)

2)

PS:
①注意None与布尔类型的区别,布尔类型只包括两个:True和False(注意它的大小写)
但python是把0,空字符串‘ ’,空列表[]和None都看作False,把其他数值和非空字符串都看作True
如果判断一个变量是否为None,直接使用 if a is None:
②第一个是f里面有两个参数,一个是a,一个是data,data的默认值是[],f的含义是把a的值放到[]里面,所以可以累积
第二个是设置data的默认值为None,f的参数设置data为None,即没有参数,所以就为[]了
五、关键字参数
函数可以通过关键字参数的形式来调用
2)强制关键字参数
将函数的参数标记为只允许使用关键字参数,用户调用函数的时候将只能对每一个参数使用相应的关键字参数
比如:

六、文档字符串
使用文档字符串说明如何是使用代码

七、高阶函数
可以接受函数作为参数的函数,即可以使用一个或者多个函数作为参数,可以返回另外一个函数作为输出
Pyhton里的任何函数都可以作为高阶函数
比如map函数,map函数接受一个函数和一个序列作为输入,然后对序列的每一个值应用这个函数,返回一个序列,其包含应用函数后的结果.
意思就是接受一个函数f和一个list,并通过把函数f依次作用在list的每个元素上,得到一个新的list并返回
如:我们想把List的每个元素都平方,就可以用map函数,我们只需要传入函数f(x)=x*x,就可以利用map函数来完成这个计算。
def f(x):
return x*x
print map(f,[1,2,3,4,5,6,7,8,9])
利用map函数可以把一个list转换为另一个list,只需要传入转换函数,
实例:用户输入的英文名字不规范,没有按照首字母大写,后续字母小写的规则,请利用map()函数,把一个list(包含若干不规范的英文名字)变成一个包含规范英文名字的list:
输入:['adam', 'LISA', 'barT']
输出:['Adam', 'Lisa', 'Bart']
def format_name(s):
s1=s[0:1].upper()+s[1:].lower();
return s1;
print map(format_name, ['adam', 'LISA', 'barT'])

浙公网安备 33010602011771号