• Python 函数


    一、函数的定义与调用

     ①、函数定义过程中,代码并没有执行

    ②、如果要执行函数,需要调用函数

    ③、函数必须先定义,后调用

    ④、遇到return后,函数终止执行并返回,如果没有return,默认返回值为None,单独的return也是返回None

    二、函数的参数介绍

    ①形式参数与实际参数

      函数定义时使用的参数称为形式参数,如下,name、height、weight均为形式参数。调用函数时传递的参数均为实际参数,如下,‘大佬’、170、50均为实际参数

      

    ②位置参数与默认参数

      

      均是涉及到函数定义过程使用的参数,位置参数在定义过程中未赋值,默认参数在定义过程中赋默认值,如下,name、height为位置参数,weight为默认参数,在函数调用过程中,如果默认参数位置不传值,将使用默认值,反之,将使用传递的参数。

      函数传递的参数个数一定要跟函数定义的参数个数一致,否则报错。person('大佬'),程序报错,原因:函数定义时,定义了2个位置参数,而实际调用时,只传了1个位置参数,位置参数的个数对不上。 person('大佬', 170),程序正常运行,原因:weight为默认参数,调用时,不传weight值,将使用weight的默认值50

      

      如果函数定义时既有位置参数,又有默认参数,位置参数必须在默认参数位置的前面,否则程序报错。如下,函数错误,因为b为默认参数,c为位置参数,那么,b应该在c的后面。

      

     ③关键字参数

      关键字参数是指在函数调用过程中,带有变量名称,并且与函数定义时的变量名称一致的参数,使用关键字参数,不需要位置一一对应。add(1, c=5),打印结果为8,相当于a=1,b=2(使用默认值),c=5(关键字参数)

           

     ④可变参数

      可变参数是指在函数定义过程中,用*标记的参数。可变参数可以接受多个实参(位置参数)。可变参数的数据类型为元祖。如下,1赋值给位置参数a, 2赋值给位置参数b, 剩下的位置参数被args接受并存储到一个元祖里面,args = (3, 4, 5, 6)

           

     ⑤带有关键字的可变参数

      带有关键字的可变参数,用**标记,可以接受多个关键字参数,存储到一个字典里面,变量名称为键,变量值为值。如下,1将赋值给位置参数a, 2将赋值给位置参数b,关键字参数c = 3、d = 4、e = 5、f = 6被args变量接受,并组装成一个字典 args = {'c' : 3, 'd' : 4, 'e' : 5, 'f' : 6}

        

    三、拆包 

      函数实际调用过程中,变量前用*标记,可以将列表list、元祖tuple拆包为位置参数,将字典dict拆包为关键字参数。

          

     四、变量的作用域

      变量根据作用域可分为全局变量和局部变量,全局变量是指文件里面顶格定义的变量,局部变量是指在函数体内定义的变量,如下:name是在文件中顶格定义,为全局变量,w是在函数体内定义,为局部变量。

      

       

       局部作用域中可以获取到全局变量,但不允许改变全局变量,如果非要改变全局变量的值,必须引入global声明,当全局变量命名与局部变量命名一致时,局部作用域优先使用局部变量。如下所示。

      

       全局作用域不能获取或修改局部变量的值,如下所示。

       

    五、内置函数

      python中一些比较常用的内置函数为:

      print():打印到屏幕

      input():接受用户输入的字符,数据类型为字符串型

      type():获取变量的类型

      len():获取变量元素的个数,如字符串、列表、元祖、字典、集合等的长度

      str()、int()、float()、list()、tuple()、dict()、set()、bool():数据类型转换

      min():取最小值,接受的参数可以有多个变量,或列表、或元祖,如min(1, 2, 4, 0, 5) 、min([1, 2, 4, 0, 5]) 、min((1, 2, 4, 0, 5))

      max():取最大值,接受的参数可以有多个变量,或列表、或元祖,如max(1, 2, 4, 0, 5) 、max([1, 2, 4, 0, 5]) 、max((1, 2, 4, 0, 5))

      sum():求和,接受的参数为列表或元祖,如sum([1, 2, 4, 0, 5])、sum((1, 2, 4, 0, 5))

      enumerate():同时获取序列的索引和值,常用语for循环中,如 test_list = [0, 1, 2, 3],for i, v in enumerate(test_list)

      range():生成一个等差整数序列,range(start, end, step),包头不包尾,以step为步长的整数序列,如果start省略,则默认从0开始,如果step省略,则默认步长为1

      eval():去除代码字符串左右两侧的引号,如eval("4 + 8") = 12,eval("{'name' : '张三', 'sex' : '男'}") = {''name : '张三', 'sex' :' 男'}

      zip():压缩,将2个可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的列表,如果各个迭代器的元素个数不一致,则返回列表长度与最短的对象相同,在pyhon3.中zip() 返回的是一个对象(引自菜鸟教程),如a = ['name', 'sex', 'age'],b = ['张三', '男',  18], dict(zip(a, b)) = {'name' : '张三', 'sex' : '女', 'age' : 18}

      open():打开文件

     

  • 相关阅读:
    git add . 的时候遇到warning: LF will be replaced by CRLF inXXX 解决办法
    用Merge存储引擎中间件实现MySQL分表
    隐型马尔科夫模型(HMM) 简介
    隐型马尔科夫模型(HMM)向前算法实例讲解(暴力求解+代码实现)---盒子模型
    数据输入——生成你需要的echart图(世界地图,气泡图)
    数据输入——生成你需要的echart图(堆积柱状图、扇形图、嵌套环形图)
    jython实现java运行python代码
    django第四课 标签的用法(if/else、for、ifequal、过滤器、注释等)
    django第三课 模版
    paddlepaddle使用(一)
  • 原文地址:https://www.cnblogs.com/purelavender/p/14139809.html
Copyright © 2020-2023  润新知