Python基础语法三---函数和数据容器

一、Pyhton函数

1.函数:是组织好的,可重复使用的,用来实现特定功能的代码块

(1)函数定义:

def 函数名(传入参数):

函数体

return 返回值

(2)函数调用:

变量=函数名(参数)

(3)print("123 \n 456")

python 复制代码
# 函数定义
def fisrt_test():
    print("first_test...\ntry")

# 函数调用
fisrt_test()

# 函数参数
def add_test(x,y): # 形参
    sum= x + y
    print(f"{x}+{y}={sum}",type(x)) # f:将变量/表达式的值以字符串的形式嵌入语句中

result=add_test(3,4) # 实参
print(result)
print(type(result))

2.函数的传入参数

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

(2)传入参数的个数不受限制,可以0个可以N个

3.函数的返回值

(1)函数返回值的定义

函数在执行完成之后,返回给调用者的结果;return之后的代码不会执行

(2)None类型

当函数没有使用return语句返回数据,函数的返回值是---None

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

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

None:空的、无实际意义

(3)None应用场景:

用在函数无返回值上

用在if判断上:

if判断中,None等同于False

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

def check(age):

if age>19:

return "SUCCESS"

return None


result=check(5)

if not result:

print("未成年")

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

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

name=None

python 复制代码
# None类型的应用场景 --if判断
def check(age):
    if age>19:
        return "SUCCESS"
    return None

result=check(5)
print(result) # none
print(bool(result)) # False
print(not result) # True

if  not result:
    # 进入if语句 说明result是None  即False
    print("未成年")

4.函数说明文档

(1)通过多行注释(""" .... """)的形式,对函数进行说明解释

def fun(x,y):

"""

函数说明

:param x:形参x的说明

:param y:形参y的说明

:return:返回值的说明

"""

函数体

return 返回值

(2)内容写在函数体之前

python 复制代码
# 定义函数,并进行文档说明
def add(a,b):
    """
    add函数可以接收两个参数,进行两数相加的结果
    :param a:
    :param b:
    :return:返回两数相加的结果
    """
    result=a+b
    print(f"两数相加的结果是:{result}")
    return result

add(5,6)

5.函数的嵌套调用

6.变量的作用域

(1)变量的作用域是指变量的作用返回

(2)局部变量:定义在函数体内部的变量,即只在函数体内部生效

作用在函数内部,在函数运行时临时保存数据,调用完成之后,销毁局部变量

(3)全局变量:在函数体内、外都能生效的变量

(3)global关键字:可以在函数内部声明变量为全局变量

python 复制代码
# global设置全局变量
num=200
print(num)
def test():
    global num
    num=500
    print(num)

test()
print(num)

二、Python数据容器

(1)Pyhton中数据容器:一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素;每一个元素,可以是任意类型的数据,比如字符串、数字、布尔等

(2)数据容器根据特点的不同,如:是否可以支持重复元素、是否可以修改、是否有序,分为5类,分别是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)

2.list列表

(1)基本语法

字面量

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

定义变量

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

#定义空列表

变量名称=[]

变量名称=list()

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

以[]作为标识

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

(3)列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套 list1[2][2]

(4)列表的下标索引 :从前向后 ,从0开始,依次递增

(5)列表的下标索引--反向索引:从后往前,从-1开始,依次递减(-1,-2,-3)

3.列表的常用操作

(1)插入元素 删除元素 清空列表 修改元素 统计元素个数 --列表的方法

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

(3)def add(x,y):

return x+y ----函数

class Student:

def add(self,x,y):

return x+y

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

函数的使用:num=add(1,2)

方法的使用:student=Student()

num=student.add(1,2)

(5)列表的查询功能

查找指定元素在列表的下标,没有找到,报错Value

语法:列表.index(元素)

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

(6)列表的修改:列表[下标]=值

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

(8)追加元素:

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

(9)追加多个元素

列表。extend(其它数据容器),将其它数据容器的内容取出,依次追加到列表尾部

(10)删除元素:

del 列表[下标]

列表.pop(下标) [可以接收到被删除元素--作为返回值]

(11)删除指定元素(删除元素在列表中的第一个匹配项)

列表.remove(元素)

(12)清空列表内容

列表.clear()

(13)统计某元素在列表内的数量

列表.count(元素)

(14)统计列表内,有多少元素

len(列表)

python 复制代码
# 数据容器 list
try_list1=["abc",123,[13.14,34,78]]
print(try_list1)
print(try_list1[2][2])

# 反向索引
print(try_list1[-1][-1])

# 1.list index方法
list2=["app1","app2","app3"]
index= list2.index("app1")
print(index)

# 2.列表的修改
list2[1]="opop"

# 3.列表-插入元素
list2.insert(2,"oiu")
print(list2)
# 4.列表-尾部插入
list2.append("final")
print(list2)

# 5.列表-追加多个元素
list2.extend(["add1","add2","add3"])
print(list2)

# 6.列表-删除 del pop
del list2[2]
remove_element= list2.pop(1)
print(remove_element)
print(list2)

# 7.列表删除指定元素(第一个匹配项)
list2.append("app3")
# 9.统计某元素在列表中的数量
print(list2.count("app3"))

# 10.统计列表中元素的个数
count=len(list2)
print(count)

list2.remove("app3")
print(list2)




# 8.清空列表内容
list2.clear()
print(list2)

4.列表总结:

(1)列表可以容纳多个元素

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

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

(4)允许重复数据出现

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

5.list(列表)的遍历

(1)遍历/迭代:将容器中的元素依次取出进行处理

数据容器--tuple(元组)

数据容器--tuple(元组)--只读list

1.元组一旦定义完成,就不可修改

2.当需要再程序内封装数据,又不希望封装的数据被篡改,--使用元组

3.元组定义:使用小括号,逗号隔开各个数据,数据可以是不同的数据类型

(1)# 定义元组字面量

(元素,元素,......,元素)

(2)

定义元组变量变量名称 =(元素,元素,......元素)

(3)

定义空元组

变量名称=() # 方式1

变量名称 = tup1e() # 方式2 得到元组的类对象

(4)定义单个元素的元组

t4=("aad",) # 单独加逗号,否则是str类型

4.元组的使用:

(1)index():查找某个数据,返回下标

(2)count():统计某个元素在元组中出现的个数

(3)len(元祖):统计元祖内的元素个数

5.元组不能修改内容 如果元组中嵌套list 则根据下标定位到ist再进行修改/增加

python 复制代码
# tuple 元组的定义和操作
# 1.定义
t1=(1,"aad",True)
t2=()
t3=tuple()
print(type(t1))
print(type(t2))
print(type(t3))

# 2.定义单个元素的元组 加, 否则是str类型
t4=("aad")
print(type(t4))
t5=("add",)
print(type(t5))

t2=(("1","2","3"),(2,3,4))
print(t2[-1][-1])

# 元组不能修改内容 如果元组中嵌套list 则根据下标定位到ist再进行修改
t3=(1,2,["aa","cc"])
print(t3)
t3[2][0]="bb"
print(t3)

数据容器--str(字符串)

1.字符串是字符的容器,一个字符串可以存放任意数量的字符

2.字符串是一个无法修改的数据容器

3.字符串的常用操作

(1)字符串.index(字符串) 查找特定字符串的下标索引值(起始索引值)

(2)字符串的替换

字符串.replace(字符串1,字符串2)

将字符串1内的全部内容,替换为字符串2

得到一个新的字符串

(3)字符串的分割

字符串.split(分隔符字符串)

按照指定的分隔符字符串,将字符串划分为多个字符串,并存入列表对象中

字符串本身不变,而是得到了一个列表对象

(4)字符串的规整操作(去前后空格)

字符串.strip()

(5)字符串的规整操作(去前后指定字符串)

字符串.strip(字符串)

str1.strip("12") --去除1和2

(6)字符串容器的特点:只可以存储字符串;不可以修改

python 复制代码
# 数据容器 str
try_str="app and add"
print(try_str)
# 1.获得指定字符串的位置
str_content=try_str.index("add")
print(str_content)

# 2.字符串替换--得到新字符串
new_str=try_str.replace("add", "hello")
print(new_str)

# 3.字符分割
str2="hi kitty 12345"
str2_list=str2.split(" ")
print(str2_list,type(str2_list))

数据容器 序列的切片操作

1.序列:指内容连续、有序、可使用下标索引的一类数据容器

列表、元组、字符串,均可视为序列

2.切片:从一个序列中,取出一个子序列

(1)语法:序列[起始下标:结束下标:步长]

(2)表示从序列中,从指定位置开始,依次取出元素,到指定位置结束,得到一个新序列:

起始下标: 从何处开始,可以留空,留空视作从头开始

结束下标(不含): 何处结束,可以留空,留空视作截取到结尾

步长: 依次取元素的间隔

步长1表示,一个个取元素 (默认值)

步长2表示,每次跳过1个元素取

步长N表示,每次跳过N-1个元素取

步长为负数表示,反向取(注意,起始下标和结束下标也要反向标记)

(3)对序列的切片操作不会影响序列本身,而是会得到一个 新序列

python 复制代码
# 序列[起始下标:结束下标:步长]

# 1.起始和结束不写表示从头到尾,步长为1可以省略
try_tuple=(0,1,2,3,4)
new_tuple=try_tuple[:]
print(new_tuple)

# 2.对str进行切片,从头到尾,步长为2
try_str="addcg111"
new_str=try_str[::2]
print(new_str)
# 3.将str字符串反转
new_str2=try_str[::-1]
print(new_str2)

# 3.对列表进行切片,从3开始,到一结束,步长-1
try_list=[0,1,2,3,4]
new_list=try_list[3:1:-1]
print(new_list)

集合 {} set

(1)不支持重复元素【会去重】;内容无序

(2)基本语法:

定义集合字面量

{元素,元素,...,元素}

定义集合变量

变量名称 ={元素,元素,......,元素}

定义空集合

变量名称 = set()

(3)集合无序,--不支持下标索引访问;可以修改

(4)从集合中随机取一个元素 集合.pop()

会得到一个元素的结果;集合本身被修改,元素被移除

(5)集合--修改:取两个集合的差集

集合1.difference(集合2):取出集合1有而集合2没有

得到一个新集合,集合1和集合2不变

(6)消除2个集合的差集

集合1.difference_update(集合2)

在集合1内,删除和集合2相同的元素;集合1被修改,集合2不变

(7)两个集合合并 --得到新集合

集合1.union(集合2) ---会去重

功能:将集合1 和集合2组成新集合;得到新集合,集合1和集合2不变

(8)统计集合元素数量 --len() 会去重统计

(9)集合的遍历:集合不支持下标索引,不能用while循环;可以使用for循环

python 复制代码
# 1.取两个集合的差集   --取出集合1有而集合2没有
set1={1, 2, 3, 4, 5}
set2={3, 4, 5, 6, 7, 8}
new_set= set1.difference(set2)
print(new_set)
print(set1)
print(set2)

print("----------------------------------------------------")
# 2.消除2个集合的差集     --集合1被修改
# 集合1.difference_update(集合2)
set1.difference_update(set2)
print(set1)
print(set2)

print("----------------------------------------------------")
# 3.两个集合合并  --得到去重的新集合
set1={1,2,3,4,5}
set2={3,4,5,6,7,8}
new_set2= set1.union(set2)
print(new_set2)


# 4.统计集合元素数量 去重统计
set3={1,2,3,4,5,5,4,3,2,1}
num=len(set3)
print(num)

# 5.集合的遍历 集合不支持下标索引,不可使用while循环可以使用for循环
for i in set2:
    print(i)

数据容器:dict(字典、映射)

(1)字典的基础定义

定义字典字面量

{key :value,key:value } 通过key使用value

如 通过姓名检索学生的成绩

定义空字典

dict1={} or dict1=fict()

(2)不允许key重复 如果定义两个相同的ket,最后的key会覆盖前一个key

(3)不可使用下标索引,通过key获取value

dict1["某个key"]

(4)字典嵌套:

字典的key和value可以是任意数据类型(key不可以是字典)

(5)字典的操作 ---新增

字典[key]=value 字典被修改,新增了元素

(6)字典的操作 ---更新

字典[key]=value 字典被修改,元素被更新 字典key不可以重复,所以对已存在的key上执行上述操作,就是更新value

(7)删除元素

语法:字典tpop(Key)结果: 获得指定Key的Value,同时字典被修改,指定Key的数据被删除 返回值是被删除的值

(8)获取全部key --可以用于遍历字典

字典.keys() 得到字典中的全部key

python 复制代码
# 1.新增
dict1={"kk1":{
    "语文":66,"数学":66},
    "kk2":{
        "语文":88,"数学":86},
    "kk3":{
        "语文":99,"数学":66},
};
dict1["kk4"]=[{
    "语文":90,
    "数学":99
}]
print(dict1)
print("--------------------")
# 2.更新
dict1["kk3"]["语文"]=100
print(dict1)

# 3.获取全部keys  --可以用于遍历字典
print("--------------------")
dict1_keys=dict1.keys();
print(f"字典的全部key是:{dict1_keys}")
print("--------------------")


# 4.遍历字典   方式一
for x in dict1_keys:
    print(f"字典的key:{x}")
    print(f"字典的value:{dict1[x]}")
print("--------------------")

# 4.遍历字典   方式二 直接对字典进行for循环,每一次循环直接得到key
for x in dict1:
    print(f"字典的key:{x}")
    print(f"字典的value:{dict1[x]}")

数据容器共性操作

(1)数据容器的通用统计特性

len(容器):统计容器的元素个数

max(容器):统计容器的最大元素 --字符串按字母排序,最小是a;字典:根据key判断大小而不是value 如 "key1": 2 "key2": 1 最大是key2

min(容器):统计容器的最小元素

(2)容器的通用转换功能

list(容器):将给定容器转换为列表

字符串转列表:把每个字符当做一个元素

字典转列表:只保留key

str(容器):将给定容器转换为字符串

列表,元组 会加"",如

"[]" "()"

字典转列表:key value都保留

tuple(容器):将给定容器转换为元组

字符串转元组:把每个字符当做一个元素

字典转元组:只保留key

set(容器):将给定容器转换为集合

字符串转集合:把每个字符当做一个元素 变成无序并去重

字典转集合:只保留key 变成无序

(3)容器的通用排序功能

sorted(容器,[reverse=True]) ---结果会变成列表对象

reverse=True:反向排序

字符串比大小

(1)基于数字的码值大小进行比较

(2)按位比较,只要有一位大,整体就大

三、总结

相关推荐
huatian52 小时前
Rust 语法整理
开发语言·后端·rust
xingzhemengyou12 小时前
Python 多线程同步
开发语言·python
2501_916766542 小时前
【Java】final关键字
java·开发语言
前端不太难2 小时前
RN 列表里的「局部状态」和「全局状态」边界
开发语言·javascript·ecmascript
3824278272 小时前
python3网络爬虫开发实战 第二版:绑定回调
开发语言·数据库·python
星月心城2 小时前
面试八股文-JavaScript(第五天)
开发语言·javascript·ecmascript
dagouaofei2 小时前
培训项目总结 PPT 工具对比评测,哪款更专业
python·powerpoint
wjs20242 小时前
PostgreSQL 时间/日期处理指南
开发语言
Hello eveybody2 小时前
用代码生成你的电影预告片(Python)
python