python学习笔记之模块

模块Module

一个.py文件就是一个Module

一个目录下面有__init__.py的目录就是一个

mycompany
 ├─ web
 │  ├─ __init__.py
 │  ├─ utils.py
 │  └─ www.py
 ├─ __init__.py
 ├─ abc.py
 └─ utils.py
  • 其中__init__.py模块就是指包名的模块mycompany.py
  • mycompany.abc.py 模块为 mycompany.abc

作用域

__xxxx__特殊变量可以直接引用

_xxx__xxxprivate变量、函数

def _private_1(name):
    return 'Hello, %s' % name

def _private_2(name):
    return 'Hi, %s' % name

def greeting(name):
    if len(name) > 3:
        return _private_1(name)
    else:
        return _private_2(name)

private函数和变量 不应该被直接引用

可以通过public函数间接引用

外部不需要引用的函数全部定义成private,只有外部需要引用的函数才定义为public

**__name____main__**的用法

  1. 先定义testmodule.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

def addFunc(a,b):  
    return a+b  

print('testmodule计算结果:',addFunc(1,1))
  1. 再定义一个anothertestmodule.py 调用testmodule模块
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

import testmodule

print('调用anothermodule模块执行的结果是:',testmodule.addFunc(12,23))
  1. 此时运行anothermodule.py,得到
C:\work> python anothertestmodule.py
testmodule计算结果: 2    # testmodule模块被调用执行
调用test模块执行的结果是: 35
  1. 但是如果修改testmodule.py,加上__name__ == __main__
#!/usr/bin/env python3
# -*- coding: utf-8 -*-

' a test module '

def addFunc(a,b):  
    return a+b  

if __name__ == '__main__':  
    print('testmodule计算结果:',addFunc(1,1))

此时运行anothermodule.py,得到

C:\work> python anothertestmodule.py
调用test模块执行的结果是: 35

主要原因在于当调用一个module时,此时的__name__取值为模块的名字,所以if判断为假,不执行后续代码。此时__main__的函数入口为anothermodule而非testmodule

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值