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():打开文件

 

 

 

posted @ 2020-12-15 17:13  大脸猫最爱鱼  阅读(151)  评论(0编辑  收藏  举报