zoukankan      html  css  js  c++  java
  • Python基础学习(第5天)

    第3课  模块

    1、模块(module)

    Python中一个.py文件就是一个模块,可以调用其它文件中的程序。

    例:first.py

    def laugh():
        print '哈哈哈哈哈'
    

     second.py

    1 import first
    2 for i in range(5):
    3     first.laugh()

    2、搜索路径

    Python会按照如下顺序搜索它需要的模块

    1)程序所在文件夹;2)Pythonpath中包括的路径;3)标准库安装路径

    3、模块包

    将功能类似的模块放在一个文件夹中,如this_dir,构成1个模块包,可以通过

    import this_dir.module  引入想要的模块

    4、Python中还有其它引入方式:

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

    from a import function  #引入模块a中的对象function,使用对象时不用再说明模块,直接用function即可

    from a import *  #引入模块a中所有的对象,使用对象时不用再说明模块,直接使用对象即可,不用再a.对象

    这样方便以后程序的书写

    模块包之间的模块相互引用,与上述相同

    from packageA import A或者

    import packageA.A

    第4课 函数的参数

     1、关键字传递:根据参数的名字传递参数,关键字传递不遵守位置对应关系,如:

    def test(a,b,c):
        return a+b+c 
    print test(a=1,b=2,c=3)
    

     关键字传递和值传递可以混用,但值传递参数要放在关键字传递的前面,且混合时是按照顺序的,如下面的1指定传给a:

    print test(1,b=1,c=2)
    

     这样写会报错

    def test(a,b,c):
        print a,b,c
        return a+b+c 
    print test(1,a=2,b=3)
    

    2、参数的默认值

    定义函数时,使用形如a=19的方式,可以给参数赋予默认值(default)。如果该参数没传值,将使用该默认值。

    def f(a,b,c=10):
        return a+b+c
    
    print(f(3,2))
    print(f(3,2,1))
    输出:
    15
    6

    在第一次调用函数f时, c没有被赋值,c将使用默认值10.

    第二次调用函数的时候,c被赋值为1,不再使用默认值。

    有默认值的函数参数只能放在参数的最后:如 def(x,y=1)有效,def(y=1,x)无效

    3、包裹(package)值传递

    创建函数时,有时候不确定有多少个参数,此时包裹值传递会有很大用处

    例1:包裹位置传递
    1
    def func(*name): 2 print name 3 func(1) 4 func(2,3,4,5)

    在func的参数列表中,所有的参数被name收集,根据位置整合为元组,为了提醒Python,name是包裹值传递的元组名,要在前面加*

    例2:包裹关键字传递
    def func1(**dict):
          print type(dict)
          print dict
    func1(a=1,b=2)
    func1(a=1,b=2,c=3)
    输出:
    <type 'dict'>
    {'a': 1, 'b': 2}
    <type 'dict'>
    {'a': 1, 'c': 3, 'b': 2}

    在func1中,所有的参数被dict收集,整合为一个字典,为了提醒Python,dict是包裹值传递的字典名,要在前面加**

    4、解包裹

    def func(a,b,c):
        print a,b,c
    
    args = (1,3,4)
    dict = {'a':1,'b':2,'c':3}
    func(*args)
    func(**dict)
    
    输出:
    1 3 4
    1 2 3

    传递元组时,让元组的每个参数对应一个位置参数,调用func时,参数前面加* ,是为了提醒Python,把args分割为三个数据,分别传给a,b,c

    传递字典,把字典的值作为关键字传给函数参数

    5、定义或者调用参数时,参数的几种传递方式可以混合,基本原则是,先位置(值传递),再关键字,再包裹位置,再包裹关键字

  • 相关阅读:
    [bzoj3261]最大异或和(可持久化trie)
    [luogu3384] 【模板】树链剖分
    [luogu3369]普通平衡树(替罪羊树模板)
    fhq-treap模板
    [luogu3391] 【模板】文艺平衡树(fhq-treap反转区间)
    [luogu3369]普通平衡树(fhq-treap模板)
    [luogu3369]普通平衡树(treap模板)
    [bzoj3223]文艺平衡树(splay区间反转模板)
    A Path Plan(2018黑龙江省赛)
    Abandoned Animal(BAPC2017 Preliminaries )
  • 原文地址:https://www.cnblogs.com/qiezizi/p/5761190.html
Copyright © 2011-2022 走看看