python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > python组合数据类型

python中的组合数据类型、函数详解

作者:一招定胜负

本文介绍了Python中的三种组合数据类型:列表、元组和字典,并详细讲解了字典类型的方法、遍历、维度及项目案例,还介绍了函数的定义、形参、实参、默认参数、可变参数、关键字参数、变量作用范围、global声明、导入其他模块的函数及__name__属性,感兴趣的朋友跟一起看看吧

python的组合数据类型

python里有三种组合数据类型:列表、元组和字典。列表上一篇博客我已经介绍过了。

1、元组

元组和列表是比较相似的,可以存放多种数据类型,只是不能进行删除、添加元素等操作。元组使用形式:

(元素1,元素2,元素3...)

元组类型用tuple表示,可以用tuple()创建一个空的元组或者进行强制类型转换。

2、字典

字典类型也是与列表相似,存放多种数据类型,但是以键值对的方式存放:

{键1:值1,键2:值2,键3:值3,...}

字典中键必须是独一无二的,不能随意修改,因此键的数据类型不能是列表和字典;值可以与相同的,可以是任意数据类型。字典数据类型用dict表示,可以用dict()表示一个空的字典。

a=dict()#创建一个空字典 
a[1]="张三"#创立一个键为1,值是张三的键值对
print(a[1])#打印a[1]键值对

1、字典类型的方法:

.clear():删除字典中元素,得到一个空字典。若要删除整个字典可以使用保留字del。如del a。

.get(参数1,参数2):查询字典中键为参数1的值,若查找成功则返回键对应的值;若失败则返回参数2,如果没输入参数2,则返回none。

.keys():获得字典中所有键的信息。

.value():获得字典中所有的值信息。

.item():获取字典中所有的键值对。

.pop(参数):删除字典中键为参数的键值对,同时返回这个键值对的值。

2、字典的遍历:

之前的博客讲过,print()函数中有一个默认参数end="\n"用来换行,这里我用end=""表示不换行,用end="\t"表示缩进。

3、数据的维度

在python中列表可以表示一维和二维的数据,字典可以表示高维的数据。

4、项目案例:学生投票系统

l=[]  #创建一个列表用于存储学生姓名
while True:
    name=input("请输入投票的名字:")
    if name!="结束":
        l.append(name)
    else:
        break   #while循环来统计投票直到输入结束
b=dict()  #创建一个空的字典
for c in l:
    b[c]=b.get(c,0)+1   #依次遍历列表中的名字,每出现一次,在字典中的值加一
print(b)  #输出字典

函数

函数相当于为了实现特定功能而编写的一个小工具,避免了每次实现该功能都要重复写代码。前面用过的print()是python已经写好的内置函数。我们也可以自定义新的函数,形式如下:

def 函数名(参数):
        代码块
        return 返回值

1、形参与实参:

定义函数时的参数称之为形参,调用函数时输入的函数称之为实参。

2、默认参数:

定义函数时给形参赋的值。这样调用函数的时候,如果没给形参赋值,函数会使用默认参数;如果给这个形参赋了值,会覆盖默认参数。

3、可变参数:

不确定函数中需要接受的参数个数时,可以使用可变参数,可变参数会以元组的数据类型来接受参数。正因为不确定参数的个数,可变参数必须要放在必填参数的右边,确保必填参数接收完数据,再将剩下的数据传给可变参数,形式:*参数。

4、关键字参数:

关键字参数和可变参数类似,区别在于以字典类型来存储接收到的数据,因此传递给关键字参数的数据需要包含键和值,键和值用等号连接。使用形式:**参数。

5、变量作用范围可能产生的问题:

函数中定义的变量为局部变量。①如果函数中没有定义和函数外部定义的全局变量a,函数中可以正常使用全局变量a。②如果函数内部和外部都定义了变量a,但是函数内部先定义局部变量再使用,会正常使用局部变量a。③如果函数内部和外部同时定义了变量a,而且函数先使用变量a,再去定义一个局部变量a,这时运行代码会报错a未被定义:

原因:

Python 中变量的作用域遵循LEGB 原则,对于全局变量(Global)和函数局部变量(Local):

     ①函数内未定义同名局部变量时,会向上查找全局变量;

     ②函数内定义了同名局部变量时,该变量会被标记为局部变量,且 Python没有 “变量提升” 机制(和 JavaScript 不同),必须先定义再使用,否则报错。

6、global声明全局变量

上面变量变量作用范围的问题,其实也是因为虽然局部变量和全局变量同名,但在内存使用的不是同一片空间。在函数内部使用global声明和全局变量a同名的变量,此时局部变量和全局变量a占用同一片存储空间,在函数内部对a进行修改,外部的全局变量a也会随之改变。

7、导入其他模块的函数

如果自己不想写,或者函数很复杂,可以导入他人已经写好的函数,一般在文件开头导入,有两种方式:

①导入文件:import 文件名

   调用方法:文件名.函数()

这种方法相当于在文件首行导入了其他文件的全部代码,执行时,被导入文件的代码会顺序执行,跳过函数部分,当调用函数时,函数才会被使用,相当于把两个文件拼接在一起。

②导入文件中的函数:

        导入文件中指定函数:from 文件名 impact 函数名

        导入文件中全部函数:from 文件名 impact *

        调用方法:函数名()

给导入的函数/文件设置别名:from 文件名 impact 函数名 as 新的函数名

                                                impact 文件名 as 新的模块名

8、_ _name_ _属性

这玩意用来获得当前文件的名称,如果位于主文件会返回“_ _main_ _",如果位于次文件(导入的文件)会返回导入的文件名。此属性一般用来测试当前文件是不是主文件。

9、lambda匿名函数

用于定义简单的函数,且可以作为形参。

使用形式:

        函数名=lambda 参数:函数内代码

到此这篇关于python中的组合数据类型、函数详解的文章就介绍到这了,更多相关python组合数据类型内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文