Python函数
函数是python程序的重要组成部分。所谓函数就是实现某一特定功能的代码段,可重复使用,提高了代码的利用率。
python除了可以直接使用内置函数,还支持自定义函数。
定义函数
使用 def
关键字,格式如下:
def函数名(参数列表):函数体
函数的返回值
函数的返回值用return
语句返回,函数体内部的语句在执行时,一旦执行到return
时,函数就执行完毕,并将结果返回。
如果没有返回值,函数执行完毕后也会返回结果,只是结果为None。
函数参数详解
1.位置参数:
调用的时候必须传值,有几个就按顺序传几个值
示例
def area(length, width): return 2 * (length + width)# 调用函数时,必须传递2个参数,否则会引发错误print(area(10,3))
2.默认参数:
定义时给出默认值,调用的时候可以不传参,使用默认值
默认参数好处是:如果一个函数有20多个参数,如果使用默认参数,在调用的时候只需要传递某些参数(注意传参数名)就可以了。
示例
def student(name,age=10,city="Beijing"): print("姓名:{},年龄:{},城市:{}".format(name,age,city))#调用方式一:student("赵四")#调用方式二:student("张三",15,"Shanghai")#调用方式三:student("李明",12)#调用方式四:student("李明",city="Tianjin")
1.既有位置参数又有默认参数,位置参数在前,默认参数在后。
2.多个默认参数时,调用的时候,既可以按顺序提供默认参数,也可以不按顺序提供部分默认参数。 当不按顺序提供部分默认参数时,需要传入参数名(见调用方式四)。
3.可变参数:
可以传入任意个参数,传入的参数被组装为一个tuple。
示例
def sum(*num): sum=0 for i in num: sum=sum+i return sum#调用方式一:sum(1,2,3)# 调用方式二:num = [1,2,3]sum(*num)
4.关键字参数:
传入任意个含参数名的参数,这些关键字参数被组装为一个dict。
示例
def person(**kw): for key in kw: print("{}:{}".format(key,kw[key]))# 调用方式一:person(name="John",age=15)# 调用方式二:p={"name":"Alice","city":"Beijing"}person(**p)
5.命名关键字参数:
对于关键字参数,函数调用的时候可以传入任意个不受参数名限制的关键字参数。但如果想必须传入某个名字的关键字参数,就可以用命名关键字参数。如上例中的person()函数,如果必须传入名为age的关键字参数,可以写成如下形式:
def person(name, *, age): print("name={},age={}".format(name,age))# 调用方式:person("John", age=15)
命名关键字参数又和位置参数不同,命名关键字参数必须传入参数名。如果没有传入参数名,调用将报错。如果上面例子的调用方式写成 person("John", 15) 将报错
如果既有可变参数,又有命名关键字参数,参数顺序为:可变参数,命名关键字参数,并且命名关键字参数前不需*
def person(name, *args, age): print(name,args,age)
python中五种参数可以组合使用,参数的定义顺序必须是:位置参数、默认参数、可变参数、命名关键字参数和关键字参数。
变量的作用域
局部变量
局部变量:在函数中定义的变量,只在函数内部起作用。
如果想让局部变量在函数外起作用,要声明为全局变量,需要使用global关键字来声明。
全局变量
全局变量:在模块层次中定义的变量,作用范围在整个模块。
1.全局变量的作用范围仅限于单个模块文件内。
2.如果函数内定义的局部变量和全局变量同名,函数在使用该变量的时候会优先使用局部变量。
示例
先定义一个全局变量,由于函数内部没有定义同名变量,所以调用的时候使用的是全局变量的值
var=123 #全局变量def func(): print(var)# 调用函数func() #123
现在在函数内部定义一个同名变量,可以看到函数在调用的时候优先使用的是自己内部的变量,而在函数外部使用的是全局变量的值
var=123#全局变量def func():var=45#局部变量print(var)# 调用函数func() #45print(var) #123
现在我们把函数内的变量声明为全局变量,可以看到变量var在函数外部也起作用了
def func():global varvar=45#局部变量print(var)# 调用函数func() #45print(var) #45
Python基础篇目录
Python基础之数据类型详解
Python之pip使用详解|附第三方库安装总结
Python编程之Pycharm快速学习
你熟悉Python的代码规范吗?如何一键实现代码排版
快速入门 Python 数据库操作
Python模块知识全解析
快速入门Python文件操作
Python字符串操作大全
关于Python循环,看这一篇就够了
关于Python异常处理,你需要了解的知识点