python3模块导入/命名困境

Tra*_*ggs 3 python python-module naming-conventions python-3.x

我刚刚完成了一个用于Linux的小型all-python3 gpio模块gpiolib.我玩弄了两种不同的方法来命名和导入客户端中的东西:

1

gpio.py

class GPIOInput(object):
    ...

class GPIOEvent(object):
    ...

class GPIOOutput(object):
    ...
Run Code Online (Sandbox Code Playgroud)

client.py

from gpio import GPIOEvent, GPIOOutput, GPIOInput

irq = GPIOEvent(1, 14)
Run Code Online (Sandbox Code Playgroud)

2

gpio.py

class Input(object):
    ...

class Event(object):
    ...

class Output(object):
    ...
Run Code Online (Sandbox Code Playgroud)

client.py

import gpio

irq = gpio.Event(1, 14)
Run Code Online (Sandbox Code Playgroud)

问题:是否有一个好的/具体的理由选择一个而不是另一个?或者只是偏好?

没有(对我来说)真正的快乐混合体.我喜欢在模块内部作用域时的短名称,但如果在模块外部使用,则确实需要模块名称来限定它们的含义.但是导入gpio,然后引用gpio.GPIOOutput似乎是多余的.

Rob*_*obᵩ 5

PEP8主张gpio.Input()等等

还有使用短唯一前缀将相关名称组合在一起的风格.这在Python中使用不多,...

在Python中,通常认为此样式是不必要的,因为属性和方法名称以对象为前缀,函数名称以模块名称为前缀.