• python中的函数(全)


    函数的定义

    概述:将一段经常使用的函数封装起来,减少重复代码,一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能

    于python中,定义函数时要用到def

    语法结构:

    def 函数名称(参数):

         函数体

         return 返回值

    函数在有返回值的情况下会根据实际情况进行返回,如果函数没有返回值则返回None

    1. 在定义函数时,如果暂时还没想法可以用pass进行跳过
    2. 函数可以返回多个值,即return后可以跟多个参数,但函数本身返回只有一个值,其值为元组
    3. 函数名称是指向函数对象的引用,当把一个函数名称赋值给一个变量就是给它起了一个别名

    函数的分类

    根据有无参数分类:

    • 有参函数
    • 无参函数

    根据有无返回值分类:

    • 有返回值函数
    • 无返回值函数

    根据定义者分类:

    • 系统自定义函数
    • 第三方函数

    全局变量和局部变量

    全局变量:定义在py文件中的变量

    特点:在代码运行过程中始终有效

    局部变量:定义在函数中的变量

    特点:函数外部无法访问函数内的变量即局部变量

    函数内部可以访问全局变量,但不能修改全局变量,如果需要在函数内部修改全局变量,则要用到global关键字,一般不建议使用

    值传递与引用传递

    值传递:值传递时,当函数的形参发生变化不会影响实参的值

    de794be732654f63a3ba0490a3f5a9dd.jpg

     cad4735d4bd1453bb03415006237c49e.jpg

    引用传递:引用传递时,当函数的形参发生变化会影响实参的值

    f6948127e1234db0b7d798411fbd89fa.jpg

     2596d04e733a478db7a4d5c1b02cbda9.jpg

    其中的a,b都代表的是内存地址,代表的是函数本身,而a(),b()代表的是函数的返回值,当没有返回值时,则返回None

    值传递适合于不可变类型的实参(字符串、数字、元组),引用传递适合于可变类型的实参(列表、字典)

    在弱数据语言中,函数是可以作为参数传递到另一个函数中

    函数的递归

    在python中函数可以调用其他函数,而函数递归就是函数自己本身调用自己

    函数递归必须要有终止条件,如果没有终止条件,函数就会陷入死循环,python中会报错

    7a28b309df9a4a989f34e7709d061901.jpg

    0144304c7eef4bf6bd115b7470833dcb.jpg

    栈溢出问题:递归调用层次过多,递归函数在运行时会进行压栈操作,当压栈次数过多时,会导致堆栈溢出

    解决方法:尾递归优化

    尾递归:函数自己调节自己,要有终止条件,return语句中不能包含表达式

    2e43dec8a32949f4be0f9f422e2ed16b.jpg

    4cedd74753a6497eaf1a43c5eb6211a6.jpg

     递归优缺点:

    • 逻辑简单清晰
    • 过深的递归会造成栈溢出问题

    python解释器并没有对尾递归优化,所以在python中任何的递归都会造成栈溢出问题

    匿名函数

    概念:没有名称的函数,使用lambda关键字来定义

    语法结构:lambda 参数 :函数体

    由于lambda返回的是函数对象,因此我们需要用一个变量去接收

    6814779b7a764b9389a96793f8147a31.jpg

    7f40e349f5e74718a9ba5c0e220e4694.jpg

    匿名函数可以无参数、一个参数或多个参数,可以作为一个参数进行传递,也可以作函数的返回值

    偏函数

    在python中,调用函数时我们想要其中的一个值设置为一个固定值,此时我们就需要用到偏函数

    python中的functools模块为我们提供了许多功能,其中一个便是partial

    当我们只引入偏函数时需输入:

    from functools into partial

    其中int()将字符型转换为整型,默认为十进制

    其中int()提供了baes参数,可以调节转换进制

    当我们需要大量转换2进制时,每次传入int(x,base=2)过于麻烦,此时我们会定义一个函数,传入base默认值=2

    1. from functools import partial
    2. def int2(x,base = 2):
    3. return int(x,base)
    4. print(int2("1000"))

    8

    全局函数

    注意:round() 四舍五入,但是要注意在python中奇数上是标准的四舍五入,在偶数上是以5为分界线 

  • 相关阅读:
    关于jQuery实现轮播图和基本属性的操作
    CSS之flex布局
    计算机毕业设计HTML+CSS+JavaScript——基于HTML花店购物网站项目的设计与实现
    泛娱乐社交掀起2万亿市场热潮,Flat Ads独家流量助出海获客
    UE5——动画混合
    实施MES系统前要做哪些准备?如何帮助企业打造透明化工厂?
    两个面试Demo,看完就有收获!
    MySQL告警“Connection attributes of length 570 were truncated“
    工作八年的程序员,却拿着毕业三年的工资,再不开窍就真晚了...
    JS逆向爬虫案例分享(RSA非对称加密)
  • 原文地址:https://blog.csdn.net/Thewei666/article/details/125739690