模块概念及使用

模块

'''
模块:一系列功能的集合体
​
定义模块:创建一个py文件就是一个模块,该py文件名就是模块名
​
使用模块:在要使用模块的文件中,通过  import 模块名  来导入模块
​
模块的四种存在方式:
1.使用python编写的.py文件(任何一个py文件都可以作为模块)
2.包:一堆py文件的集合体
3.使用C编写并链接到python解释器的内置模块
4.已被编译为共享库或DLL的C或C++扩展
'''
'''
import module
# 1.编译执行模块所对应的py文件,形成对应的pyc文件
# 2.产生该模块自己的全局名称空间
# 3.在使用该模块的全局名称空间中产生一个名字(导入的模块名)
'''
'''
# 注:
# 1.每一个文件都会产生自己的全局名称空间,且相互不影响
# 2.多次导入,只会编译执行模块一次,将其加载到内存,之后的都是直接对名字的引用
'''
'''
优点:
1.从文件级别组织代码,是同特性的功能能统一管理
2.可以使用系统或第三方模块(拿来主义),来提高开发效率
'''

起别名

# 在任何地方都可以导入模块
def fn():
    global m3
    import m3  # 就是普通的名字,只是该名字执行的是一个py文件(全局名称空间)
    print('>>>', m3.num)
fn()
print(m3.num)
​
​
# 通过as关键字可以给模块起别名: 模块名一旦起别名,原模块名就不能再使用
# 1.可以简化模块名字
import mmmmmmmmmmmmmmmmmm3 as my_m3
print(my_m3.num)
# 2.可以统一功能
cmd = input('数据库选择 1:mysql | 2:oracle:')
if cmd == '1':
    import mysql as db
    # mysql.excuse()
else:
    import oracle as db
    # oracle.excuse()
db.excuse()

from导入

from 模块名 import 名字1, 名字2, ..., 名字n
# 可以指名道姓导入模板中所有想导入的名字
​
​
from  模块名 import *
# 导入的是模块中的__all__这个列表
# 1、系统默认该列表不会收录_开头的名字
# 2、可以自定义__all__列表来规定外界通过*可以导入的名字
​
​
# 不建议直接导入 *,因为可读性差,且极容易出现变量重名
# 模块中有 名字a
from  模块名 import *
# 可以使用模块中的a
a = 20
# 模块中的a就被覆盖了,且在代码上还不能直接看出
​
​
# 起别名
from 模板名 import 名字1 as 别名1, ..., 名字n as 别名n

自执行与模块区别

# __name__:
# 1.在py文件作为模块被使用时,__name__为模块名
# 2.在py文件自执行时,__name__为字符串 '__main__'
​
print("共有逻辑")
if __name__ == '__main__':
    # 所有自执行的逻辑
    print("m6: 我是自执行的")
    a = 10  # 产生的是全局的名字
else:
    # 所有模块的逻辑
    print("m6: 我被导入执行的")
    print(a)  # 会报错:走else就不可能走if,所以a压根没产生

总结

'''
模块的概念:一系列功能的集合体
为什么要使用模块:使用模块后的优点:1文件角度考虑代码,2拿来主义,提供开发效率
py中实现模块的方式:4种,重点:py文件
​
​
定义模块:新建一个py文件:文件名就是模块名,尽量采用全英文,可以结合数字与下划线
使用模块:可以不用起别名,但一旦起别名,原名字就不能再使用了
    -- import 模块名 as 别名
    -- from 模块名 import 名字 as 别名
    
自执行文件与模块区分:__name__
# 1.在py文件作为模块被使用时,__name__为模块名
# 2.在py文件自执行时,__name__为字符串 '__main__'
'''

转载于:https://www.cnblogs.com/penghengshan/p/10670058.html

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Verilog模块是Verilog语言中的一个基本构建块,用于描述数字电路中的功能模块模块可以包含输入、输出、内部信号和逻辑代码。模块可以被实例化多次,在一个设计中使用多个实例,每个实例有自己的参数和端口连接。 模块的语法如下: ``` module module_name (input signal1, input signal2, output signal3, output signal4); // Verilog 代码 endmodule ``` 其中,`module_name` 是模块的名称,`input signal1` 和 `input signal2` 是输入端口,`output signal3` 和 `output signal4` 是输出端口。模块中的代码可以使用这些输入和输出端口,以及内部信号。 下面是一个简单的 Verilog 模块实例,它实现了一个 2:1 的多路选择器: ``` module mux2to1 (input a, input b, input sel, output y); assign y = sel ? b : a; endmodule ``` 这个模块有三个输入端口 `a`、`b` 和 `sel`,表示两个输入和一个选择信号。输出端口 `y` 表示选择后的输出。模块中的代码使用了三目运算符,根据选择信号来选择输出端口。 模块的实例化语法如下: ``` module_name instance_name (.port1(signal1), .port2(signal2), ...); ``` 其中,`module_name` 是模块的名称,`instance_name` 是实例的名称,`.port1(signal1)`、`.port2(signal2)` 是连接到模块端口的信号。 下面是一个实例化 `mux2to1` 模块的例子: ``` module top; reg a, b, sel; wire y; mux2to1 inst (.a(a), .b(b), .sel(sel), .y(y)); endmodule ``` 在这个例子中,我们声明了一个 `top` 模块,并实例化了 `mux2to1` 模块。我们声明了三个输入信号和一个输出信号,然后将它们连接到实例化的 `mux2to1` 模块的端口上。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值