【python语言基础】疑难点整理3

​​​​​​【python语言基础】疑难点整理1_凡先生的笔的博客-CSDN博客

【python语言基础】疑难点整理2_凡先生的笔的博客-CSDN博客

  • 7.3.6 形参的可变长度
  • 在定义函数时,可变长度参数主要有两种形式:单星号参数和双星号(**)参数。
  • 单星号参数是在形参名前加一个星号(*),把接收到的多个实参组合在一个元组内,以形参名为元组名。
  • def calcuScore(*scores):             #单星号形参用于把接收到的实参组合为元组
        sum = 0
        for n in scores:
            sum = sum + n
        print("分数:", *scores,end='  ')  #打印元组scores的所有元素
        return  (sum, sum/len(scores))
    
    sum1,av1 = calcuScore(78)          #第一次调用,scores接收1个实参78
    print("总分=",sum1,"平均分=",av1)
    sum2,av2 = calcuScore(78,88)       #第二次调用,scores接收2个实参78,88
    print("总分=",sum2,"平均分=",av2)
    sum3,av3 = calcuScore(78,88,95)    #第三次调用,scores接收3个实参78,88,95 
    print("总分=",sum3,"平均分=",av3)
    
    # 程序运行结果:
    # 分数: 78  总分= 78 平均分= 78.0
    # 分数: 78 88  总分= 166 平均分= 83.0
    # 分数: 78 88 95  总分= 261 平均分= 87.0
    
  • 双星号参数是在形参名前加两个星号(**),把接收到的多个实参组合在一个字典内,以形参名为字典名。
def dict1(**p):              #双星号形参用于把接收到的实参组合为字典
    for item in p.items( ):  #items()返回字典的所有"键-值"对
        print(item)          #打印字典的"键-值"对

dict1(x=1,y=2,z=3) #调用函数,传送实参给形参
# 程序运行结果:('x', 1) ('y', 2)('z', 3)

7.3.7 实参的序列解包

为含有多个变量的函数传递参数时,可以使用Python中的列表、元组、集合、字典以及其它可迭代对象作为实参,并在实参名前加一个星号,Python解释器将自动进行序列解包,然后,将序列中的元素值依次传递给相同数量的单变量形参。

def unPacking(a,b,c):
    print(a+b+c)

#调用函数unPacking(a,b,c),实参分别为列表、元组、字典、字典的“值”和集合
lst = [1,2,3]
print(lst,": ",end=' ')
unPacking(*lst)                #列表解包

tup = (1,2,3)
print(tup,": ",end=' ')
unPacking(*tup)                  #元组解包

dic = {1:'a',2:'b',3:'c'}
print(dic,": ",end=' ')
unPacking(*dic)                  #字典解包,默认使用字典的“键”

print(dic.values(),": ",end=' ')
unPacking(*dic.values())         #字典的“值”解包

set1 = {1,2,3}
print(set1,": ",end=' ')
unPacking(*set1)                 #集合解包

#程序运行结果:
#[1, 2, 3] :  6
#(1, 2, 3) :  6
#{1: 'a', 2: 'b', 3: 'c'} :  6
#dict_values(['a', 'b', 'c']) :  abc
#{1, 2, 3} :  6

8.1使用集合推导式创建集合

  • 使用集合推导式来创建集合,集合推导式与列表推导式类似,例如,
  • >>> { x*x for x in range(-3,3) }
    #{0, 9, 4, 1}
    >>> { s for s in ("Python","We","like")}
    #{'Python', 'like', 'We'}
    >>> fruit = [ 'banana', 'apple', 'morello', 'strawberry', 'pinapple' ]
    >>> {len(item)  for  item  in  fruit }
    #{5, 6, 7, 8, 10}

    8.2集合的运算符

  • 运算符

    功能描述

    x in

    如果x包含在集合s中,则返回True;否则返回False

    x not in

    如果x包含在集合s中,则返回False;否则返回True

    s == t

    如果集合s和t包含相同的元素,则返回True,否则返回False

    s != t

    如果集合s和t不包含相同的元素,则返回True,否则返回False

    s <= t

    如果集合s的每一个元素都包含在集合t中,则返回True,否则返回False

    s < t

    如果集合s<= t 且s != t,则返回True,否则返回False

    s | t

    返回集合s和t的并集

    s & t

    返回集合s和t的交集

    s - t

    返回集合s和t的差集

    s ^ t

    返回集合s和t的对称差

  • 8.3集合的方法
  • 方法

    功能描述

    s.union(t,...)

    等同s | t,新建集合,去除重复元素

    s.intersection(t,...)

    等同s & t,新建集合

    s.difference(t,...)

    等同s - t,以s为主来新建集合

    s.symmetric_difference(t)

    等同s ^ t,新建集合

    s.intersection_update(t,...)

    等同s &= t,s集合原地修改

    s.difference_update(t,...)

    等同s -= t,s集合原地修改

    s.symmetric_difference_update(t)

    等同s ^= t,s集合原地修改

    s.issuperset(t)

    如果集合s是t的父集,则返回True,否则返回False

    s.isdisjoint(t)

    如果集合s和t没有共同元素,则返回True,否则返回False

    s.issubset(t)

    如果集合s是t的子集,则返回True,否则返回False

  • 8.4字典
>>> keys = ["Sun","Mon","Tue","Wed","Thur","Fri","Sat"]
>>> values = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]
>>> abbr = dict(zip(keys,values))
>>> print(abbr)
# {'Sun': 'Sunday', 'Mon': 'Monday', 'Tue': 'Tuesday', 'Wed': 'Wednesday', 'Thur': 'Thursday', 'Fri': 'Friday', 'Sat': 'Saturday'}

#还使用字典推导式来创建集合,字典推导式与列表推导式类似,例如
>>> { x:x*x  for x in range(5) }
#{0: 0, 1: 1, 2: 4, 3: 9, 4: 16}

方法

功能描述

字典名.keys( )

以元组类型返回字典所有的“键”

字典名.values( )

以元组类型返回字典所有的“值”

字典名.items( )

以元组类型返回字典所有的“键-值”对

>>> specials = {"小赵":"通信","小钱":"电子工程","小孙":"自动化"}
#遍历字典所有的“键”
>>> for  key  in  specials.keys():     #等价于for  key  in  specials:
	print(key, end='  ')
#小赵  小钱  小孙 
>>> for  value  in  specials.values():       #遍历字典所有的“值”
	print(value, end='  ')
#通信  电子工程  自动化 
>>> for  item  in  specials.items():        #遍历字典所有的元素
	print(item, end='  ')
#('小赵', '通信')  ('小钱', '电子工程')  ('小孙', '自动化')  
for  key,value  in  specials.items():        #遍历字典所有的元素
	print('({},{})'.format(key,value), end='  ')
#(小赵,通信)  (小钱,电子工程)  (小孙,自动化)  

9.1 文件概述

  • 文件按照数据在计算机中存储的组织形式分为两种,文本文件二进制文件
  • 文本文件:存储的是常规字符串,由若干文本行组成,通常美行以换行符’\n’结尾。文本文件是把文件中的字符按照某种编码规则进行了编码,例如ASCII、UTF-8等。Python程序使用的文本文件是Unicode字符集中的字符序列,通常分为一些行(字符序列中有换行符)
  • 二进制文件:数据以二进制的形式存储于文件中,普通文本编辑工具一般无法打开编辑,二进制文件是把对象内容以字节串(bytes)进行存储,无法用记事本或其它普通文本处理软件直接进行编辑,通常也已无法被人类直接阅读和理解,需要使用专门的软件进行解码后读取、显示、修改和执行。常见的如图形图像文件、音频视频文件、可执行文件、资源文件、各种数据库文件、各类office文档等都属于二进制文件。
 open(file, mode=’r’, encoding=None )

模式

描 述

r

读取模式打开;默认

w

写入模式打开;若文件已经存在,则清除已有文件内容;若文件不存在,创建文件

a

附加模式打开;将数据内容附加写入到文件末尾;若文件不存在,则创建文件

x

排他性创建文件,写模式打开;若果文件已经存在,报FileExistsError错误

b

二进制模式打开

t

文本模式打开;默认

+

更新文件,不单独存在。’r+’表示保留原文件内容,从头开始读写;’w+’表示清除文件已有内容;’x+’与’w+’类似,但排他性的创建文件;’a+’与’w+’类似,但不清除文件已内容,从最后开始读写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凡先生的笔

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值