python学习3__基础编程2

元组(tuple)

元组的定义:元组与列表类似,不同之处在于元组的元素不能修改

元组的基本操作:

分类方法说明
查询元组[索引]根据索引取值,索引不存在会报错
index(数据)根据值查询索引,返回首次出现时的索引,没有查到会报错
count(数据)数据在元组中出现的次数
len(列表)元组长度
if 数据 in 元组:检查元组中是否包含某元素
遍历for 元素 in 元组:取出元组中的每个元素

元素不能修改举例:

l=(1,2,3)
for ele in l:
    print(ele)
    ele='nihao'
    print(ele)
print(l)                           #输出仍为(1,2,3)

元组应用场景:

  1. •作为自动组包的默认类型

在这里插入图片描述

  1. •自动解包

    可以将容器中多个数据拆出来,下图中*后面的eles可以用任意变量代替,eg:a,_,a0等。表示 print(a)输出1.。。print(eles)输出[2,3].。。print(a,eles)输出1,[2,3]。

在这里插入图片描述

  1. •交换数据

    在这里插入图片描述

  2. •格式化输出

    t进行拆包后附给%s和%d,一个元组内可以有不同的数据类型

在这里插入图片描述

  1. •让列表不可被修改,保护数据安全

    列表和元组之间的相互转换,主要为了修改元组内数据或者使数组内的数据不被更改

在这里插入图片描述

在这里插入图片描述

"""---------------------------- 作为自动组包类型 ----------------------------"""
# 自动组包 (把多个数据自动组合为一个元组)
a= 1,2,3,4
print(a)
print(type(a))
"""---------------------------- 自动解包 ----------------------------"""
# 自动解包  把元组元素赋值给多个变量
t = (1,2,3,4)
a,b,c,d = t
print(a,b,c,d)
e,*args = t
print(*args)
print(args)
print(e)
*args,f = t
print(f)
"""---------------------------- 多个变量定义 ----------------------------"""
# 先自动组包,自动解包
# a,b,c,d = 1,2,3,4
"""---------------------------- 交换 ----------------------------"""
# go语言
# a = 10
# b = 20
#
# temp  =a
# a = b
# b = temp
# 组包和解包
a,b = b,a
#
print(a,b)
"""---------------------------- 格式化输出 ----------------------------"""
a = 10
b = 20
t = (40,50)
print('a=%d b = %d'%(a,b))
# 元组可以直接格式化输出
print('a=%d b=%d'%t)
"""---------------------------- 把列表变成元组,元素不可修改 ----------------------------"""
l = [1,2,3]
t = tuple(l)
print(type(t))

函数

定义:•所谓函数,就是把 具有独立功能的代码块 组织为一个整体,在需要的时候 调用。

•函数的使用包含两个步骤:

  1. 定义函数 —— 在函数中编写代码,实现功能

  2. 调用函数 —— 执行编写的代码

    函数名命名规范

在这里插入图片描述

函数的定义格式和函数的调用格式

def 函数名(参数):

函数封装的代码

​ …

函数调用: 函数名(参数)

函数的参数可以有多个eg:(a,b)

函数的执行过程:

​ •代码执行到函数定义时,不会走函数内部的代码,只是把函数名这个标识符,添加到内存中,调用函数时,会去内存中查询这个函数,并执行函数内部的代码。

形参和实参

形参:形式参数,在定义函数名和函数体时所使用的参数,目的时接受调用该函数时传入的参数。(函数被调用时用来接收实际参数的变量。)

实参:在调用时传递给函数的变量

*注意两点:

•1.在调用函数时,实参将赋值给形参。因而,必须注意实参的个数,类型应与形参一一对应,并且实参必须要有***确定的值***。

•2.实参可以是常量、变量、表达式、函数等. 无论实参是何种类型的量,在进行函数调用时,它们都***必须具有确定的值***。

形参的作用域

•形参的作用域只在定义函数的代码块 中,一旦超出该范围就不能再使用了

•不同的函数中,可以有同名的形参,不会相互影响

•作用域的使用提高了程序逻辑的局部性,增强程序的可靠性,减少名字冲突。

函数间的形参是不能相互使用的

def sayHello(name):
    print(type(name))
    print('hello %s'%name)

sayHello('林青霞')
sayHello('高圆圆')
sayHello([1,2,3])         #函数的实参类型可以室多种数据类型

# 实际使用过程中参数定义和调用的个数一定要保持一致
def sum(a,b):
    print('和为%d'%(a+b))

sum(10,20)
#sum(10)             #会报错

函数的返回值

在这里插入图片描述

在这里插入图片描述

"""---------------------------- 无参无返回值 ----------------------------"""
def sayHello():
    print('hello')

"""---------------------------- 无参有返回值 ----------------------------"""
import random
# 获取温度
def getTemperature():
    return random.randint(0,100)

t = getTemperature()
print(t)

"""---------------------------- 有参无返回值 ----------------------------"""
# 数据加工模块
def max(a,b):
    print(a+b)

"""---------------------------- 有参有返回值 ----------------------------"""
 def max(a,b):
     if a>=b:
         return a
     else:
         return b

局部变量和全局变量

在这里插入图片描述

全局变量是在整个py文件中声明,全局范围内都可以访问

•如果在函数中修改全局变量,那么就需要使用global进行声明,否则出错

# 函数内部不能修改全局变量
# 想要修改全局变量,需要变量加上global关键字

# 定义全局变量
m = 20

def sub():
    # 意图修改全局变量
    # 创建了新的局部变量
    global m
    m = 30
    print('函数里面',m)


# 修改之前输出
print(m)            #输出m=20
sub()
# 意图修改之后打印
print(m)             #输出m=30
函数的返回值

函数可以有多个返回值,但只能执行一个return指令

需求:
需求:定义函数接收参数a和参数b,并返回a和b的和以及a和b的差

多个返回值,结果是元组类型,可以使用多个变量接收
'''
def func(a,b):
    return a+b,a-b


# go
sum,_ = func(10,20)
print(sum)                    #30
print(_)                      #-10
print(type(func(10, 20)))     #tuple
模块

•模块是Python 程序架构的一个核心概念

•模块就好比是 工具包,要想使用这个工具包中的工具,就需要导入 import 这个模块

•每一个以扩展名py 结尾的 Python 源代码文件都是一个 模块

•在模块中定义的全局变量函数都是模块能够提供给外界直接使用的工具

'''
1. 定义python文件,定义全局变量  函数 类
2. 使用import导入模块,  模块名.变量/函数/类       #使用的时候需要加上模块名.变量/函数/类
3. 导入方式二:from  card_util import *  从模块中导入所有的全局变量和函数以及类,使用时就不需要加上模块名了
'''
# 保存名片的列表全局变量
# import card_util

from  card_util import *         #导入模块内所有的全局变量和函数以及类
#from  card_util import showMenu             #若只导入showMenu()函数,则使用
while True:
    # 打印菜单
    showMenu()
    # 读取用户输入
    code = int(input('请选择执行的操作:'))
    # 判断执行的操作
    if code == 1:
        addCard()
        continue   #可删除
    elif code == 2:
        showAll()
        continue
    elif code == 3:
        searchCard()
        continue
    else:
        print('退出系统')
        break

高阶函数和lambda表达式

函数式编程

•函数式编程:函数可以作为函数的参数,也可以作为函数的返回值

高阶函数

•就是把函数当成参数传递的一种函数

'''
需求:
1.定义一个求两个数和的函数
2.定义一个求两个数差的函数
3.定义一个函数既可以求和又可以求差
4.定义一个函数求三个数的和和三个数的乘  返回三个数最大值
'''
def sum(a,b):
    return a+b
def sub(a,b):
    return a-b
def div(a,b):
    return a/b
def r(a,b):
    return a*b
# func 函数参数
def d(a):
    return a*2
def cacl(a,b,func):
    result = func(a,b) # 函数必须有两个参数
    return result
a = 10
b = 20
result = cacl(a,b,r)      
print(result)
#result = cacl(a,b,d)   #这种形式会提示错误,因为d()只需要传入一个参数
#print(result)
'''
高阶函数:函数的参数有函数参数的函数称为高阶函数
传递函数:传递函数名即可  代表函数的引用
lambda表达式

•lambda也称为匿名函数

这种函数得名于省略了用def声明函数的标准步骤

lambda函数的定义格式:

lambda 参数:表达式

def sum(a,b):
    return a+b
# func 函数参数
def cacl(a,b,func):
    return func(a,b)

# print(cacl(a, b, sum))
a=1
b=3
print(cacl(a, b, lambda a, b: a + b))    #注意这里lambda a, b: a + b式子等于sum。而不是sum(),如以下代码
                                         #f = lambda a,b:a+b
                                         #print(f(10, 20)) 
'''
lambda表达式不用return返回数据
lambda表达式可以独立存在
'''
sort()函数
'''
l = ['abd','ewetrwef','fered','qwszfgfsaffs']
1,元素按照长度从小到大排序
2,按照第二个元素进行排序  倒叙排序
'''
#按长度进行排序
# sort内部调用
# 参数a 每一个列表元素
# 函数的作用是提取比较键
def myfunc(a):
    return len(a)
    # [3,5,8,12]
l = ['abd','ewetrwef','fered','qwszfgfsaffs']
l.sort(key=myfunc)
# l.sort(key=lambda a:len(a))        #这两种方式也可以直接算出
# l.sort(key=len)                    #注意比较键key不是一个函数,而是一个函数名称,默认参数为每个元素
print(l)

#按2进行排序
# 提取比较键
l = ['abd','ewetrwef','fered','qwszfgfsaffs']
# ll=['z','a','f']
# ll.sort(reverse=True)
# print(ll)

def func(ele):
    return ele[1]

l.sort(key=func)
#l.sort(key=lambda ele:ele[1],reverse=True)
print(l)

***python中函数必须先定义再进行使用

***函数内部不能修改全局变量,若想要修改,需要变量加global。直接在局部赋值不能改变全局变量,但在局部增加变量内的内容用法一样

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值