作者:U友50054453 | 来源:互联网 | 2023-06-25 13:33
函数就是一种具有高健狀性、高使用率的代码块。Python自带了非常多的优秀的内置函数。同时允许用户自定义函数,这样大大的提高了编程的灵活性,这是每一种高级编程语言都带有的特性。内置函数可以通过查看工具指南即可达到使用的效果。这里将探讨Python自定义函数的使用技巧和关键点。
1、Python自定义函数的框架
def function_name (formal parameters):
function body
return [expressions]
def 是定义函数的关键字,函数名和一对小括号是必须的。参数可以非必选,参数列表可以自由定制,可以传入几个参数或者多个参数。
2、Python函数参数的特殊传入(普通传入与其他语言无异,不赘述)
函数在定义时可以根据需求传入灵活的参数设置。通过在形参前加一个星号(*)或两个星号(**)来指定函数可以接收任意数量的实参。例如:
>>> def parameter(*args):
print(type(args))
print(args)
>>> parameter(1,2,3,4)
(1, 2, 3, 4)
def parameter(**args):
print(type(args))
print(args)
parameter(a=1,b=4,c=4,g=6)
{'a': 1, 'b': 4, 'c': 4, 'g': 6}
有上述可知,使用一个星号传入的参数,被按照元组图tuple的形式存储起来,而是用两个星号的形参,则采用字典dictionary(键值对)。在使用两个星号形参的时候,调用参数得使用键值对keyword-value的形式传入。
3、普通参数列表也可采用键值对方式传递实参,此时的参数的顺序可以乱序。
def parameter1(name,age,gender):
print(name,age,gender)
>>> parameter1('jack','20','man')
jack 20 man
>>> parameter1(age=20,name='jack',gender='man')
jack 20 man
函数也同样可以作为参数传入到函数体中,在函数体中照样可以接收参数。
def call_func(func,para):
print(func(para))
if __name__=='__main__':
call_func(lambda x:x+2,5)
4、函数的调用
Python中在调用函数时,需要给定和形参相同个数的实参并按顺序一一对应即可。
5、针对第2点,使用*或**来表示形参接收的个数。其实使用*表示将所有参数打包成列表list的形式传入函数体,**表示将所有的参数打包成字典dictionary的形传入函数体。既然 有打包必然有解包。故而在函数的调用的过程中,可以事先定义好列表或者字典。作为参数传入。函数会自动将解包,将一一对应传给形参。
def fib(a,b,c):
print(a+b+c)
>>> list=[1,2,3]
>>> dict={'a':20,'b':30,'c':40}
>>> fib(*list)
6
>>> fib(**dict)
90
6、匿名函数lambda(anonymous inline function)表达式
lambda [arg1 [,arg2,.....argn]] : expression。lambda表达式可以在任何需要函数对象的地方使用,它们在语法上被限制为单一的表达式。lambda函数能接收任何数量的参数但只能返回一个表达式的值
>>> f=lambda x: x**2
>>> f(10)
100
>>> f=lambda x: x>10
>>> f(5)
False
其返回结果的结果要么是定义好的表达式,要么就是bool值。
7、函数中使用文本字符串
函式体的第一个语句可以是三引号括起来的字符串, 这个字符串就是函数的文档字符串,或称为docstring 。我们可以使用print(function.__doc__)输出文档:
def fib():
""" synchronized translation for 90 languages, predictive typing"""
return
>>>print(fib.__doc__)
synchronized translation for 90 languages, predictive typing
文档字符串主要用于描述一些关于函数的信息,让用户交互地浏览和输出
。建议养成在代码中添加文档字符串的好习惯。