Python的函数
首先我们来解释下什么是函数?
函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。之前我们已经使用到了Python提供了许多内建函数,比如print()。同时我们也可以自己创建函数,这被叫做用户自定义函数。
我们为什么要用到函数?
有时程序中要多次实现某一功能,就需要多次重复编写实现此功能的程序代码,这使程序冗长,不精炼 ,在程序设计中要善于利用函数,可以减少重复编写程序段的工作量,同时可以方便地实现模块化的程序设计
创建语法
下面我们看下我们自定义函数如何创建?创建语法如下:
def 函数名(参数1,参数2,参数3…):
函数体
返回值
规则:
a 函数代码块以 def 关键词开头,后接函数标识符名称和圆括号 ()。
b 任何传入参数和自变量必须放在圆括号中间,圆括号之间可以用于定义参数。
c 函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。
d 函数内容以冒号起始,并且缩进。return [表达式] 结束函数,选择性地返回一个值给调用方。
e 不带表达式的return相当于return None。
下面看个代码示例,我们写一个函数 传入一个数,判断是奇数还是偶数
def getNumType(a):
if(a%2==0):
print('这个数是个偶数')
else :
print('这个数是个奇数')
#调用这个函数
getNumType(5);
输出结果如下:
> python MyPython-24-1.py
这个数是个奇数
参数类型
接下来我们学习 下 自定义函数的几种传参类型
我们先来定义一个函数
def show1(str,num):
print(str)
a.必须参数 即我们调用时 show1(“zhangsan”,19) 如果形参没有任何限制,则默认为必需参数,调用函数的时候则必需传参,顺序一致,数量一致
b.关键字参数 即我们调用时 show1 (num= 20,name = “zhangsan”) 使用关键字参数允许函数调用的时候实参的顺序和形参的顺序可以不一致,可以使用关键字进行自动的匹配
c.默认参数 我们定义函数时 可写一个有默认值的参数不传时 有默认值
def fun1(name,age=18):
print(name,age)
fun1("zhangsan",20)
fun1("zhangsan")
输出结果:
> python MyPython-24-2.py
zhangsan 20
zhangsan 18
d.不定长参数 函数可以处理比当初声明时更多的参数 *args是把参数打包成元组给函数调用,如果在函数调用时没有指定参数,它就是一个空元组。
def getUsers(arg,*users):
print('arg=',arg)
for user in users:
print('user=',user)
getUsers('zjb')
getUsers('zjb','sdd')
getUsers('zjb','sdd','zhangsan')
输出结果如下:
> python MyPython-24-3.py
arg= zjb
arg= zjb
user= sdd
arg= zjb
user= sdd
user= zhangsan
函数的返回值:
作用:表示一个函数执行完毕之后得到的结果,return,表示结束函数,将函数得到的结果返回给调用者
def add(num1,num2):
sum1 = num1 + num2
#将结果返回给调用者
return sum1
sum = add(3,2)
print(sum)
主函数:
每一个程序都有一个入口:主函数【main函数】 通过__name__ == "main"表示其中的代码是在主函数中运行的
if name == “main”:
#主函数要执行的方法
函数-作用域
Python 中,程序的变量并不是在哪个位置都可以访问的,访问权限决定于这个变量是在哪里赋值的。
变量的作用域决定了在哪一部分程序可以访问哪个特定的变量名称。
两种最基本的变量:全局变量和局部变量
代码示例:
sum1=0 def add(num1,num2): sum1 = num1 + num2 print('函数内的局部变量',sum1) return sum1add(1,2)print('函数的全局变量',sum1)
执行结果 如下:
> python MyPython-24-4.py函数内的局部变量 3函数的全局变量 0
注意:函数内的想改变用全局变量时,需要在函数内使用关键字global(如 global x)
sum1=0 def add(num1,num2): global sum1 sum1 = num1 + num2 print('函数内的局部变量',sum1) return sum1add(1,2)print('函数的全局变量',sum1)
执行结果如下:
> python MyPython-24-5.py函数内的局部变量 3函数的全局变量 3
lambda关键词能创建小型匿名函数。lambda函数能接收任何数量的参数但只能返回一个表达式的值
代码格式如下:
lambda [arg1 [,arg2,.....argn]] : expression
使用lambda 下面几点需要注意:
a. lambda定义的是单行函数,如果需要复杂的函数,应该定义普通函数
b. lambda参数列表可以包含多个参数,如 lambda x, y: x + y
c. lambda中的表达式不能含有命令,而且只限一条表达式
使用lambda 主要有以下优点:
a. 对于单行函数,使用lambda可以省去定义函数的过程,让代码更加精简。
b. 在非多次调用的函数的情况下,lambda表达式可提高性能
代码示例:定义一个lambda 函数 可根据两个变量 得到两个变量的乘积
func =lambda x,y :x*yprint(func(3,4)) #输出结果 12
函数-文档字符串
函式体的第一个语句可以是三引号括起来的字符串, 这个字符串就是函数的文档字符串,或称为docstring 。我们可以使用print(function.doc)输出文档:
代码示例:
def func(): """ This is a document information Please see it .""" print('Please test') returnprint(func.__doc__)
输出结果如下:
> python MyPython-24-7.py This is a document information Please see it .