python 函数
目录
函数
函数分类
函数语法结构
函数名的命名规则
函数的参数
函数的返回值
函数的调用
函数对象
函数
函数是模块性开发,用来实现某一功能的代码段,
可重复性使用,提高代码的重复利用率,使写的代码结构清晰。
函数的分类
内置函数: Python中自定义的函数,如:print()
自定义函数: 根据python定义函数的语法结构自定义的函数
函数的语法结构:
def function_name(par1, par2, ...):
function body
return value(s)
说明:
def:定义函数的关键字
function_name: 函数的名字
par1,par2: 函数的参数
return value(s): 函数的返回值
函数的名字名命规则
函数的名字名命规则和变量名的命规则相同
函数的参数
函数参数分类: 函数的参数分形参和实参
实参:调用函数时传入的参数
形参:形参即在定义函数时,括号内声明的参数
函数参数的使用:
位置参数:按照从左到右的顺序定义参数
位置形参:必须参数(函数在调用时必须传入的参数)
位置实参:按照位置给形参传值
关键字参数: 按照key=value的形式定义实参,无需按照位置(从左到右的顺序)为形参传值
注意: 关键字实参必须在位置参数的右面
默认参数:形参在定义时就已经为其赋值,在传递参数时可以传值也可以不传值, 变化较小的参数定义成默认参数(形参)
注意:
1、只在定义时赋值一次
2、默认参数的定义应该在位置形参右面
3、默认参数通常应该定义成不可变类型
可变长参数: 可变长指的是实参值的个数不固定,而实参有关键字和位置参数传参的方式,在其参数个数不确定的情况下,
可以采用可变长的参数实现。位置参数使用*args,关键字参数使用**kwargs
*args
def printinfo( arg1, *vartuple ):
"打印任何传入的参数"
print "输出: "
print arg1
for var in vartuple:
print var
return
# 调用printinfo 函数
printinfo( 10 )
printinfo( 70, 60, 50 )
**kwargs
def printInfo(a=3, **kwargs):
print(a)
print(kwargs)
printInfo(a=1, b=2, c=3)
命名关键字参数:*后定义的参数,必须被传值(有默认值得除外),且必须按照关键字实参的形式传递
函数的返回值:
一个函数体内可以有多个返回值,执行到return时会结束函数的执行。
如果函数内没有return,则返回值为:None。
函数的调用:
函数名加括号
例如:
def one_func():
print("hello world")
# 调用函数
one_func()
函数对象(函数被当成参数来调用)
1.函数名可以传递给变量名
def func():
print('hello world')
print(func) # <function func at 0x000001D1EF681EA0> 函数地址
a = func
print(a) # <function func at 0x000001D1EF681EA0>
print(a,func) # 结果是相等的,则结论函数名可被传递
a() # hello world 调用函数
2.函数名可以被当成参数传递给其它函数
def func():
print('hello')
print(func) # <function func at 0x000001D85CF51EA0>
def index(args):
print(args) # <function func at 0x000001D85CF51EA0>
args()
print('world')
index(func) # world
3.函数名可以当做函数的返回值
def func():
print('hello')
print(func) # <function func at 0x00000182FFB71EA0>
def index():
print('world')
return func
res = index()
print(res) # <function func at 0x00000182FFB71EA0>
res() # hello
4.函数名可以当做容器类型的参数
def func():
print('hello')
print(func())
# 先执行代码,然后返回值,没有return则返回值为None
# hello
# None
l = [1,2,func,func()]
print(l)
# hello
# [1, 2, <function func at 0x000001F0D3EA1EA0>, None]
注意:
1. 函数是先定义,后使用
2. 函数在定义阶段,只检查语法,不执行代码,函数体内代码是在函数执行阶段检测
3. 空函数,用于设计代码结构

浙公网安备 33010602011771号