Python成长之路(三)——词典、文本文件的输入输出、模块、函数的参数传递

来源:互联网 发布:blueray播放器 mac 编辑:程序博客网 时间:2024/05/16 12:27

词典

可以存储多个元素的对象成为容器,前面提到的list和tuple都属于容器类,这里介绍一个新的容器:词典。

  • 基本概念
    常见的创建词典的基本方法:

    dic={'键':值,'键':值,'键':值...}

    词典包含两部分,键和值,其中键一般为字符串,也可以为数字或真值(不可变的对象可以作为键)。值可以是任意对象,键和值两者一一对应。
    这里写图片描述

    词典特殊的地方是,与表相比,他当中的元素是无序的,因此就不能通过下标来访问元素。词典是通过键来引用的。
    这里写图片描述

    构建一个新的空词典:

    dic = {}

    这里写图片描述

    在词典中添加一个新的元素的方法:
    这里写图片描述

  • 词典元素的循环调用
    这里写图片描述
    可以看到最后添加了一个”gcg”但是它却并不在最后一个,也就是在词典里是没有顺序的。

  • 词典的常用方法
    这里写图片描述

    删除其中的某一对:
    这里写图片描述
    (说明:del是Python中保留的关键字,用于删除对象。
    【 HIGH.__delitem__(键)】等价于【del HIGH[键]】)

    查询词典中的元素对总数:
    这里写图片描述

文本文件的输入输出

Python具有基本的文本文件读写功能。Python的标准库提供有更丰富的读写功能。文本文件的读写主要通过open()所构建的文件对象来实现。

  • 创建文件对象
    我们打开一个文件,并使用一个对象来表示该文件:

    对象名 = open(文件名,模式)

    最常用的模式有:

    • r 打开只读文件,该文件必须存在。
    • r+ 打开可读写的文件,该文件必须存在。
    • w 打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。
    • w+ 打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。
    • a 以附加的方式打开只写文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾,即文件原先的内容会被保留。
    • a+ 以附加方式打开可读写的文件。若文件不存在,则会建立该文件,如果文件存在,写入的数据会被加到文件尾后,即文件原先的内容会被保留。
    • 上述的形态字符串都可以再加一个b字符,如rb、w+b或ab+等组合,加入b 字符用来告诉函数库打开的文件为二进制文件,而非纯文字文件。
      这里写图片描述
  • 文件对象的方法

    • 读取
      假如文件里已经有这么两行数据:
      这里写图片描述

      这里写图片描述

      这里写图片描述

    • 写入
      因为CONTENT是读取的多行数据,其实Python将每一行当做一个元素存储在了一个列表中,因此我们可以将读出来的两行再写在文件之后。
      这里写图片描述
      结果:
      这里写图片描述

模块

  • 引入模块
    我们之前看到了函数和对象。从本质上来说,它们都是为了更好的组织已经有的程序,以方便重复利用。模块(module)也是为了同样的目的。在Python中,一个.py文件就构成一个模块。通过模块,你可以调用其它文件中的程序。
    我们先创建一个Move.py文件,将它放在和main.py文件同一个目录中,然后在main.py中导入Move.py文件。
    这里写图片描述

    然后在main.py导入:
    这里写图片描述
    引入模块之后,我们可以通过模块.对象的方式来调用模块中的对象,包括函数和全局变量。
    Python还有一些其他的有用的导入方式 :
    重命名模块名:
    这里写图片描述

    指定只导入模块中的特定对象,而且可以直接访问,就相当于main.py中的全局对象那样访问:
    这里写图片描述
    (因为只是导入了函数move,因此CONTENT是访问不了的。)

    从模块中导入所有对象,并且可以直接当成全局变量访问:
    这里写图片描述

  • 搜索路径
    上面的Move.py文件能被main.py文件找到是因为Move.py文件和main.py文件在相同的目录下,那么main.py还能在哪些路径下寻找导入的模块呢?

    • 程序所在的文件夹
    • 操作系统环境变量PYTHONPATH所包含的路径
    • 标准库的安装路径(windows系统是在python安装目录中的Lib文件夹中的site-packages目录中,Linux系统是在/usr/local/lib/python2.7/dist-packages中)
  • 模块包
    模块包顾名思义就是一些模块的集合,它是一个文件夹,我们将上面的Move.py文件放到一个叫module_bag的文件夹中,该文件夹和mian.py在同一个目录中:
    这里写图片描述

    这里写图片描述

    需要注意的是在文件夹module_bag中必须包含一个__init__.py文件,提醒Python该文件夹为一个模块包,__init__.py可以是一个空文件
    这里写图片描述

函数的参数传递

一般情况下,我们将参数传递给函数是都是根据函数中参数的位置,一一对应上去的,例如:
这里写图片描述
这时实参与abc一一对应。

  • 关键字传递
    为了方便查看,我们写一个函数:
    这里写图片描述
    上面是使用默认的位置对应的方法传递的。
    有时候觉得根据位置传递过于死板,因此想根据自己方便,按照参数名字来给每个参数传递参数:
    这里写图片描述

    关键字传递可以和位置传递混用。但位置参数要出现在关键字参数之前:
    这里写图片描述

  • 参数默认值
    在定义函数的时候,使用形如a=19的方式,可以给参数赋予默认值(default)。如果该参数最终没有被传递值,将使用该默认值:
    这里写图片描述

    看看下面这个例子:
    这里写图片描述
    说明:并不是输出2 4 10,因为如果某个参数赋了默认值,则其后面的参数也都必须有默认值,否则就会出错。

  • 包裹传递
    在定义函数时,我们有时候并不知道调用的时候会传递多少个参数。这时候,包裹(packing)位置参数,或者包裹关键字参数,来进行参数传递,会非常有用。
    下面看一个例子:
    这里写图片描述
    可以看到这个参数是一系列参数的集合,全部都传递给了parameters。两次调用,尽管参数个数不同,都基于同一个func定义。在func的参数表中,所有的参数被parameters收集,根据位置合并成一个元组(tuple),这就是包裹位置传递。
    其实在parameters前面不加*也可以实现该功能:
    这里写图片描述
    可以看到,前面*parameters是Python自动将那一些列参数转化为一个元组赋个parameters,而后面这种方法是我们程序员在传参时认为手动传递一个元组给parameter。

    通过包裹传递一个字典:
    这里写图片描述
    注意到实参中的a b c是不带引号的。

  • 解包裹
    * 和 **,也可以在调用的时候使用,即解包裹(unpacking),下面为例:
    这里写图片描述

    相应的,也存在对词典的解包裹,

    dict = {'a':1,'b':2,'c':3}func(**dict)
  • 混合
    在定义或者调用参数时,参数的几种传递方式可以混合。但在过程中要小心前后顺序。基本原则是:先位置,再关键字,再包裹位置,再包裹关键字,并且根据上面所说的原理细细分辨


参考资料:
https://www.shiyanlou.com/courses/214/labs/650/document


注:转载请注明原文出处:
作者:CUG_UESTC
出处:http://blog.csdn.net/qq_31192383/article/details/53729331

0 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 苏宁易购买的东西比专卖店贵怎么办 手机打字键盘上没有语音功能怎么办 网贷催收发语音侮辱人怎么办 康力无机房电梯到楼层不关门怎么办 档案工龄少算了工资领开了怎么办 别人骚扰我打电话报警人走了怎么办 因外借医保卡被香港保险拒保怎么办 医保和社保断了一个月怎么办 苹果8呼叫受限请勿越权使用怎么办 药物储存2~8度没冰箱怎么办 利仁分体电饼铛做饼熟的慢怎么办 闲鱼买的东西自提有问题怎么办 老板油烟机的表层的膜掉了怎么办 给老板打工老板跑路了怎么办 公司要业务员承担客户的欠款怎么办 从自己公司出去抢自己客户怎么办? 在苏宁买东西买贵了怎么办 苏宁购物小票不见了未提货怎么办 结痂的地方扣掉了颜色不一样怎么办 实体店买手机不给发票怎么办 小孩学英语字母怎么都记不住怎么办 聊客老是提示网络连接失败怎么办? 天猫购物漏发客服不理怎么办 京东二维码被骗怎么办联系客服号码 京东客服打电话来让自己退款怎么办 淘宝上买到的衣服是坏的怎么办 淘宝上买到的产品是坏的怎么办? 在淘宝买到东西是坏的怎么办 冰箱冷冻室门生锈变形关不严怎么办 诲信电冰箱电脑板坏了怎么办 冰箱里放了热水后就不制冷了怎么办 双温冰柜冷藏矿泉水不冰怎么办 美的电饭煲e一传感器也没坏怎么办 美的电饭煲不工作显示C3怎么办 美的电饭煲啪一声响不工作了怎么办 误给宝宝吃了坏的饭怎么办 鼠标没反应键盘指示灯不亮怎么办 新买变频冰箱风机声音大怎么办 三星手机玩王者荣耀一直闪退怎么办 刚申请的阿里大宝卡不想要了怎么办 国美刚买不到一个月电视坏了怎么办