函数像工厂,输入一定值,返回一定值,也可无输入和输出。
于是,所定义的函数,功能越单一越好,以避免多余鸡肋功能,就好像做饭加盐,淡了可以,咸了没办法去掉。
函数不是啥新鲜东西,这里重点介绍python中函数之使用与C语言中不同之处。
函数定义与使用:
函数定义格式
def test(x1, x2, x3):
return x1 + x2 * x3
在这里,定义时要用到def关键字,并且不把返回值类型(或者void)放在前面,有返回值时,直接在函数内部return出去。函数调用方法等与C语言没有区别。
函数命名方面,pycharm上不推荐以大写字母开头命名。
函数传参数方面,由于python中没有指针,形参使用与否取决于传入的对象。这里,分有不可变对象(数字、字符串、元组等)和可变对象(列表字典集合等)。顾名思义,只有可变对象是其引用被传入函数,从而可在函数内部被改变。调用时,在python中可将形参作为关键字,实现传参顺序不一致,使用办法如下:
def stuprint(num, name):
print("姓名:%s————学号:%d"%(name, num))
if __name__ == "__main__":
stuprint(name = "LuBenwei", num = 1)
python中的函数也可以有默认参数,使用办法参考c++。
参数数量不确定时,可以使用python中不定长参数的功能:
*args:将接收的参数放到一个元组中;**args:将显式赋值的参数放到一个字典中。以后者的使用为例:
def test(**args):
for key,value in arg.items():
print("%s: %s"%(key, value))
这时输入不定长的字典内容,python可一次性通通打印出来。
另外,用组合数据传多个单数据参数时,可用*操作符解包,根据情况判断使用时*号数量。
特殊函数
1,匿名函数(λ函数)
k = int(input())
for i in filter(lambda x: x % 2, range(1, k+1)): # λ函数,只有一行的inline函数
print(i)
上面是一个输入整数k,输出1~k之间奇数的简单程序,这里lambda函数的作用是减少代码量,同时减轻计算机函数调用负担,参考c++中的inline函数。
2,递归函数
递归函数中的递归思想显然比函数本身重要,这种函数也不是python中新鲜物件,故不再话下。
装饰器(按说该放在特殊函数一类)
装饰器是python的一个特别的功能,可以用来包装函数。通俗点就是函数的函数。python中没有函数指针,装饰器可以弥补这一点甚至实现其他强劲功能。
# 定义
def my_drct(test):
def inner():
test()
print("world!")
return inner # 返回作为参数被装饰的函数
# 定义待装饰函数
def test1():
print("hello ",end="")
print("装饰前:")
test1()
print("")
test2 = my_drct(test1)
print("装饰后:")
test2()
这是运行效果:
以上是本次笔记的全部内容!