元组,字典,集合,函数

一、元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。
1.访问元组

tuple=('hello',100,3.14)
print(tuple[0])
print(tuple[1])
print(tuple[2])

2、修改元组
说明: python中不允许修改元组的数据,包括不能删除其中的元素。
3.count, index
index和count与字符串和列表中的用法相同

a = ('a', 'b', 'c', 'a', 'b')
a.index('a', 1, 3) # 注意是左闭右开区间

a.index('a', 1, 4)

a.count('b')

a.count('d')

在这里插入图片描述
4.定义只有一个数据的元组

a=11
print(type(a))
a=(11,)#只有一个元素的元组,必须在元素后面写一个逗号
print(type(a))

在这里插入图片描述
二、字典
1.定义字典的格式:{键1:值1, 键2:值2, 键3:值3, …, 键n:值n}

info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国上海'}
print(info['name'])  # 字典使用键来获取对应的值

在这里插入图片描述
说明:
字典和列表一样,也能够存储多个数据
列表中找某个元素时,是根据下标进行的;字典中找某个元素时,是根据’名字’(就是冒号:前面的那个值,例如上面代码中的’name’、‘id’、‘sex’)
字典的每个元素由2部分组成,键:值。例如 ‘name’:‘班长’ ,'name’为键,'班长’为值
键可以使用数字、布尔值、布尔值、元组等不可变数据类型,但是一般习惯使用字符串
每个字典里的key都是唯一的,如果出现了多个key,后面的value会覆盖前一个key对应的value.

在习惯上:
列表更适合保存多个商品、多个姓名、多个时间,这样的相似数据;
字典更适合保存一个商品的不同信息、一个人的不同信息,这样的不同数据。

2.查看元素

info = {'name':'班长','age':18}

print(info['age']) # 获取年龄
# print(info['sex']) # 获取不存在的key,会发生异常

print(info.get('sex')) # 获取不存在的key,获取到空的内容,不会出现异常
print(info.get('sex', '男'))  # 获取不存在的key, 可以提供一个默认值。

在这里插入图片描述
3.修改字典的元素

info = {'name':'班长', 'id':100}

print('修改之前的字典为 %s:' % info)

info['id'] = 200  # 为已存在的键赋值就是修改

print('修改之后的字典为 %s:' % info)

在这里插入图片描述
4.添加元素

info = {'name':'班长'}

print('添加之前的字典为:%s' % info)

info['id'] = 100  # 为不存在的键赋值就是添加元素

print('添加之后的字典为:%s' % info)

5.删除元素
①del删除指定的元素

info = {'name':'班长', 'id':100}

print('删除前,%s' % info)

del info['name']  # del 可以通过键删除字典里的指定元素

print('删除后,%s' % info)

在这里插入图片描述
②del删除整个字典

info = {'name':'monitor', 'id':100}

print('删除前,%s'%info)

del info  # del 也可以直接删除变量

print('删除后,%s'%info)

在这里插入图片描述
③clear清空整个字典

info = {'name':'monitor', 'id':100}

print('清空前,%s'%info)

info.clear()

print('清空后,%s'%info)

在这里插入图片描述
6.字典的遍历

<1> 遍历字典的key(键)
在这里插入图片描述

<2> 遍历字典的value(值)
在这里插入图片描述

<3> 遍历字典的项(元素)
在这里插入图片描述

<4> 遍历字典的key-value(键值对)
在这里插入图片描述
三、集合
1.集合(set)是一个无序的不重复元素序列,可以使用大括号 { } 或者 set() 函数创建集合。

注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
parame = {value01,value02,…}
或者
set(value)
2.添加元素

thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)

在这里插入图片描述
3.移除元素

thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)

在这里插入图片描述

四、函数
1.定义函数

def 函数名():
    代码
# 定义一个函数,能够完成打印信息的功能
def printInfo():
    print('------------------------------------')
    print('         人生苦短,我用Python')
    print('------------------------------------')

2.调用函数
定义了函数之后,就相当于有了一个具有某些功能的代码,想要让这些代码能够执行,需要调用它

调用函数很简单的,通过 函数名() 即可完成调用

# 定义完函数后,函数是不会自动执行的,需要调用它才可以
printInfo()

注意:
函数定义好以后,函数体里的代码并不会执行,如果想要执行函数体里的内容,需要手动的调用函数。
每次调用函数时,函数都会从头开始执行,当这个函数中的代码执行完毕后,意味着调用结束了。
当然了如果函数中执行到了return也会结束函数。

2.函数参数

def add2num(a, b):
    c = a+b
    print c

add2num(11, 22) # 调用带有参数的函数时,需要在小括号中,传递数据

注意点:

在定义函数的时候,小括号里写等待赋值的变量名
在调用函数的时候,小括号里写真正要进行运算的数据
定义时小括号中的参数,用来接收参数用的,称为 “形参”
调用时小括号中的参数,用来传递给函数用的,称为 “实参”

3.函数的返回值
所谓“返回值”,就是程序中函数完成一件事情后,最后给调用者的结果
使用返回值的前提需求就是函数调用者想要在函数外使用计算结果
想要在函数中把结果返回给调用者,需要在函数中使用return


```python
def add2num(a, b):
    c = a+b
    return c  # return 后可以写变量名
#定义函数
def add2num(a, b):
    return a+b

#调用函数,顺便保存函数的返回值
result = add2num(100,98)

#因为result已经保存了add2num的返回值,所以接下来就可以使用了
print(result)

在这里插入图片描述
4.函数练习

# 打印一条横线
def printOneLine():
    print("-"*30)

# 打印多条横线
def printNumLine(num):
    i=0

    # 因为printOneLine函数已经完成了打印横线的功能,
    # 只需要多次调用此函数即可
    while i<num:
        printOneLine()
        i+=1

printNumLine(3)
# 求3个数的和
def sum3Number(a,b,c):
    return a+b+c # return 的后面可以是数值,也可是一个表达式

# 完成对3个数求平均值
def average3Number(a,b,c):

    # 因为sum3Number函数已经完成了3个数的就和,所以只需调用即可
    # 即把接收到的3个数,当做实参传递即可
    sumResult = sum3Number(a,b,c)
    aveResult = sumResult/3.0
    return aveResult

# 调用函数,完成对3个数求平均值
result = average3Number(11,2,55)
print("average is %d"%result)

5.局部变量和全局变量
局部变量,就是在函数内部定义的变量
其作用范围是这个函数内部,即只能在这个函数中使用,在函数的外部是不能使用的
因为其作用范围只是在自己的函数内部,所以不同的函数可以定义相同名字的局部变量(打个比方,把你、我是当做成函数,把局部变量理解为每个人手里的手机,你可有个iPhone8,我当然也可以有个iPhone8了, 互不相关)
局部变量的作用,为了临时保存数据需要在函数中定义变量来进行存储
当函数调用时,局部变量被创建,当函数调用完成后这个变量就不能够使用了
如果一个变量,既能在一个函数中使用,也能在其他的函数中使用,这样的变量就是全局变量

打个比方:有2个兄弟 各自都有手机,各自有自己的小秘密在手机里,不让另外一方使用(可以理解为局部变量);但是家里的电话是2个兄弟都可以随便使用的(可以理解为全局变量)

# 定义全局变量
a = 100

def test1():
    print(a)  # 虽然没有定义变量a但是依然可以获取其数据

def test2():
    print(a)  # 虽然没有定义变量a但是依然可以获取其数据

# 调用函数
test1()
test2()

在这里插入图片描述
查看所有的全局变量和局部变量
Python提供了两个内置函数globals()和locals()可以用来查看所有的全局变量和局部变量。

def test():
    a = 100
    b = 40
    print(locals())  # {'a': 100, 'b': 40}

test()

x = 'good'
y = True
print(globals())  # {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x101710630>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': '/Users/jiangwei/Desktop/Test/test.py', '__cached__': None, 'test': <function test at 0x101695268>, 'x': 'good', 'y': True}

6.递归函数

def factorial(num):
    result = 1
    if num == 1:
        return 1
    result = num * factorial(num -1)
    return result
print(factorial(3))

在这里插入图片描述
7.匿名函数
用lambda关键词能创建小型匿名函数。这种函数得名于省略了用def声明函数的标准步骤。

lambda函数的语法只包含一个语句
lambda 参数列表: 运算表达式

sum = lambda arg1, arg2: arg1 + arg2

# 调用sum函数
print("Value of total : %d" % sum( 10, 20 ))
print("Value of total : %d" % sum( 20, 20 ))

在这里插入图片描述
定义一个变量指向函数
在Python中,我们还可以定义一个变量,让它来指向一个函数,相当于给函数起了一个别名。

def test():
    return 'hello wrold'

fun = test   # 定义了一个变量fun,让它指向了 test 这个函数
print(fun())   # 使用fun()可以直接调用test这个函数

print(id(fun))  # 1819677672040
print(id(test))  # 1819677672040

在这里插入图片描述
注意:在定义一个变量表示一个函数时,函数后面不能加括号!加括号表示的是调用这个函数。

def test():
    return 'hello world'

result = test()   # 这种写法是调用test函数,并把函数的返回值赋值给result变量
print(result())   # 这里会报错  TypeError: 'str' object is not callable

fun = test   # 这种写法是给test函数起了一个别名,注意,这里的test后面不能加()
fun()        # 可以使用别名调用这个函数

8.高阶函数
既然变量可以指向函数,函数的参数能接收变量,那么一个函数就可以接收另一个函数作为参数,同样,我们还可以把一个函数当做另一个函数的返回值。这种函数的使用方式我们称之为高阶函数。

def test(age,action):
    if age < 18:
        print('您还没满十八岁,请退出')
    action()   # 把参数action直接当做一个函数来调用

def smoke():
    print('我已经年满十八岁了,我想抽烟')

my_action = smoke  # 定义一个变量my_action,让它指向smoke函数
test(21, my_action)  # 将my_action传给 test 函数作为它的参数

test(21,smoke)  # 还可以不再定义一个新的变量,直接传入函数名

在这里插入图片描述

def test():
    print('我是test函数里输入的内容')

def demo():
    print('我是demo里输入的内容')
    return test  # test 函数作为demo函数的返回值

result = demo()  # 我是demo里输入的内容  调用 demo 函数,把demo函数的返回值赋值给 result
print(type(result)) # <class 'function'>  result 的类型是一个函数

result() # 我是demo里输入的内容    我是test函数里输入的内容   既然result是一个函数,那么就可以直接使用() 调用这个函数

demo()()  # 我是demo里输入的内容    我是test函数里输入的内容

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值