Python模块与函数

Table of Contents

 

Table of Contents

1. Python程序的结构

2. 模块

2.1 模块的创建

2.2 模块的属性

2.3 模块的内置函数

1. appy()

2. filter()

3. reduce()

 4.map()

5 自定义包

3. 函数

3.1 格式

3.2 仿switch源码

3.3 lambda函数

3.4 generator函数


 

1. Python程序的结构

Python程序由包、模块、类、函数组成,模块是处理一类问题的集合,模块由函数和类组成,包是由一系列模块构成;

2. 模块

2.1 模块的创建

创建一个模块文件:myPython.py

count = 0
def func():
    #引用全局变量
    global count
    count = count + 1
    print("myModule.func() count=%d" % count)
class MyClass:
    def MyFunc(self):
        print("myModule.MyClass.myFunc()");

在同一个目录下新建一个文件:helloworld.py

#导入模块
import myModule

#使用模块中的func函数
myModule.func()
#使用模块中的类
myClass = myModule.MyClass()
myClass.MyFunc()

print("-----------------------")

#导入模块中的函数或类
from myModule import func
#直接使用模块的函数
func()

运行结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
myModule.func() count=1
myModule.MyClass.myFunc()
-----------------------
myModule.func() count=2
总结:
关于导入模块的几种方式
1. import xxxx_module
2. from xxxx_module import xxxx_func
3. from xxxx_module import *

2.2 模块的属性

__name__:用于判断当前模块是否是程序的入口,如果当前程序正在被使用,__name__的值为“__main__”;

__doc__:用于显示当前模块的信息,其为模块字符串,模块字符串写在Python文件的第一行,三个引号包含起来的字符串;

myModule.py

""""This is my myModule.py"""

if __name__ == '__main__':
    print("myModule作为主程序")
else:
    print("myModule被另外一个模块调用")

print(__doc__)

helloworld.py

""" This is my helloWorld.py"""
#导入模块
import myModule

print(__doc__)

输出结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
myModule被另外一个模块调用
"This is my myModule.py
 This is my helloWorld.py

2.3 模块的内置函数

1. appy()

Python3中移除了该函数;

2. filter()

filter()可以对某个序列做过滤处理,判断自定义函数的参数返回的结果是否为真来过滤,并一次性返回处理结果;

格式:

filter(function or Nome, iterable)->filter object

源码:

def func(x):
    if x > 0:
        return x;

#filter内置函数返回对象
print(filter(func, range(-1, 10, 1)))

#filter对象转换为函数
print(list(filter(func, range(-1, 10, 1))))

输出结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
<filter object at 0x000000000209D5B0>
[1, 2, 3, 4, 5, 6, 7, 8, 9]

3. reduce()

对序列中元素的连续操作可以通过循环来处理,例如对某个序列中的元素累加操作

源码:

输出结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
x=0, y=1
x=1, y=2
x=3, y=3
x=6, y=4
10
------------------------------------
x=10, y=0
x=10, y=1
x=11, y=2
x=13, y=3
x=16, y=4
20
------------------------------------
10
------------------------------------

 

 4.map()

map()对tuple元组进行“解包”操作,调用时设置map()的第一个参数为None,map()的功能非常强大,可以对多个序列的每个元素都执行相同的操作,并返回一个map对象;

源码:

def power(x):
    print("x=%d" % x)
    return x ** x

print(map(power, range(1, 3)))
print(list(map(power, range(1, 5))))

输出结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
<map object at 0x00000000021DD5B0>
x=1
x=2
x=3
x=4
[1, 4, 27, 256]

5 自定义包

与2.2中提到的__name__描述一样,这里不再赘述。

3. 函数

3.1 格式

def func(param1, param2,...):
    ....
    return xxx;

3.2 仿switch源码

def math(x, y, operator):
    results = {
        "+" : x + y,
        "-" : x - y,
        "*" : x * y,
        "/" : x / y,
        "%" : x % y,
    }
    return results.get(operator)

print(math(1, 3, "+"))
print(math(1, 3, "-"))
print(math(1, 3, "*"))
print(math(1, 3, "/"))
print(math(1, 3, "%"))

结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
4
-2
3
0.3333333333333333
1

3.3 lambda函数

格式:

func = lambda 变量1,变量2... : 表达式

代码:

def func():
    x = 1
    y = 2
    z = 3
    sum = lambda x,y,z : x + y + z
    print(sum)
    print(sum(x, y, z))

func()

结果:

C:\Python\Python38\python.exe "E:/python/python project/hello world.py"
<function func.<locals>.<lambda> at 0x000000000229D160>
6

3.4 generator函数

格式:

def func(x)
    ...
    yield 表达式

yield关键字与return关键字的返回值和执行原理都不相同。yield生成值并不会中止程序的执行,返回值后程序继续往后执行。return返回值后,程序将中止执行。

详见:https://blog.csdn.net/mieleizhi0522/article/details/82142856

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值