(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'])

  

posted @ 2019-01-19 00:19  ywangji  阅读(184)  评论(0)    收藏  举报