V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhangchioulin
V2EX  ›  Python

Python 脚本应该把类全部写在一个文件中还是分模块写?

  •  
  •   zhangchioulin · 2017-11-03 13:48:19 +08:00 · 8011 次点击
    这是一个创建于 2576 天前的主题,其中的信息可能已经有所发展或是发生改变。
    事情是这样的:
    最新写一个脚本,随着功能的增加脚本已经 1500 行了。
    这么多行是因为我把每个功能都写在了同一个文件中(这些功能没有相互依赖,但却是完成脚本功能必不可少的一部分)。
    以前写别的语言(Objc)的时候习惯一个文件一个类,写 Python 的时候发现前辈写的脚本喜欢把类全部丢到一个文件中。
    所以现在比较晕,不知道要不要拆出来,不拆的话很多行感官上不太习惯,拆的话好像不太常看到这样写的?
    Python 小白看得代码不够多,Google 也没找到具体的答案,于是来问一下‘到底要不要拆’。
    我的观点是:拆出来,虽然麻烦些,但是这样看起来很整齐。
    32 条回复    2019-04-24 18:31:31 +08:00
    zyp0921
        1
    zyp0921  
       2017-11-03 13:52:30 +08:00
    拆啊 这部废话吗
    takanasi
        2
    takanasi  
       2017-11-03 13:52:34 +08:00 via Android
    最好分开
    zhangchioulin
        3
    zhangchioulin  
    OP
       2017-11-03 13:53:44 +08:00
    @takanasi #2
    @zyp0921 #1
    我也是这样想的。。。全写在一起看起来太。。。都对不起我的职称
    cljnnn
        4
    cljnnn  
       2017-11-03 13:53:54 +08:00 via Android
    这不是一道送分题吗?
    TimePPT
        5
    TimePPT  
       2017-11-03 13:55:28 +08:00 via iPhone
    易于维护拆开写,自用随便……
    zhangchioulin
        6
    zhangchioulin  
    OP
       2017-11-03 13:55:28 +08:00
    恩!拆开
    superhan
        7
    superhan  
       2017-11-03 14:54:23 +08:00 via Android
    写在一起的原因我想是 部署方便吧
    BBCCBB
        8
    BBCCBB  
       2017-11-03 14:59:21 +08:00
    推荐拆
    LokiSharp
        9
    LokiSharp  
       2017-11-03 15:04:27 +08:00 via iPhone
    不拆,没必要拆
    zhangchioulin
        10
    zhangchioulin  
    OP
       2017-11-03 15:04:33 +08:00
    @superhan 是的写在一起就是为了部署方便
    zhangchioulin
        11
    zhangchioulin  
    OP
       2017-11-03 15:05:16 +08:00
    @LokiSharp 不拆会造成以后甩锅被人骂吧。。。
    iiduce
        12
    iiduce  
       2017-11-03 15:08:07 +08:00
    以舒适为准。发现不适的时候,越早改变越好。
    clino
        13
    clino  
       2017-11-03 15:10:20 +08:00   ❤️ 1
    其实如果在一个文件里面拆成各种类和函数,也可以做得比较规整的

    如果需要可重用性高特别是给别人用,那做成模块就好就拆成不同的文件
    loveCoding
        14
    loveCoding  
       2017-11-03 15:13:28 +08:00
    量大了也不太好
    knva
        15
    knva  
       2017-11-03 15:13:35 +08:00
    才 1500 行,不拆,就不拆
    hsuan
        16
    hsuan  
       2017-11-03 15:15:25 +08:00 via Android
    如果是工具类脚本,我觉得没有拆的必要
    CSM
        17
    CSM  
       2017-11-03 15:20:43 +08:00 via Android
    要是有些类 /函数比较独立,拆出来下次重用方便些 :P
    goldenalex
        18
    goldenalex  
       2017-11-03 15:25:27 +08:00   ❤️ 1
    功能拆分出来,你的能力才能提升,说不准哪一天拆着拆着就成了一个工具包。。。
    iFlicker
        19
    iFlicker  
       2017-11-03 15:45:48 +08:00
    既然它还是一个脚本的话,建议不拆,
    可以选择重构,让其结构清晰,写上简洁易懂的注释,然后在开头写上 使用和维护说明
    LokiSharp
        20
    LokiSharp  
       2017-11-03 15:50:05 +08:00 via iPhone
    @zhangchioulin 维护性的话,有空拆包不如把文档和注释写写好 1500 行的代码不算多
    LokiSharp
        21
    LokiSharp  
       2017-11-03 16:05:23 +08:00 via iPhone   ❤️ 1
    Python 没必要一个文件一个 Class,Python 里文件是 Module,可以包含多个 Class
    billion
        22
    billion  
       2017-11-03 16:15:59 +08:00
    我认为你这个前辈,可能只是年龄大一些,其他地方都不如你。

    如果不是一次性用的小脚本,显然要拆开。
    lengyihan
        23
    lengyihan  
       2017-11-03 16:36:00 +08:00 via Android
    模块化,能方便管理复用啊,
    TheCure
        24
    TheCure  
       2017-11-03 16:44:10 +08:00
    好了, 看到楼上这么多都没有说到点子上
    用 go 写脚本 随你怎么拆, 编译好一个 binary 丢到服务器上 完美
    jamesliu96
        25
    jamesliu96  
       2017-11-03 16:46:27 +08:00
    模块化的优点在于方便功能开发和管理、维护、复用,如果没这方面的需求写一个文件里,优点是便携。
    Tink
        26
    Tink  
       2017-11-03 16:46:38 +08:00 via iPhone
    小项目的话可以把通用函数都写到一个文件里,特殊的拆开,大项目建议都拆了,不然容易挨骂
    hcnhcn012
        27
    hcnhcn012  
       2017-11-03 17:15:05 +08:00 via iPhone
    拆啊,拆了之后对代码重复利用和维护性方面都好
    kaneg
        28
    kaneg  
       2017-11-03 19:23:36 +08:00 via iPhone
    可以按照模块拆,而不是按照 Java 那样一个类一个文件,否则过犹不及。
    860670496
        29
    860670496  
       2017-11-03 19:42:22 +08:00
    拆,拆完了还能给说明文档和工作日志多水点字数呢
    lolizeppelin
        30
    lolizeppelin  
       2017-11-03 20:39:16 +08:00 via Android
    运维写的代码吧 233
    spotfg
        31
    spotfg  
       2019-04-04 09:40:01 +08:00   ❤️ 1
    不考虑重复使用部分就不拆,多个文件重复使用某一个类或者函数就拆那部分就好了
    autogen
        32
    autogen  
       2019-04-24 18:31:31 +08:00
    全部写在 main 里面也是可以的,我们那会儿玩 ACM 的时候就是这么干的
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2751 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 12:42 · PVG 20:42 · LAX 04:42 · JFK 07:42
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.