|
目录专栏列表前言函数定义参数返回值示例函数类型普通函数空函数匿名函数(Lambda函数)嵌套函数函数装饰器高阶函数函数参数位置参数默认参数可变位置参数可变关键字参数函数属性和方法`__name__``__doc__``func.__dict__``func.__defaults__``func.__annotations__`函数的作用域全局作用域局部作用域闭包总结在前四篇教程中,我们学习了Python的基本语法和数据结构以及代码中条件语句和循环结构。本篇教程,我们将深入探讨Python中的函数式编程。通过本教程,我们学习了函数的定义、参数、返回值、类型、属性和方法、作用域以及闭包等概念专栏列表Python教程(一):环境搭建及PyCharm安装Python教程(二):语法与数据结构Python教程(三):字符串特性大全Python教程(四):Python运算符合集Python教程(五):理解条件语句和循环结构Python教程(六):函数式编程正文开始,如果觉得文章对您有帮助,请帮我三连+订阅,谢谢💖💖💖前言Python中的函数是编程中非常基础且强大的概念。函数允许你封装一段代码,使其可以在程序中多次调用,从而提高代码的可重用性和清晰度。函数就如同数学中的函数,一个函数是做一件事情的工具,它有封装性、重用性等特性,如同y=sin(x)这个sin就是数学中定义的函数,我们学习后不用知道内部实现,直接拿来用就行python中的注释,写备注,方便阅读,机器会直接忽略#:单行注释''':多行注释函数定义在Python中,使用def关键字来定义函数,依次写出函数名、括号、括号中的参数和冒号:,然后,在缩进块中编写函数体,函数的返回值用return语句返回。deffunction_name(parameters):"""函数的文档字符串,描述函数的功能"""#函数体returnvalue1234参数位置参数:必须按顺序传递的参数。默认参数:有默认值的参数,调用时可以省略。可变参数:允许传递任意数量的位置参数。关键字参数:允许传递任意数量的关键字参数。返回值函数可以通过return语句返回一个值,如果没有return语句,默认返回None。示例defgreet(name,message="Hello"):#message是有默认值的"""打印问候语"""returnf"{message},{name}!"print(greet("Alice"))#输出:Hello,Alice!print(greet("Bob","Goodmorning"))#输出:Goodmorning,Bob!123456函数类型普通函数普通的函数定义如上所示。空函数如果想定义一个什么事也不做的空函数,可以用pass语句:defnop():pass123匿名函数(Lambda函数)使用lambda关键字定义的小型函数。add=lambdax,y:x+yprint(add(5,3))#输出:812嵌套函数在一个函数内部定义的函数。defouter_function(text):definner_function():returntext.upper()returninner_functionprint(outer_function("hello")())#输出:HELLO123456函数装饰器在代码运行期间动态增加功能的方式,称之为“装饰器”(Decorator)。借助Python的@语法,把decorator置于函数的定义处示例:我们接下来要做一件事,调用hello函数的同时,记录日志,一般做法:我们定义log和hello函数,然后依次调用它们常规用法:deflog():print('日记记录。。。')defhello(world):print('hello'+world)defexec():log()hello('world')exec()12345678910111213装饰器改造deflog(fn):#接受装饰的函数defwrapper(world):#接受参数,函数名自定义print('日记记录。。。')returnfn(world)#调用log装饰的fn函数returnwrapper@log#==log(hello)defhello(world):print('hello'+world)hello('world!!')123456789101112高阶函数可以接受其他函数作为参数或者返回一个函数的函数。defmake_twice(func):defwrapper(x):returnfunc(func(x))returnwrapper@make_twicedefdouble(x):returnx*2print(double(5))#输出:2012345678910函数参数位置参数必须按顺序传递。defadd(a,b):returna+bprint(add(3,4))#输出:71234默认参数可以提供默认值。defgreet(name,message="Hello"):returnf"{message},{name}!"print(greet("Alice"))#输出:Hello,Alice!print(greet("Bob","Goodmorning"))#输出:Goodmorning,Bob!12345可变位置参数使用*收集任意数量的位置参数。defadd(*args):returnsum(args)print(add(1,2,3,4))#输出:101234可变关键字参数使用**收集任意数量的关键字参数。defprint_kwargs(**kwargs):forkey,valueinkwargs.items():print(f"{key}:{value}")print_kwargs(name="Alice",age=25)#输出:name:Alice,age:2512345函数属性和方法__name__函数的名称。defmy_function():passprint(my_function.__name__)#输出:my_function1234__doc__函数的文档字符串。defmy_function():"""这是一个示例函数"""passprint(my_function.__doc__)#输出:这是一个示例函数12345func.__dict__函数的属性字典。defmy_function():passmy_function.attr="value"print(my_function.__dict__)#输出:{'attr':'value'}12345func.__defaults__函数的默认参数值。defmy_function(a,b=10):passprint(my_function.__defaults__)#输出10,)1234func.__annotations__函数的参数和返回值注解。defmy_function(a:int,b:str)->bool:passprint(my_function.__annotations__)#输出:{'a':,'b':,'return':}1234函数的作用域全局作用域在函数外部定义的变量。x=10defmy_function():print(x)my_function()#输出:10123456局部作用域在函数内部定义的变量。defmy_function():y=20print(y)my_function()#输出:20print(y)#NameError:name'y'isnotdefined123456闭包闭包是指一个函数记住并访问其外部作用域中的变量。defouter_function(x):definner_function():returnx*2returninner_functiondouble=outer_function(10)print(double())#输出:201234567总结函数是Python编程中的核心概念之一。通过本教程,我们学习了函数的定义、参数、返回值、类型、属性和方法、作用域以及闭包等概念。掌握这些知识点将帮助你编写更清晰、更高效的代码。如果你有任何问题或需要进一步的帮助,请随时联系我们。
|
|