• python 学习笔记2(list/directory/文件对象/模块/参数传递)


    ### Python的强大很大一部分原因在于,它提供有很多已经写好的,可以现成用的对象。

    11. list

    list是一个类。每个列表都属于该类。

    >>>nl = [1,2,5,3,5]

    实际上,nl是类list的一个对象。

    list 的常用方法:

    nl.count(5)       # 计数,看总共有多少个5

    nl.index(3)       # 查询 nl 的第一个3的下标

    nl.append(6)            # 在 nl 的最后增添一个新元素6

    nl.sort()               # 对nl的元素排序

    nl.pop()          # 从nl中去除最后一个元素,并将该元素返回。

    nl.remove(2)            # 从nl中去除第一个2

    nl.insert(0,9)          # 在下标为0的位置插入9

    len(nl)              #用来返回list所包含的元素的总数

    运算符+,-,>,< 等都是定义在类内部的方法。

    +: __add__

    12. 词典 directory

    与列表list 相似,词典也可以储存多个元素。这种储存多个元素的对象称为容器(container)。

    词典的元素包含有两部分,键和值,{}。   如 dic = {'tom' : 11,  'sam' : 57, 'lily' : 100}

    词典的元素没有顺序,要通过键来引用。 如 dic[‘tom’]

    常用方法:

    >>>dic.keys()           # 返回dic所有的键

    >>>dic.values()         # 返回dic所有的值

    >>>dic.items()          # 返回dic所有的元素(键值对)

    >>>dic.clear()                # 清空dic,dict变为{}

    >>>del dic['tom']             # 删除 dic 的‘tom’元素

    len(dic)                     #用来返回键值对的个数

    13. 文本文件:

    open()  有3种模式, r, w, a 

    close() 

    Q1: r 时下面不能写入内容??

    A1: 是的,r后关闭,再w模式打开, 进行写

    Q2: close之后,w再write, 把之前的数据覆盖了?

    A2: w 模式下,f.write() 是覆盖写入,会清空之前的内容 

    Q3: 怎么追加数据?

    A3: a模式下,执行f.write()

    Q4: 怎么在写入时换行?

    A4: f.write(' '+"内容"+' ')

    常用方法:

    content = f.read(N)          # 读取N bytes的数据

    content = f.readline()       # 读取一行

    content = f.readlines()      # 读取所有行,储存在列表中,每个元素是一行。

    f.write(' '+"内容"+' ')

    14. 模块

    模块和对象方法一样,都是为了重复利用。

    一个.py 文件构成一个模块,可以调用其他文件中的程序。

    引入方式:  

    如a.py   b.py(来引入a模块)

    import a 

    import a as b                  # 引入模块a,并将模块a重命名为b

    from a import function1   # 从模块a中引入function1对象。调用a中对象时,直接使用function1,而不是a.function1。

    from a import *               # 从模块a中引入所有对象。调用a中对象时,直接使用对象,而不是a.对象。

    引入模块后,可以通过模块.对象的方式来调用引入模块中的某个对象。

    可调用的模块放在下面3个路径下:

    1. 程序所在的文件夹  (自定义)
    2. 标准库的安装路径    (内置)
    3. 操作系统环境变量PYTHONPATH所包含的路径

    模块包:

    相同功能的模块,可以放在同一个文件夹下;

    里面必须包含一个__init__.py文件,以便python识别这是一个模块包;

    导入模块包, import folder.yourModule1...

    自定义导入模块:http://www.cnblogs.com/ylan2009/p/4186768.html 

    Q: 模块包下的文件需要一个一个 导入? folder.module1?folder.module2?

    Q: 模块包导入后,子模块直接运行??

    15. 函数的参数传递

    def add_them(a,b,c):

        return a+b+c

    位置传递:

    add_them(1,2,3)   # a=1,b=2,c=3

    关键字传递:

    add_them(b=2,c=3,a=1)   #b=2,c=3,a=1

    add_them(2,c=3,b=1)       #a=2,c=3,b=1 ; 和位置传递混用,位置要出现在前面

    默认值:

    def add_them(a,b,c=10)

    add_them(1,2)    #a=1,b=2,c=10

    包裹位置 packing:

    def add_them(*name)

    add_them(1,2,3)

    在name前加*表示,这是一个元组;name收集输入的参数1,2,3,根据位置构成一个元组(tuple)(1,2,3)。

    再对该元组操作即可。

    包裹关键字:

    def add_them(*name)

    在name前加**表示,这是一个字典;name收集输入的参数如a=1,根据构成一个字典(dic) {a:1}。

    再对该字典操作即可。

    解包裹:unpacking

    *和**也可以在参数调用时使用。

    add_name(a,b,c)

    x=(1,2,3)

    add_name(*x)   #参数前面使用*告诉函数,要把x拆为3个变量。

    混合:

    顺序为先位置,后关键字,再包裹位置,包裹关键字

  • 相关阅读:
    grpc(五)
    go的代码库
    grpc(四)
    grpc(三)
    grpc(二)
    grpc(一)
    java的泛型
    如何学习编程语言
    老男孩K8S集群部署(二)
    VMware虚拟机状态正常,但SecureCRT连接时显示超时的解决方法
  • 原文地址:https://www.cnblogs.com/skyEva/p/5368667.html
Copyright © 2020-2023  润新知