函数是编程语言中的结构化元素,用于对语句进行分组,这样便可以在程序中多次使用。
函数的好处:
- 有助于将程序分解成更小的块(模块化)
- 提高程序的可理解性和质量
- 避免重复并使代码可重用
- 降低了软件开发和维护的成本
一、函数定义
使用def语句定义,一般定义语法如下:
def 函数名( ) :
函数体
- 关键字
def
:标志着函数头的开始 - 函数名(
function_name
):唯一标识一个函数,函数命名遵循标识符的编写规则。 - 参数(
parameters
):通过它可以将值传递给函数,是可选的。 - 冒号(
:
):用于标记函数头的结尾。 - 文档字符串(docstring):用于描述函数的功能,是可选的。
- 函数体:由一个或多个有效的 python 语句构成,语句必须具有相同的缩进级别(通常为 4 个空格)。
return
语句:用于从函数返回一个值,可选的。
eg:
def mypow(x,y=2): ##函数名
pow_ = x**y ##函数体
return pow_ ##返回值
num = mypow(2) ##使用函数
print(num)
在编写代码时,建议在代码里定义一个主函数。def main
二.函数动态添加成员
1.动态添加
def hap():
print(hap.x)
hap.x = 3
hap()
hap.x = 5
hap()
2.动态删除
def hap():
print(hap.x)
hap.x = 3
hap()
hap.x = 5
hap()
del fun.x
fun()
三.函数形参的分类
参数:形参、实参
扫描二维码关注公众号,回复:
2786920 查看本文章
形参:位置参数、默认参数、可变参数、关键字参数
1.位置参数:形参和实参位置必须保持一致
def info(name,age):
print(name,age)
info('villa','28')
2.默认参数:形参实参可以不一致
def mypow(x,y=2):
pow_ = x**y
return pow_
print(mypow(2),mypow(2,4),mypow(3,6))
3.可变参数
要定义可变参数,仅需在参数名之前添加一个星号(*
)。
def mySum(*args):
sum = 0
for item in args:
sum += item
print(sum)
print(mySum(1,2,3,4,54,325,34))
注意:*args是可变参数;(args可以接收任意值)
args是元组数据类型
args可以改成其他,因为是形参
4.关键字参数
还有一种机制,用于任意数量的关键字参数。为了做到这一点,使用双星号(**
):
def getStuInfo(name,age,**kwargs):
print (name,age)
print (kwargs)
getStuInfo('villa',35,hobbies = ['soccer','running'],gender = 'female')
对list、tuple、set解包时,只需要在变量前加*
对对字典解包,一个星号,获取所有的key值
四.函数返回值
什么是返回值
函数运算的结果,还需要进一步操作时,给一个返回值;return用来返回函数执行结果的,如果没有返回,默认为None(null,none)。
python可以间接返回多个值;原理:返回一个元组,将来对元组进行解包,一旦遇到return,函数函数执行结束,后面的代码不会结束(yield)。
返回一个值
def mypow(x,y=2):
return x**y
a = mypow(4,3)
print(mypow(2),mypow(2,4),mypow(3,6))
返回多个值
def mypow(x,y=2):
return x**y,x/y,x+y
a = mypow(4,3)
print(mypow(2),mypow(2,4),mypow(3,6))
print(a,type(a))