python小白学习笔记(03)

目录

二十一、函数基础定义

        1.解释:

        2.为什么要用函数呢?

        3.定义:

二十二、函数参数

        1.解释:

        2.定义:

二十三、函数返回值

        1.解释:

        2.定义:

        思考:

补充:None

        1.解释

        2.应用场景

二十四、函数说明文档

二十五、函数的嵌套

        1.局部变量:

        2.全局变量

        3.global关键字

二十六、数据容器

二十七、列表

        1.语法:

        2.列表的下表(索引)

        3.列表常见功能

        ①、查找某个元素的下标

        ②、修改特定位置(索引)的元素值

        ③、插入元素

        ④、追加元素

        ⑤、删除元素

        ⑥、清空列表内容

        ⑦、统计某元素在列表内的数量

        ⑧、统计元素 

        ⑨、小结

        4.列表的遍历

        5.列表总结


二十一、函数基础定义

        1.解释:

                是组织好的,可重复使用的,用来实现特定功能的代码段。

        2.为什么要用函数呢?

                为了得到一个针对特定需求、可供重复利用的代码段提高程序的复用性,减少重复性代码,提高开发效率

        3.定义:

def 函数名(传入参数):

                函数体

                return 返回值

函数名(参数)

        注意:①参数如不需要,可以省略

                   ②返回值如不需要,可以省略

                   ③函数必须先定义后使用

二十二、函数参数

        1.解释:

                传入参数的功能是:在函数进行计算的时候,接受外部(调用时)提供的数据

        2.定义:

# 定义函数
def add(x,y):
    result=x+y
    print(f"{x}+{y}的结果是:{result}")

# 调用函数
add(1,2)

        函数定义中,提供的x和y,称之为:形式参数(形参),表示函数声明将要使用2个参数·

        参数之间使用逗号进行分隔

        函数调用中,提供的5和6,称之为:实际参数(实参),表示函数执行时真正使用的参数值

        传入的时候,按照顺序传入数据,使用逗号分隔

        注意:传入参数的数量是不受限制的,可以不使用参数,也可以仅使用任意N个参数

二十三、函数返回值

        1.解释:

                所谓“返回值”,就是程序中函数完成事情后,最后给调用者的结果

        2.定义:

# 定义函数
def add(x,y):
    result = x+y
    # 返回返回值result
    return result

# 调用函数
num = add(1,2)
# 输出返回值
print(num)

                变量就是能接收到函数的返回值

                语法就是:通过return关键字,就能向调用者返回数据

                注意:函数体在遇到return后就结束了,所以写在return后的代码不会执行。

        思考:

                之前说返回值可以缺省,那么缺省的函数有返回值么?

                答:有的。Python中有一个特殊的字面量:None,其类型是:<class'NoneType'>

                无返回值的函数,实际上就是返回了:None这个字面量

# 定义函数
def my_print():
    print("击泥胎梅")

# 调用函数
test = my_print()
# 输出返回值
print(f"返回值为{test},返回值类型为{type(test)}")

        结果:

补充:None

        1.解释

        None表示:空的、无实际意义的意思,类型是:<class'NoneType'>

        函数返回的None,就表示,这个函数没有返回什么有意义的内容。也就是返回了空的意思。

        None可以主动使用return返回,效果等同于不写return语句

        2.应用场景

        None作为一个特殊的字面量,用于表示:空、无意义,其有非常多的应用场景。

        ①、用在函数无返回值上

        ②、用在if判断上

                在if判断中,None等同于Flase

                一般用于在函数中主动返回None,配合if判断做相关处理

# 定义函数
def your_age(age):
    if age >= 18:
        return 'SUCCESS'

# 调用函数,当年龄小于18时,test为None
test = your_age(int(input("请输入你的年龄\n")))
# 当test为None时,not None为真,于是输出语句
if not test:
    print("对不起,未满十八岁不能进入")

        结果:

 

        ③用在声明无内容的变量上

                定义变量,但暂时不需要变量有具体值,可以用None来代替

# 暂不赋予变量具体值
name = None

二十四、函数说明文档

        函数是纯代码语言.想要理解其含义,就需要一行行的去阅读理解代码,效率比较低。

        我们可以给函数添加说明文档,辅助理解函数的作用。

        语法如下:

  def func(x, y):

                """

                函数说明

                :param x:形参x的说明

                :paramy:形参y的说明

                :return:返回值的说明

                """

                函数体

                return 返回值

        通过多行注释的形式,对函数进行说明解释

        内容应写在函数体之前

#定义函数,进行文档说明
def add(a,b):
    """
    add函数可以接收2个参数,进行2数相加的功能
    :param a: 形参a表示相加的其中一个数字
    :param b: 形参b表示相加的另外一个数字
    :return: 返回值是2数相加的结果
    """
    result = a + b
    print(f"2数相加的结果是:{result}")
    return result

        注:

        :param 用于解释参数

        :return用于解释返回值

        在PyCharm编写代码时,可以通过鼠标悬停,查看调用函数的说明文档

二十五、函数的嵌套

        所谓函数嵌套调用指的是一个函数里面又调用了另外一个函数

def func_b():
    print("---2---")
def func_a():
    print("---1---")
    func_b()
    print("---3---")
    # 调用函数func_a
func_a()

        结果:

注意:如果函数A中,调用了另外一个函数B,那么只有先把函数B中的任务都执行完毕之后才会回到上次函数A执行的位置,进行执行之后的内容

二十六、局部变量AND全局变量

        变量作用域指的是变量的作用范围 (变量在哪里可用,在哪里不可用)

        主要分为两类:局部变量和全局变量

        1.局部变量:

                局部变量是定义在函数体内部的变量,即只在函数体内部生效

def testA():
    num = 100
    print(num)
testA()   #输出100
print(num)   #报错:name'num'isnot defined

        num是定义在“testA”函数内部的变量,在函数外部访问则立即报错

        局部变量的作用:在函数体内部,临时保存数据,即当函数调用完成后,则销毁局部变量

        2.全局变量

                全局变量,指的是在函数体内外都能生效的变量

#定义全局变量a
num = 100
def testA():
    print(num)#访问全局变量num,并打印变量num存储的数据
def testB():
    print(num)#访问全局变量num,并打印变量num存储的数据
testA() # 输出100
testB() # 输出100

         思考:下面这段代码会print(num)输出什么,100还是200?

#定义全局变量a
num = 100
def testA():
    print(num)#访问全局变量num,并打印变量num存储的数据
def testB():
    num = 200
    print(num)#访问全局变量num,并打印变量num存储的数据
testA() # 输出100
testB() # 输出100
print(num)

               结果:

        为什么在testB中把num修改成200了,最后输出的num还是100呢?

        这是因为testB中把num修改成200的是局部变量,相当于在testB中重新定义了一个局部变量num并赋值为200,而不是修改全局变量num,那么我们是不是就没办法在函数中修改全局变量了呢?

        答案肯定是可以的,python特意写了global关键字来应对上述情况。

        3.global关键字

                使用global关键字可以在函数内部声明变量为全局变量

#定义全局变量a
num = 100
def testA():
    print(num)#访问全局变量num,并打印变量num存储的数据
def testB():
    global num
    num = 200
    print(num)#访问全局变量num,并打印变量num存储的数据
testA() # 输出100
testB() # 输出100
print(num)

        结果:

        如上所示:要在函数中修改全局变量,需要使用global关键字将函数内定义的变量声明为全局变量

二十六、数据容器

        Python中的数据容器:

        一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素

        每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。

        数据容器根据特点的不同,如:

        是否支持重复元素

        是否可以修改

        是否有序,等

        分为5类,分别是:

        列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

二十七、列表

        1.语法:

#字面量

[元素1,元素2,元素3,元素4,...]

#定义变量

变量名称=[元素1,元素2,元素3,元素4,...]

#定义空列表

变量名称尔=[]

变量名称尔= list()

        列表内的每一个数据,称之为元素

        以[]作为标识

        列表内每一个元素之间用“,”逗号隔开

#定义一个列表list
my_list = ["itheima","itcast","python"]
print(my_list)
print(type(my_list))

my_list = ["itheima", 666, True]
print(my_list)
print(type(my_list))

#定义一个嵌套的列表
my_list = [[1, 2, 3],[4,5,6]]
print(my_list)
print(type(my_list))

        注意:元素的数据类型没有任何限制,甚至元素也可以是列表,支持嵌套列表

        2.列表的下表(索引)

        列表中的每一个元素,都有其位置下标索引,从前向后的方向,从0开始,依次递增我们只需要按照下标索引,即可取得对应位置的元素。

#语法:列表[下标索引]
name_list = ['Tom','Lily','Rose']
print(name_list[0])#结果:Tom
print(name_list[1])#结果:Lily
print(name_list[2])#结果:Rose

        当然我们强大的python是支持反向索引的

        也就是从后往前,从-1开始,依次递(-1,-2,-3...)

#语法:列表[下标索引]
name_list = ['Tom','Lily','Rose']
print(name_list[-3])#结果:Tom
print(name_list[-2])#结果:Lily
print(name_list[-1])#结果:Rose

        注意:下标索引的取值范围,超出范围无法获取元素,并且会报错

                    正向下标是从0开始,要取第1个元素要xx[0],取第3个元素为xx[2]

                    反向下标是从-1开始,要取最后1个元素要xx[-1]

        3.列表常见功能

        列表也提供了一系列功能:插入元素、删除元素、清空列表、修改元素、统计元素个数等等功能,这些功能我们都称之为:列表的方法

        数是一个封装的代码单元,可以提供特定功能。在Python中,如果将函数定义为class(类)的成员,那么函数会称之为:方法

        方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同:

#函数
def add(x,y):
    return x+y
#函数的使用
num = add(1,2)

#方法
class Student:
    def add(self,x,y):
        return x+y
#方法的使用:
student = Student()
num = student.add(1,2)

        方法和函数功能一样,有传入参数,有返回值,只是方法的使用格式不同,关于方法的具体内容我们在后续的文章里会进行更新,现在就先当成函数使用

        ①、查找某个元素的下标

        功能:查找指定元素在列表的下标如果找不到,报错ValueError

        语法:列表:index.(元素)        

        index就是列表对象(变量)内置的方法(函数)

mylist = ["ikun","geigei","lizhi"]
# 查找某元素在列表内的下标索引
index = mylist.index("ikun")
print(f"ikun在列表中的下标索引值是:{index}")
#如果被查找的元素不存在,会报错
index = mylist.index("hello")
print(f"hello在列表中的下标索引值是:{index}")

结果:

        

        ②、修改特定位置(索引)的元素值

        语法:列表[下标] = 值

        直接对指定下标(正向、反向下标均可)的值进行:重新赋值(修改)

#正向下标
my_list = [1, 2, 3]
my_list[0] = 5
print(my_list) # 结果:[5,2,3]
# #反向下标
my_list = [1, 2, 3]
my_list[-3] = 5
print(my_list) # 结果: [5,2,3]
        ③、插入元素

        语法:列表.insert(下标,元素),在指定的下标位置,插入指定的元素

        注意:这里可以用-1,但是-1并不会插入到列表的尾部,而是插入到倒数第二个的位置,也就是例子里面2和3的中间

my_list =[1,2,3]
my_list.insert(1, "ikun")
print(my_list) #结果::[1,"ikun",3,4]
        ④、追加元素

        语法1:列表.append(元素),将指定元素,追加到列表的尾部

my_list =[1,2,3]
my_list.append(4)
print(my_list) # 结果:[1,2,3, 4]

        语法2:列表.extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾

my_list = [1,2,3]
my_list.extend([4,5,6])
print(my_list) # 结果:[1,2,3,4,5,6]
        ⑤、删除元素

        语法1:del列表[下标]

        语法2:列表.pop[下标]

        注意:这里的del是直接删除元素,而pop可以用一个变量来接收你删除的函数

my_list =[1,2,3]
del my_list[0]
print(my_list) # 结果:[2,3]

num = my_list.pop(0)
print(num) # 结果:1
print(my_list) # 结果:[2,3]

          语法3:列表.remove(元素) 这里是删除某元素在列表中的第一个匹配项

my_list=[1,2,3,2,3]
my_list.remove(2)
print(my_list)#结果:[1,3,2,3]

        注意:这里只能删除第一个匹配项,如果需要删除多个,需要执行多次语句,当删除项不存在时,程序报错

        ⑥、清空列表内容

        语法:列表.clear()

my_list =[1,2,3]
my_list.clear()
print(my_list)#结果:[]
        ⑦、统计某元素在列表内的数量

        语法:列表.count(元素)

my_1ist=[1,1,1,2,3]
print(my_1ist.count(1)) #结果:3
        ⑧、统计元素 

        语法:len(列表)

my_1ist=[1,1,1,2,3]
print(len(my_1ist)) # 结果:5
        ⑨、小结
列表常见功能小结
编号使用方式作用
1列表.append(元素)向列表中追加一个元素
2列表.extend(容器)将数据容器的内容依次取出,追加到列表尾部
3列表.insert(下标,元素)在指定下标处,插入指定的元素
4del 列表[下标]删除列表指定下标元素
5列表.pop(下标)删除列表指定下标元素
6列表.remove(元素)从前向后,删除此元素第一个匹配项
7列表.clear()清空列表
8列表.count(元素)统计此元素在列表中出现的次数
9列表.index(元素)9查找指定元素在列表的下标,找不到报错ValueError
10len(列表)统计容器内有多少元素

        4.列表的遍历

        既然数据容器可以存储多个元素,那么,就会有需求从容器内依次取出元素进行操作。将容器内的元素依次取出进行处理的行为,称之为:遍历、迭代。

        如何遍历列表的元素呢?可以使用前面学过的while循环

        如何在循环中取出列表的元素呢?使用列表[下标]的方式取出

        循环条件如何控制?定义一个变量表示下标,从0开始,循环条件为下标值<列表的元素数量

my_1ist=[1,1,1,2,3]
# 定义一个变量来标记列表的下标
index = 0   # 初始值为0
print(my_1ist)
# 通过len()获取列表长度作为判断条件,这里需要注意因为下标是从0开始,所以遍历5个元素的列表,下标只需要到4就可以了,所以判断条件不需要<=
while index < len(my_1ist):
    print(f"元组第{index+1}个元素是{my_1ist[index]}")
    # 将循环变量(index)每一次循环都+1,缺少的话会导致死循环
    index += 1

        结果:

 

        除了while循环外,Python中还有另外一种循环形式:for循环。

        对比while,for循环更加适合对列表等数据容器进行遍历。

        语法:

        for 临时变量 in 数据容器:

                对临时变量进行处理

        表示,从容器内,依次取出元素并赋值到临时变量上

        在每一次的循环中,我们可以对临时变量(元素)进行处理。

my_1ist=[1,1,1,2,3]
print(my_1ist)
for i in my_1ist:
    print(f"元组元素有:{i}")

         结果:

        

        while循环和for循环,都是循环语句,但细节不同:

        在循环控制上:

                while循环可以自定循环条件,并自行控制

                for循环不可以自定循环条件,只可以一个个从容器内取出数据

        在无限循环上:

                while循环可以通过条件控制做到无限循环

                for循环理论上不可以,因为被遍历的容器容量不是无限的

        在使用场景上:

                while循环适用于任何想要循环的场景

                for循环适用于,遍历数据容器的场景或简单的固定次数循环场景

        5.列表总结

        经过上述对列表的学习,可以总结出列表有如下特点:

                可以容纳多个元素(上限为2**63-1、9223372036854775807个)

                可以容纳不同类型的元素 (混装)

                数据是有序存储的 (有下标序号)

                允许重复数据存在

                可以修改 (增加或删除元素等)

        

  • 18
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值