python中函数的参数和C语言函数的参数其实一样,他们都是形参,是实参的一份临时拷贝。我们来定义一个加法函数来看看函数的参数传入:
参数之间使用逗号进行分隔。
那我们应该如何调用函数呢?如果函数有返回值,我们可以用一个变量来接收函数的值:
刚才我们讲到函数如果有返回值可以用变量接收,函数的返回值可以是表达式也可以是常量。
在C语言中的函数,没有返回值我们可以直接写成 return; 那么我们在 python 中应该如何定义没有返回值的函数呢?
python 中有个特殊的字面量 ''None'' ,它的类型是:
None 可以直接用 return 返回,效果等同于不写 return 语句。
None的应用场景:
1.用在 if 判断上
在 if 判断中,None 等同于 False,一般主动返回None,配合 if 判断做相关处理
2.用于声明无内容的变量上
在C语言中,我们对于无内容的变量可以直接赋初值为0,在 python 中,我们就可以把变量值赋值为 None
通俗点来说,函数的说明文档就是用注释给每个参数(包括返回值)进行说明,当我们在函数定义中打上多行注释再回车,就会自动显示每一个参数,辅助理解函数的作用:
不要小看这个注释,之所以叫说明文档是因为它真的是个存储信息的文档,当我们再次调用函数的时候,鼠标定格在函数名上,我们的说明文档就会自动浮现:
在我看来,python 中的数据容器好像 C语言 中结构体和数组的结合体。数据容器是可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素,每一个元素都可以是任意类型的数据,如字符串、整型、浮点型...
数据容器根据特点的不同,如:
是否支持重复元素
是否可以修改
是否有序,等
分为5类,分别是:
列表 (list)、元组 (tuple) 、字符串 (str)、集合 (set) 、字典 (dict)
列表可以一次存储多个数据,可以为不同的数据类型,支持嵌套。下面我们来写一个实例演示:
列表正向的下标和数组下标等同,第一个元素都是0,但是列表可不是只有这点功能,列表也可以反向索引,最后一个元素是-1,倒数第二个为-2...
语法: 列表名[标号]
嵌套列表的下标和数组类似,但是也可以反向索引单个元素。
列表提供很多一系列功能:
插入元素、删除元素、清空列表、修改元素、统计元素个数...这些功能我们都成为列表的方法。
在 python 中,如果把函数定义为 class(类) 的成员,那么函数会称之为:方法
方法和函数功能一样,只是方法的使用格式不同:
查找某元素的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:列表.index(元素)
修改特定位置的元素值:
功能:直接对指定下标的值进行重新赋值
语法:列表[下标] = 值
插入元素:
功能:在指定的下标位置,插入指定的元素
语法:列表.insert(下标, 元素)
追加元素:
功能:将指定元素追加到列表的尾部
语法:列表.append(元素)
功能:将其他数据容器的内容依次追加到列表尾部
语法:列表.extend(其他数据容器)
删除元素:
功能:删除指定下标元素
语法1:del 列表[下标]
语法2:列表.pop(下标)
功能:删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
清空列表:
功能:清空列表内容
语法:列表.clear()
统计数量:
功能:统计某元素在列表内的数量
语法:列表.count(元素)
功能:统计列表内,有多少元素
语法:len(列表)
·可以容纳多个元素
·可以容纳不同类型的元素
·数据是有序存储的
·允许重复数据存在
·可以修改
元组同列表一样,都是可以封装多个不同类型的元素,但是元组一旦定义,就不可以修改。
注意:如果元组只有1个元素,这个数据后面要添加逗号
元组的下标和列表等同,这里不过多介绍。
查找某元素的下标
功能:查找指定元素在元组的下标,如果找不到,报错ValueError
语法:元组.index(元素)
统计数量:
功能:统计某元素在元组内的数量
语法:元组.count(元素)
功能:统计元组内,有多少元素
语法:len(元组)
元组的遍历和列表一样,具有 while 循环和 for 循环
·可以容纳多个元素
·可以容纳不同类型的元素
·数据是有序存储的
·允许重复数据存在
·不可以修改(可以修改其嵌套的list中的元素)
字符串的下标索引与列表一样,这里也不作过多解释
特别注意:字符串的操作在使用时一定要记得加双引号 ""
在C语言中,字符串是一个常量;在python中,字符串同元组一样,是一个无法修改的数据容器
修改指定下标的字符、移除特定下标的字符、追加字符......都是无法实现的,如果必须要做,我们只能通过得到一个新字符串的方法来实现以上功能。
字符串的替换
功能:将字符串1内的全部内容替换为字符串2
语法:字符串.replace(字符串1, 字符串2)
注意:不是修改字符串本身,而是得到了一个新字符串
字符串可以指大字符串中的某小字符串
字符串的分割
功能:按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中
语法:字符串.split(分隔符字符串)
注意:字符串本身不变,得到一个列表对象
这个功能像不像C语言中的 strtok 函数?
字符串的规整操作
功能:去除前后指定字符串
语法:字符串.strip(字符串)
如果strip()中没有传入字符串,则默认去除前后空格以及回车符
注意:如果传入的是"32",那么"3"和"2"都会移除,系统是按照单个字符来去除的
只能去除首尾的对应元素,并不能去除中间的对应元素
查找给定字符的第一个匹配项的下标
功能:查找指定元素在列表的下标,如果找不到,报错ValueError
语法:字符串.index(字符串)
统计数量:
功能:统计某字符串在字符串内的数量
语法:字符串.count(字符串)
功能:统计字符串内,有多少元素
语法:len(字符串)
·只可以存储字符串
·长度任意
·支持下标索引
·允许重复字符串存在
·不可以修改
序列是指内容连续、有序,可使用下标索引的一类数据容器,列表、元组、字符串,均可视为序列
功能:从一个序列中,取出一个子序列
语法:序列[起始下标:结束下标:步长]
表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:
起始下标:表示从何处开始,可以留空,留空视作从头开始
结束下标(不含该下标元素):表示何处结束,可以留空,留空视作截取到结尾
步长:依次取元素的间隔
步长1表示,一个个取元素
步长2表示,每次跳过1个元素取
步长N表示,每次跳过N-1个元素取
步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)注意:此操作不会影响序列本身,而是会得到一个新的序列
经过前面的学习,我们总结出列表、元组、字符串都是支持重复元素且有序的,但是当我们需要去重处理时,他们就不太合时宜了,所以我们接下来一起学习set(集合),他最大的特点就是不支持重复元素且无序。
因为集合是乱序的,所以集合不支持下标索引访问哦!
添加新元素
功能:将指定元素添加到集合内
语法:集合.add(元素)
结果:集合本身被修改,添加了新元素
移除元素
功能:将指定元素从集合内移除
语法:集合.remove(元素)
结果:集合本身被修改,移除了该元素
随机取出元素
功能:从集合中随机取出一个元素
语法:集合.pop()
结果:会得到一个元素的结果,同时原集合中该元素被移除
清空集合
功能:清空整个集合的元素
语法:集合.clear()
统计集合元素数量
功能:统计集合去重后的元素数量
语法:len(集合)
取出两个元素的差集
功能:取出集合1和集合2的差集
语法:集合1.difference(集合2)
集合1有而集合2没有的
结果:得到一个新集合,集合1和集合2不变
消除2个集合的差集
功能:对比集合1和集合2,在集合1内删除和集合2相同的元素
语法:集合1.difference_update(集合2)
结果:集合1被修改。集合2不变
合并2个集合
功能:将集合1和集合2合并成新集合(自动去重)
语法:集合1.union(集合2)
结果:得到新集合,集合1和集合2不变
因为集合不支持下标索引,所以不能用 while 循环遍历
·可以容纳多个元素
·可以容纳不同类型的元素
·数据是无序存储的
·不允许重复数据存在
·可以修改