①.、定义函数
函数是可重用的程序.本书中已经使用了许多内建函数,如len()函数和range()函数,但是还没自定义过函数.定义函数的语法格式如下:
def 函数名(参数):
函数体
定义函数的规则如下:
①关键字def用来定义一个函数,它是define的缩写.
②函数名是函数的唯一标识,函数名的命名规则遵循标识符的命名规则.
③函数名后面一定要紧跟着一个括号,括号内的参数是可选的,括号后面要有冒号.
④函数体(statement)为一个或一组Python语句,注意要有缩进.
⑤函数体的第一行可以有文档字符串,用于描述函数的功能,用三引号括起来.
按照定义规则,可以定义第一个函数了:
def?hello_world():
...??print('Hello,world!')?#?注意函数体要有缩进
...
hello_world()
Hello,world!
这个函数不带任何参数,它的功能是打印出"Hello,world!".最后一行代码hello_world()是调用函数,即让Python执行函数的代码.
a?=?100?#?全局变量
def?test1():
...??print(a)
test1()
①.00
...??a?=?100?#?局部变量
print(a)
Traceback?(most?recent?call?last):
File?"stdin",?line?1,?in?module
NameError:?name?'a'?is?not?defined
一般情况下,在函数内声明的变量都是局部变量,但是采用关键字global修饰的变量却是全局变量:
...??global?a?#?全局变量
...??a?=?100
这个程序与上个程序相比,只是在函数test1()中多了一行代码"global a",程序便可以正确运行了.在函数test1()中,采用关键字global修饰了变量a之后,变量a就变成了全局变量,不仅可以在该函数内使用,还可以在函数外或者其他函数内使用.
如果在某个函数内局部变量与全局变量同名,那么在该函数中局部变量会覆盖全局变量:
综合上面所讲的,在Python中,全局变量保存的数据供整个脚本文件使用;而局部变量只用于临时保存数据,变量仅供局部代码块使用.
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.
函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可以自己创建函数,这被叫做用户自定义函数.
定义一个函数
可以定义一个由自己想要功能的函数,以下是简单的规则:
①函数代码块以 def 关键词开头,后接函数标识符名称和圆括号().
语法
Python 定义函数使用 def 关键字,一般格式如下:
def 函数名(参数列表):
默认情况下,参数值和参数名称是按函数声明中定义的顺序匹配起来的.
示例
让我们使用函数来输出"Hello World!":
def hello() :
print("Hello World!")
输出结果
hello()
Hello World!
python中定义函数的关键字是def.
Python使用def关键字开始函数定义,紧接着是函数名,括号内部为函数的参数,内部为函数的具体功能实现代码,如果想要函数有返回值, 在expressions中的逻辑代码中用return返回.
上面我们定义了一个名字为 function 的函数,函数没有不接受参数,所以括号内部为空,紧接着就是 函数的功能代码.
如果执行该脚本,发现并没有输出任何输出,因为我们只定义了函数,而并没有执行函数. 这时我们在Python命令提示符中输入函数调用 function(), 注意这里调用函数的括号不能省略.
python的学习
如果我们用代码实现了一个小功能,但想要在程序代码中重复使用,不能在代码中到处粘贴这些代码,因为这样做违反了软件工程中DRY原则. Python提供了函数功能,可以将我们这部分功能抽象成一个函数以方便程序调用,或者提供给其他模块使用.
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段.(推荐学习:Python视频教程)函数必须先定义,才能调用,否则会报错,无参数时函数的调用函数名().
有参数时函数的调,不要在定义函数的时候在函数体里面调用本身,否则会出不来,陷入循环调用,函数需要调用函数体才会被执行,单纯的只是定义函数是不会被执行的.
定义:
函数中执行的内容
调用:
map() 函数接受两个参数,一个是函数,一个是可迭代对象(Iterable), map 将传入的函数依次作用到可迭代对象的每一个元素,并把结果作为迭代器(Iterator)返回.
运用简单的循环可以实现:
运用高阶函数 map() :
结果 r 是一个迭代器,迭代器是惰性序列,通过 list() 函数让它把整个序列都计算出来并返回一个 list .
如果要把这个list所有数字转为字符串利用 map() 就简单了:
小练习:利用 map() 函数,把用户输入的不规范的英文名字变为首字母大写其他小写的规范名字.输入 ['adam', 'LISA', 'barT'] ,输出 ['Adam', 'Lisa', 'Bart']
reduce() 函数也是接受两个参数,一个是函数,一个是可迭代对象, reduce 将传入的函数作用到可迭代对象的每个元素的结果做累计计算.然后将最终结果返回.
小练习:编写一个 prod() 函数,可以接受一个 list 并利用 reduce 求积:
filter() 函数用于过滤序列, filter() 也接受一个函数和一个序列, filter() 把传入的函数依次作用于每个元素,然后根据返回值是 True 还是 False 决定保留还是丢弃该元素.
举例说明,删除list中的偶数:
小练习:用 filter() 求素数
定义一个筛选函数:
定义一个生成器不断返回下一个素数:
打印100以内素数:
python内置的 sorted() 函数可以对list进行排序:
sorted() 函数也是一个高阶函数,还可以接受一个 key 函数来实现自定义排序:
key 指定的函数将作用于list的每一个元素上,并根据 key 函数返回的结果进行排序.
默认情况下,对字符串排序,是按照ASCII的大小比较的,由于'Z' 'a',结果,大写字母Z会排在小写字母a的前面.如果想忽略大小写可都转换成小写来比较:
要进行反向排序,不必改动key函数,可以传入第三个参数 reverse=True :
运用匿名函数更简洁:
以上就是土嘎嘎小编为大家整理的python内部定义函数相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!