zoukankan      html  css  js  c++  java
  • 【python学习-4】可复用函数与模块

    1、自定义函数

      自定义函数格式如下:

    def <函数名> (参数列表):
        <函数语句>
        return <返回值>
    #!/usr/bin/python
    # 定义函数,打印数字1~5
    def printNum5():
        # range函数,生成列表集合,有3个入参:start(可选,起始数),stop(终止数,生成的数不包含),step
        for i in range(1,5+1):
            print(i);
    
    printNum5();

      带参数的函数:

    #!/usr/bin/python
    # 定义函数,打印列表数据
    def printNum(x):
        for i in x:
            print(i);
    
    printNum(['ls','pwd',6,9,'cd']);

      有默认参数的函数:

    #!/usr/bin/python
    # 求x的y次方,默认x为2,y为5
    def cube(x=2,y=5):
        return x**y;
    
    print(cube());        # x、y都使用默认值
    print(cube(3));        # x 设置为 3,y 使用 默认值
    print(cube(3,2));    # x、y都不使用默认值
    print(cube(y=3));     # x 使用 默认值,y 设置为 3
    print(cube(y=2,x=8));    # 打乱传参次序

      传递任意个参数:

    #!/usr/bin/python
    # 传递任意个参数:如果参数名前加上一个星号“*”,则表示参数是一个可变长参数
    def addNum(*nums):
        result = 0;
        for i in nums:
            result += i;
        return result;
    
    print(addNum());        # 0
    print(addNum(1,3));        # 4
    print(addNum(8,8,6));    # 22

     2、变量作用域

    #!/usr/bin/python
    def fun(x):
        a = [1];
        a.append(x);
        print(a);
    
    a = [3,4,5];
    fun(2);            # a并没有变化
    print(a);
    #!/usr/bin/python
    def fun(x):
        global a;    # 设置a为全局变量
        a = [1];
        a.append(x);
        print(a);
    
    a = [3,4,5];    # 全局变量
    fun(2);            # a发生变化
    print(a);

    3、使用lambda 声明函数

      使用lambda可以声明一个匿名函数,lambda声明的是一个简单的函数。

      lambda 函数中不能使用 print() 函数

    #!/usr/bin/python
    # lambda函数 的好处就是简洁
    fun = lambda x : x*x+1    # 声明一个lambda函数
    
    print(fun(3));
    print(fun);

    4、可重用结构:python模块

      python中的模块,实际上就是包含函数或者类的python脚本。

      对于一个大型脚本,常常需要把功能细化到各个模块。

      导入模块写法:

    import 模块名
    import 模块名 as 新名字
    from 模块名 import 函数名

      使用 “ from 模块名 import 函数名 ” 写法与 “ import 模块名 ”, 调用函数的区别是,前者可直接使用函数名调用函数,后者需要 “模块名.函数名” 调用函数。

    #!/usr/bin/python
    import math
    print(math.sqrt(16));
    
    from math import sqrt
    print(sqrt(81));

      重新载入模块:

    #!/usr/bin/python
    import os
    import imp
    
    a = imp.reload(os)    # 重新载入模块
    print(a);

      编写一个模块:

      包括两个文件,一个是模块文件,一个是调用文件。

    # 文件 myPart.py
    def show():
        print("This is show");
    
    name = "myPart-name";
    #!/usr/bin/python
    
    # 文件 test.py
    import myPart
    
    myPart.show();
    
    print(myPart.name);

      python 中的模块在哪里查找:

      编写好的模块,如果不和调用文件在同一个目录,那么要怎么查找呢,或者要怎么放置自己的模块呢?

    #!/usr/bin/python
    import sys
    
    print(sys.path) # 查看模块检索路径有哪些

      如果新加了一个模块放在当前路径下的module目录,如何添加路径呢?

    #!/usr/bin/python
    import sys
    import os
    
    sys.path.append(os.getcwd()+'\module'); # 添加一个目录,其中os.getcwd() 方法用于返回当前工作目录
    
    print(sys.path);
    import myPart myPart.show();

      对于模块脚本,python会在运行后将其编译成 .pyc 字节码文件;对于非模块的脚本,python不会再运行文件之后将其编译成字节码形式。

      如何查看模块提供的函数名:

    #!/usr/bin/python
    import sys
    import os
    
    sys.path.append(os.getcwd()+'\module'); # os.getcwd() 方法用于返回当前工作目录
    
    import myPart
    
    print(dir(os))        # 使用dir 函数查看模块提供的函数名
    
    print(dir(myPart))

      对于上面的每次运行都要加sys.path,其实是很不方便的,但是有解决办法,就是使用包。包其实就是一个相对于当前目录的路径而已

    #!/usr/bin/python
    import module.myPart
    
    print(dir(module.myPart))
    
    module.myPart.show()

      简洁一点:

    #!/usr/bin/python
    import module.myPart as myPart
    
    print(dir(myPart))
    
    myPart.show()
  • 相关阅读:
    线段树总结
    c语言实现按层次(广度优先)非递归遍历二叉链树
    三、初学.NET—Gridview的分页
    五、初学.NET—Gridview自动编号和鼠标停留行加背景
    四、初学.NET—Gridview外部按钮选中、删除一行
    二、初学.NET—Gridview的排序
    一、初学.NET—数据库连接字符串
    .net web study
    C# 接口
    c#索引器
  • 原文地址:https://www.cnblogs.com/klbc/p/9476527.html
Copyright © 2011-2022 走看看