【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()
原文地址:https://www.cnblogs.com/klbc/p/9476527.html