美文网首页
Python语言基础7

Python语言基础7

作者: Cestine | 来源:发表于2018-11-28 02:45 被阅读0次

局部变量、全局变量、参数、返回值、拆包、可变、不可变类型、函数使用注意事项

1.局部变量

  局部变量,就是在函数内部定义的变量

  其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的

  因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量

  局部变量的作用,为了临时保存数据,需要在函数中定义变量来进行存储

  当函数调用时,局部变量被创建,当函数调用完成后,需要先进行内存回收(销毁变量),这个变量就不能够使用了

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

      作用域(变量的使用范围): 在函数的内部

2.全局变量

在程序设计过程中,并不建议使用全局变量,因为会大量占用内存空间不释放, 而且全局变量在使用过程中,任何人都可以访问,不安全,会破坏程序的封装性。不符合面向对象的封装思想。

  全局变量: 定义在函数外部的变量

  作用域: 整个模块内部,既能在一个函数中使用,也能在其他的函数中使用

  当函数内出现局部变量和全局变量相同名字时,函数内部中的 变量名 = 数据 此时理解为定义了一个局部变量,而不是修改全局变量的值

  如果在函数中出现global 全局变量的名字 那么这个函数中即使出现和全局变量名相同的变量名 = 数据 也理解为对全局变量进行修改,而不是定义局部变量

  如果在一个函数中需要对多个全局变量进行修改,那么可以使用global 进行全局声明

可以使用一次global对多个全局变量进行声明

              global a, b

              还可以用多次global声明都是可以的

              global a

              global b

3. 参数

<1>. 位置参数

位置参数调用函数(实参和形参的个数相同, 位置要一一对应)

关键字参数调用函数(不关心其位置 只要把形参名写对即可)

<2>.缺省参数

在形参中默认有值的参数,称之为缺省参数

调用函数时,缺省参数的值如果没有传入,则取默认值。

在调用函数的时候 如果缺省参数的的位置 传入了对应的实参, 那么实参会把缺省参数的默认值给

覆盖

注意:

  带有默认值的参数一定要位于参数列表的最后面

  如果某个形参为缺省参数, 那么其后面的参数必须都是缺省参数

<3>. 不定长参数

有时可能需要一个函数能处理比当初声明时更多的参数, 这些参数叫做不定长参数,声明时不会命名。

不定长参数元组(不定长位置参数)

格式: def 函数名(*args): (备注 args名字可以自定义)

加了星号(*)的变量args会存放所有未命名的变量参数,args为元组

不定长参数元组是一个缺省参数  形参的默认值为空的元组

不定长参数字典(不定长关键字参数)

格式: def 函数名(**kwargs): (备注 kwargs名字可以自定义)

而加**的变量kwargs会存放命名参数,即形如key=value的参数, kwargs为字典.

不定长参数字典是一个缺省参数  形参的默认值为空的字典

注意:

def 函数名(*, a, b):

*后的参数a和b必须是关键字参数

在调用一个不定长参数元组的时候 实参是来自于一个字符串 列表 或者 元组

不需要程序员通过下标取值 直接使用 *字符串名或者列表名或者元组名 即可

my_list = [1,2,3]

func1(*my_list)

在调用一个不定长参数字典的时候 实参是来自于一个字典,**字典名即可

my_dict = {"name": "小明"}

func2(**my_dict)

  函数参数:

位置参数(正常形参), 缺省参数, 不定长参数(元组*args, 字典**kwargs)

  函数的定义参数顺序:

位置参数, 缺省参数, 不定长参数元组(缺省参数和不定长参数元组*args的位置

可以互换), 不定长参数字典

  缺省参数在*args后面

如果很多个值都是不定长参数,那么这种情况下,可以将缺省参数放到

*args的后面, 但如果有**kwargs的话,**kwargs必须是最后的

4.函数返回值

  如果一个函数中有写 return 返回值 标识着这个函数为有返回值的函数

  如果一个函数中有写多个return 如果有一个return已经被执行了 那么这个函数就会结束了,因此后面的return没有什么用处

  return除了能够将数据返回之外,还有一个隐藏的功能:结束函数。如果执行了return 就标识着函数的调用结束 (return后面的代码将不再执行)

  return后面可以是元组,列表、字典等,只要是能够存储多个数据的类型,就可以一次性返回多个数据

  如果return后面有多个数据,只需要把多个数值使用,(逗号)隔开返回即可,那么默认为元组类型

5.拆包

  拆包时要注意,需要拆的数据的个数要与变量的个数相同,否则程序会异常

  除了对元组拆包之外,还可以对字符串、列表、字典等拆包

  对字典拆包时取出来的是key,而不是键值对

  a, b = (11, 22)

  a,b,c = '你好吗'

  a, b = [11, 22]

  a, b = {"m":11, "n":22}  # 取出来的是key,而不是键值对

6.可变、不可变类型

  所谓可变类型与不可变类型是指:数据能够直接进行修改,如果能直接修改那么就是可变,否则是不可变

  可变类型有: 列表、字典、集合

  不可变类型有: 数字、字符串、元组

7.set、list、tuple

set是集合类型

set、list、tuple之间可以相互转换

使用set,可以快速的完成对list中的元素去重复的功能

8.函数使用注意事项

无参数、有返回值

注意:

  一个函数到底有没有返回值,就看有没有return,因为只有return才可以返回数据

  在开发中往往根据需求来设计函数需不需要返回值

  函数中,可以有多个return语句,但是只要执行到一个return语句,那么就意味着这个函数的调用完成

 

有参数、无返回值

注意:

  在调用函数时,如果需要把一些数据一起传递过去,被调用函数就需要用参数来接收

  参数列表中变量的个数根据实际传递的数据的多少来确定

函数名不能重复

  如果在同一个程序中出现了多个相同函数名的函数,那么在调用函数时就会出现问题,所以要避免名字相同

  还有一点 不仅要避免函数名之间不能相同,还要避免 变量名和函数名相同的,否则都会出现问题

调用函数

调用的方式为:

函数名([实参列表])

调用时,到底写不写 实参

          ■ 如果调用的函数 在定义时有形参,那么在调用的时候就应该传递参数

          ■ 调用时,实参的个数和先后顺序应该和定义函数中要求的一致

          ■ 如果调用的函数有返回值,那么就可以用一个变量来进行保存这个值

作用域

  在一个函数中定义的变量,只能在本函数中用(局部变量)

  在函数外定义的变量,可以在所有的函数中使用(全局变量)

相关文章

网友评论

      本文标题:Python语言基础7

      本文链接:https://www.haomeiwen.com/subject/mmpoqqtx.html